#curl #redirect #magento2 #payment-gateway #payment
#curl #перенаправление #magento2 #платежный шлюз #оплата
Вопрос:
Я интегрирую платежный шлюз, используя пул команд gateway.
Это di.xml
<virtualType name="AuthorizeCommand" type="MagentoPaymentGatewayCommandGatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">AuthorizationRequest</argument>
<argument name="transferFactory" xsi:type="object">InternationalSampleGatewayHttpTransferFactory</argument>
<argument name="client" xsi:type="object">InternationalSampleGatewayHttpClientClientMock</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
?
Пожалуйста, посоветуйте, я был в круге в течение нескольких дней, меньше спал и перехватывал линию дат..
Спасибо
Ответ №1:
Мы должны выполнить действие CURL в ClientMock — placeRequest(). Поток пула команд платежного шлюза равен:
- Конструктор запросов (обрабатывает информацию о заказе), реализует MagentoPayment GatewayRequest BuilderInterface;
- ClientMock обрабатывает платежное действие
- ResponseValidator (расширяет AbstractValidator), решает, прошел платеж успешно или нет
- Обработчик ответа (реализует HandlerInterface), выполните последнее действие, вы можете указать дополнительную информацию для платежа здесь.
Ответ №2:
Чтобы использовать curl, используйте внедрение зависимостей, чтобы получить экземпляр клиента Magento Curl. Это легко сделать с помощью
1. импортируйте curl со следующей строкой в верхней части вашего MockClient.php файл:
use MagentoFrameworkHTTPClientCurl; // use curl to make http requests
- Затем вы можете добавить параметр в свой конструктор, чтобы он был введен:
public function __construct(
Logger $logger,
Curl $curl
) {
$this->logger = $logger;
// save the curl instance so you can use it
$this->curl = $curl;
}
- Теперь, когда у вас есть экземпляр Curl, вы можете отправлять запросы curl в функции placeRequest следующим образом:
public function placeRequest(TransferInterface $transferObject)
{
$this->curl->post($url, $curl_post_data);
return $this->curl->getBody();
}
Для получения более подробной информации о клиенте Magento Curl проверьте эту ссылку