cool-studio / globalpayments-magento2
展示与GlobalPayments支付网关的集成,已修改以适配PHP8.3
Requires
- php: ~8.1.0||~8.2.0||~8.3.0
- globalpayments/php-sdk: 11.0.9
- magento/framework: 103.0.*
- magento/module-checkout: 100.4.*
- magento/module-payment: 100.4.*
- magento/module-sales: 103.0.*
- magento/module-vault: 101.2.*
- psr/log: ^1 || ^2 || ^3
Requires (Dev)
- dev-main
- dev-dependabot/npm_and_yarn/multi-13dfe7d58d
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/async-3.2.6
- dev-dependabot/npm_and_yarn/multi-1a3af03914
- dev-dependabot/npm_and_yarn/multi-978db22d76
- dev-dependabot/npm_and_yarn/qs-6.5.3
- dev-dependabot/npm_and_yarn/moment-2.30.1
- dev-dependabot/npm_and_yarn/minimist-1.2.8
This package is auto-updated.
Last update: 2024-09-12 10:38:39 UTC
README
在与GlobalPayments的交谈中,他们没有支持PHP8.3的时间表,但声称它应该工作得很好,尽管由于Composer的依赖检查,您无法安装它。
摘要
这是一个扩展,用于添加与支付网关的集成。此支付方式可以限制只与特定的配送方式一起使用。
动机
这是演示Magento 2功能的示例集合之一。此示例的目的是演示如何创建自己的支付网关集成。
技术特性
模块配置
- 包详情 composer.json。
- 模块配置详情(序列)在 module.xml。
- 模块配置可通过“商店->配置” system.xml 获取
支付网关模块依赖于 Sales
、Payment
和 Checkout
Magento 模块。有关更多模块配置详细信息,请参阅 模块开发文档。
网关配置
在下一步中,我们可能在 config.xml 中指定网关域配置。
让我们看看配置属性
debug
默认启用调试模式,例如请求/响应日志active
默认启用支付model
Payment Method Facade
用于与Sales
和Checkout
模块集成merchant_gateway_key
加密商户凭证order_status
默认订单状态payment_action
默认支付操作title
默认支付方法标题currency
支持的货币can_authorize
是否支持授权can_capture
是否支持捕获can_void
是否支持取消can_use_checkout
结账可用性is_gateway
是否与网关集成sort_order
支付方法在结账/系统配置页面上的位置debugReplaceKeys
请求/响应字段,将在日志中屏蔽paymentInfoKeys
显示在支付信息块上的交易请求/响应字段privateInfoKeys
paymentInfoKeys 字段不应在客户支付信息块中显示
依赖注入配置
有关Magento 2中依赖注入配置的更多详细信息,请参阅 DI文档。
在支付网关的情况下,DI配置用于定义与相关基础设施相关的 Gateway Commands
池,并配置 Payment Method Facade
(由 Sales
和 Checkout
模块用于执行命令)
支付方法外观配置
<!-- Payment Method Facade configuration --> <virtualType name="GlobalPaymentsPaymentGatewayFacade" type="Magento\Payment\Model\Method\Adapter"> <arguments> <argument name="code" xsi:type="const">\GlobalPayments\PaymentGateway\Model\Ui\ConfigProvider::CODE</argument> <argument name="formBlockType" xsi:type="string">Magento\Payment\Block\Form</argument> <argument name="infoBlockType" xsi:type="string">GlobalPayments\PaymentGateway\Block\Info</argument> <argument name="valueHandlerPool" xsi:type="object">GlobalPaymentsPaymentGatewayValueHandlerPool</argument> <argument name="commandPool" xsi:type="object">GlobalPaymentsPaymentGatewayCommandPool</argument> </arguments> </virtualType>
code
支付方法代码formBlockType
块类名,负责在结账过程中渲染支付网关表单。由于 Opepage 结账使用 knockout.js 进行渲染,因此此渲染器仅在从管理员面板的结账过程中使用。infoBlockType
块类名,负责在订单块中渲染交易/支付信息详情。valueHandlerPool
用于查询配置的价值处理程序池。commandPool
支付网关命令池。
池
所有
Payment\Gateway
提供的池实现都使用懒加载组件,即配置为组件类型名称,而不是组件对象。
价值处理程序
ValueHandlerPool 应至少提供一个具有 default
键的价值处理程序。
!-- Value handlers infrastructure --> <virtualType name="GlobalPaymentsPaymentGatewayValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool"> <arguments> <argument name="handlers" xsi:type="array"> <item name="default" xsi:type="string">GlobalPaymentsPaymentGatewayConfigValueHandler</item> </argument> </arguments> </virtualType> <virtualType name="GlobalPaymentsPaymentGatewayConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler"> <arguments> <argument name="configInterface" xsi:type="object">GlobalPaymentsPaymentGatewayConfig</argument> </arguments> </virtualType>
命令
所有网关命令都应添加到 CommandPool 实例。
<!-- Commands infrastructure --> <virtualType name="GlobalPaymentsPaymentGatewayCommandPool" type="Magento\Payment\Gateway\Command\CommandPool"> <arguments> <argument name="commands" xsi:type="array"> <item name="authorize" xsi:type="string">GlobalPaymentsPaymentGatewayAuthorizeCommand</item> <item name="capture" xsi:type="string">GlobalPaymentsPaymentGatewayCaptureCommand</item> <item name="void" xsi:type="string">GlobalPaymentsPaymentGatewayVoidCommand</item> </argument> </arguments> </virtualType>
授权命令配置示例
<!-- Authorize command --> <virtualType name="GlobalPaymentsPaymentGatewayAuthorizeCommand" type="Magento\Payment\Gateway\Command\GatewayCommand"> <arguments> <argument name="requestBuilder" xsi:type="object">GlobalPaymentsPaymentGatewayAuthorizationRequest</argument> <argument name="handler" xsi:type="object">GlobalPaymentsPaymentGatewayResponseHandlerComposite</argument> <argument name="transferFactory" xsi:type="object">GlobalPayments\PaymentGateway\Gateway\Http\TransferFactory</argument> <argument name="client" xsi:type="object">GlobalPayments\PaymentGateway\Gateway\Http\Client\ClientMock</argument> </arguments> </virtualType> <!-- Authorization Request --> <virtualType name="GlobalPaymentsPaymentGatewayAuthorizationRequest" type="Magento\Payment\Gateway\Request\BuilderComposite"> <arguments> <argument name="builders" xsi:type="array"> <item name="transaction" xsi:type="string">GlobalPayments\PaymentGateway\Gateway\Request\AuthorizationRequest</item> <item name="mockData" xsi:type="string">GlobalPayments\PaymentGateway\Gateway\Request\MockDataRequest</item> </argument> </arguments> </virtualType> <type name="GlobalPayments\PaymentGateway\Gateway\Request\AuthorizationRequest"> <arguments> <argument name="config" xsi:type="object">GlobalPaymentsPaymentGatewayConfig</argument> </arguments> </type> <!-- Response handlers --> <virtualType name="GlobalPaymentsPaymentGatewayResponseHandlerComposite" type="Magento\Payment\Gateway\Response\HandlerChain"> <arguments> <argument name="handlers" xsi:type="array"> <item name="txnid" xsi:type="string">GlobalPayments\PaymentGateway\Gateway\Response\TxnIdHandler</item> <item name="fraud" xsi:type="string">GlobalPayments\PaymentGateway\Gateway\Response\FraudHandler</item> </argument> </arguments> </virtualType>
GlobalPaymentsPaymentGatewayAuthorizeCommand
- 由Payment\Gateway
提供的 GatewayCommand 实例,配置了请求构建器、响应处理程序和传输客户端。GlobalPaymentsPaymentGatewayAuthorizationRequest
- 用于授权的请求部分的组合。GlobalPaymentsPaymentGatewayResponseHandlerComposite
- 响应处理程序的组合/列表。
安装
此模块旨在使用 composer 安装。包括此组件并启用后,您可以通过访问后端:STORES -> 配置 -> 高级/高级 -> 禁用模块输出一次,在那里检查模块名称是否出现在列表中,以确认已正确安装。
测试
单元测试可以在 Test/Unit 目录中找到。
贡献者
Magento 核心团队