Согласно документам, я могу отправить такую форму (пример);
<form method="post" action="https://test.ipg-online.com/connect/gateway/processing">
<input type="hidden" name="txntype" value="sale">
<input type="hidden" name="timezone" value="CET"/>
<input type="hidden" name="txndatetime" value="2015:12:11-09:12:47"/>
<input type="hidden" name="hash" value="7a17dcc15df2819649ca80b7921"/>
<input type="hidden" name="storename" value="12345678"/>
<input type="hidden" name="mode" value="fullpay"/>
<input type="text" name="chargetotal" value="13.00"/>
<input type="hidden" name="currency" value="826"/>
<input type="hidden" name="responseSuccessURL" value="http://example.co.uk/thanks" />
<input type="hidden" name="responseFailURL" value="http://example.co.uk/failure" />
<input type="submit" value="Submit">
</form>
И это будет работать, используя что-то вроде почтальона (но я не предоставил правильный storename
Вот). Под «работой» я имею в виду, что вы входите в их шлюз и можете ввести данные своей карты, адрес доставки и т. Д.
Для того, чтобы получить правильный hash
а также txndatetime
Я могу использовать FirstData_Connect
Omnipay библиотека.
Я думал, что могу просто использовать public function getData
но на самом деле это требует подробностей о карточке пользователя, коде cvv, сроке действия и т. д. Я не хочу, чтобы на моем сайте был подобный интерфейс, я просто хочу, чтобы пользователь мог переходить по ссылке https://test.ipg-online.com/connect/gateway/processing — как в примере выше.
Итак, как мне структурировать сторону PHP, чтобы использовать библиотеку Omnipay? Пока что у меня есть;
$gateway = Omnipay::create('FirstData_Connect');
$gateway->setStoreId($storeId);
$gateway->setSharedSecret($sharedSecret);
$response = $gateway->purchase(array(
'returnUrl' => $returnUrl . '?' . http_build_query($arguments),
'cancelUrl' => $cancelUrl,
'amount' => $payment->getAmount(),
'transactionId' => $paymentId,
))->send();
$result = $response->getData();
return $result;
Но, как я уже сказал выше, я также обязан предоставить данные карточки пользователя. Итак, я получаю ошибку;
"message":"The card parameter is required",
"class":"Omnipay\\Common\\Exception\\InvalidRequestException
Итак, похоже, вам нужен шлюз, который работает не так, как текущие шлюзы FirstData_Connect и FirstData_Global. Оба из них прямая кредитная карта шлюзы того типа, где вы отправляете полный запрос на покупку, включая данные карты. По-видимому, вы говорите с шлюзом перенаправления (так же, как шлюзы PayPal).
Когда ты сказал В соответствии с документами, я могу отправить форму, как это — о каких документах ты говоришь? Я не очень знаком с FirstData и их различными вариантами.
Это звучит так, как будто вам нужно разработать или разработать новый шлюз для FirstData, который будет возвращать объект RedirectResponse, содержащий URL-адрес, по которому вы отправляете клиента, чтобы ввести данные своей карты и вернуться в ваше приложение, используя один из ответов. [Успех | Отказ] URL-адреса, которые вы передаете при первоначальном вызове. По сути, именно так работают PayPal и другие шлюзы перенаправления, поэтому вы можете захотеть начать искать там, а не в существующих шлюзах FirstData.
Других решений пока нет …