cool-studio/globalpayments-magento2

展示与GlobalPayments支付网关的集成,已修改以适配PHP8.3

安装: 35

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 8

类型:magento2-module

dev-main 2024-09-12 10:38 UTC

README

在与GlobalPayments的交谈中,他们没有支持PHP8.3的时间表,但声称它应该工作得很好,尽管由于Composer的依赖检查,您无法安装它。

摘要

这是一个扩展,用于添加与支付网关的集成。此支付方式可以限制只与特定的配送方式一起使用。

动机

这是演示Magento 2功能的示例集合之一。此示例的目的是演示如何创建自己的支付网关集成。

技术特性

模块配置

  1. 包详情 composer.json
  2. 模块配置详情(序列)在 module.xml
  3. 模块配置可通过“商店->配置” system.xml 获取

支付网关模块依赖于 SalesPaymentCheckout Magento 模块。有关更多模块配置详细信息,请参阅 模块开发文档

网关配置

在下一步中,我们可能在 config.xml 中指定网关域配置。

让我们看看配置属性
  • debug 默认启用调试模式,例如请求/响应日志
  • active 默认启用支付
  • model Payment Method Facade 用于与 SalesCheckout 模块集成
  • 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(由 SalesCheckout 模块用于执行命令)

支付方法外观配置

<!-- 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 核心团队

许可证

开源许可证