curl - 命令池如何工作?以及我们如何重定向到支付网关?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
?
请指教,我已经在一个圈子里呆了好几天,睡眠少了,而且赶上了日期线..
谢谢
解决方案
我们应该在 ClientMock - placeRequest() 中执行 CURL 动作。支付网关命令池的流程为:
- Request Builder(处理订单信息),实现 Magento\Payment\Gateway\Request\BuilderInterface;
- ClientMock 处理支付动作
- ResponseValidator(扩展AbstractValidator),决定支付是否成功
- Response Handler (implements HandlerInterface),执行最终动作,您可以在此处设置支付的附加信息。
推荐阅读
- apache-spark - 将数据帧结果插入配置单元表时出现火花异常
- python - 我在 python 中是否缺少模块?
- azure - Azure 负载均衡器(L4)是否支持 SNI?
- c++ - 重写函数是否会实例化基本函数?(得到错误)
- javascript - Angular Test Jest - TypeError:无法读取未定义的属性“queryParams”
- qt - 是否可以将 QThreadPool 子类化以进行分布式处理?
- three.js - 是否有 DirectionalLightShadow 助手或查看阴影边界的方法?
- python - 为什么文本没有使用 python 添加到 .txt 文件中?
- c# - 创建 EWS FindItemsResults 实例
- java - 有没有办法在 SAP Hana jdbc 驱动程序中获取转换列的名称?