首页 > 解决方案 > 命令池如何工作?以及我们如何重定向到支付网关?Magento 2

问题描述

我正在使用网关命令池集成支付网关。

这是di.xml

<virtualType name="AuthorizeCommand" type="Magento\Payment\Gateway\Command\GatewayCommand">
    <arguments>
        <argument name="requestBuilder" xsi:type="object">AuthorizationRequest</argument>
        <argument name="transferFactory" xsi:type="object">International\Sample\Gateway\Http\TransferFactory</argument>
        <argument name="client" xsi:type="object">International\Sample\Gateway\Http\Client\ClientMock</argument>
    </arguments>
</virtualType>

这是TransferFactory.php

public function create(array $request) {

    return $this->transferBuilder
                    ->setBody($request)
                    ->setMethod('Curl::POST')
                    ->setHeaders(['Content-Type' => 'application/json'])
                    ->setUri('https://api-gateway-sample-payments.com/transactions')
                    ->build();
}

这是ClientMock.php

public function placeRequest(TransferInterface $transferObject)
{
    //response
}

如何获得 CURL 响应placeRequest?在这个 CURL 操作之后,我们如何重定向到支付网关页面?我们是否需要在 下编写单独的 CURL 操作placeRequest

请指教,我已经在一个圈子里呆了好几天,睡眠少了,而且赶上了日期线..

谢谢

标签: curlredirectmagento2payment-gatewaypayment

解决方案


我们应该在 ClientMock - placeRequest() 中执行 CURL 动作。支付网关命令池的流程为:

  1. Request Builder(处理订单信息),实现 Magento\Payment\Gateway\Request\BuilderInterface;
  2. ClientMock 处理支付动作
  3. ResponseValidator(扩展AbstractValidator),决定支付是否成功
  4. Response Handler (implements HandlerInterface),执行最终动作,您可以在此处设置支付的附加信息。

推荐阅读