在 `%Vendor_Module%/etc` 目录中的 `config.xml` 文件中为支付方式配置对应的选项,下表包含了支付方式可以配置的默认选项。
你的支付方式可能有更多的依赖项
| 选项 | 描述 | 值类型 |
| :--- | :--- | :--- |
| `active` | 默认是否开启 | Boolean |
| `debug` | 默认是否开启 debug 模式, 比如为 request/response 打 log | Boolean |
| `debugReplaceKeys` | request/response 中那些字段不会在 log 中展示 | comma separated list |
| `can_authorize` | payment method 是否支持 authorization | Boolean |
| `can_capture` | whether payment method supports the capture operation | Boolean |
| `can_void` | whether payment method supports the void operation | Boolean |
| `can_use_checkout` | 支付方式是否在网店前台的 storefront checkout 可用 | Boolean |
| `can_use_internal` | whether payment method is available in Admin order creation | Boolean |
| `currency` | 支持的货币 | |
| `is_gateway` | 是否是包含网关的集成 | Boolean |
| `merchant_gateway_key` | 加密后的商家凭证 | string |
| `model` | [payment method facade](https://devdocs.magento.com/guides/v2.4/payments-integrations/base-integration/facade-configuration.html) used for integration with Sales and Checkout modules | string |
| `order_status` | 默认的 [order status](https://glossary.magento.com/order-status) | |
| `paymentInfoKeys` | transaction request/response fields displayed on payment information block (can be any fields from payment additional information) | list of comma separated values |
| `privateInfoKeys` | `privateInfoKeys` fields which should not be displayed in customer payment information block (can be any fields from payment additional information) | |
| `payment_action` | default action of payment for the payment method (authorize, sale) | `authorize`,`authorize_capture` |
| `sort_order` | payment method order position on checkout/system configuration pages | integer |
| `title` | default title for a payment method | string |
除了默认选项以外,一个支付方式配置可以包含任何其他自定义配置。
## 例子
以下是如何配置的例子(Braintree 模块的 `config.xml` )
```php
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<payment>
<braintree>
<model>BraintreeFacade</model>
<title>Credit Card (Braintree)</title>
<payment_action>authorize</payment_action>
<active>0</active>
<is_gateway>1</is_gateway>
<can_use_checkout>1</can_use_checkout>
<can_authorize>1</can_authorize>
<can_capture>1</can_capture>
<can_capture_partial>1</can_capture_partial>
<can_authorize_vault>1</can_authorize_vault>
<can_capture_vault>1</can_capture_vault>
<can_use_internal>1</can_use_internal>
<can_refund_partial_per_invoice>1</can_refund_partial_per_invoice>
<can_refund>1</can_refund>
<can_void>1</can_void>
<can_cancel>1</can_cancel>
<can_edit>1</can_edit>
<can_review_payment>1</can_review_payment>
<can_deny_payment>1</can_deny_payment>
<cctypes>AE,VI,MC,DI,JCB,CUP,DN,MI</cctypes>
<useccv>1</useccv>
<cctypes_braintree_mapper><![CDATA[{"american-express":"AE","discover":"DI","jcb":"JCB","mastercard":"MC","master-card":"MC","visa":"VI","maestro":"MI","diners-club":"DN","unionpay":"CUP"}]]></cctypes_braintree_mapper>
<order_status>processing</order_status>
<environment>sandbox</environment>
<allowspecific>0</allowspecific>
<sdk_url><![CDATA[https://js.braintreegateway.com/js/braintree-2.32.0.min.js]]></sdk_url>
<public_key backend_model="Magento\Config\Model\Config\Backend\Encrypted" />
<private_key backend_model="Magento\Config\Model\Config\Backend\Encrypted" />
<masked_fields>cvv,number</masked_fields>
<privateInfoKeys>avsPostalCodeResponseCode,avsStreetAddressResponseCode,cvvResponseCode,processorAuthorizationCode,processorResponseCode,processorResponseText,liabilityShifted,liabilityShiftPossible,riskDataId,riskDataDecision</privateInfoKeys>
<paymentInfoKeys>cc_type,cc_number,avsPostalCodeResponseCode,avsStreetAddressResponseCode,cvvResponseCode,processorAuthorizationCode,processorResponseCode,processorResponseText,liabilityShifted,liabilityShiftPossible,riskDataId,riskDataDecision</paymentInfoKeys>
<avs_ems_adapter>Magento\Braintree\Model\AvsEmsCodeMapper</avs_ems_adapter>
<cvv_ems_adapter>Magento\Braintree\Model\CvvEmsCodeMapper</cvv_ems_adapter>
<group>braintree_group</group>
</braintree>
</payment>
</default>
</config>
```
- 支付流程梳理
- Magento 支付网关
- payment-gateway-structure
- 网关命令 (Gateway Command)
- 网关命令池(Gateway command pool)
- 请求构造器
- 网关客户端(Gateway client)
- Response Validator
- Response Handler
- Error Code Mapping
- 集成新的支付方式
- 支付方式模块配置
- 支付方式配置
- payment method facade
- Admin checkout 支付信息渲染
- 新增 payment action
- 将支付信息从前端传递到后端
- 根据 area 来配置 payment method
- 支付中的专有名字解释