Мне дана задача перепроектировать сайт, где пользователь заканчивает покупку билета для события.простой платеж sagepay php
Старый сайт использовал кнопку покупки PayPal, но клиент хочет, чтобы сайт сделал то же самое, но вместо этого хочет использовать SagePay.
Сайт находится на этапе, где переменные $ ticketNumber и $ ticketAmount отображаются на странице подтверждения, и именно здесь в предыдущем проекте была кнопка PayPal, поэтому мне нужно как-то интегрировать SagePay здесь.
Я был повсюду на сайте SagePay и документации, я загрузил Integration_and_Protocol_Guidelines pdf и комплект интеграции php, но я не могу сделать из головы или хвостов ничего, поскольку их около ста страниц, включает , библиотеки и шаблоны и т. д.
Меня не беспокоит, если я использую метод ввода или собственной формы, поскольку сайт защищен.
У меня есть тестовое имя, ключ интеграции и пароль интеграции от sagepay.
Мне рассказали техническую поддержку sagepay, что шалфей pi - это путь, но три простых шага, которые он объясняет, все еще запутывают меня.
У меня нет кода для показа, поскольку все, что я пробовал, отображает пустую страницу, поэтому я делаю что-то неправильно.
Что я сделал (с помощью раскрывающегося в метод), был я добавил эти JS включает в странице Confirm:
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay.js"></script>
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay-dropin.js">
Затем я добавил этот скрипт под текстом подтверждения, где отображается номер билета и количество:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/merchant-session-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{ "vendorName": "<myvendorname>" }',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic <Base64 Encoded Integration Key:Integration Password>",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
?>
Тогда при том, что я добавил этот код:
<form>
<h2>Payment Details</h2>
<div id="sp-container"></div>
<div id="submit-container">
<input type="submit">
</div>
</form>
<script>
sagepayCheckout({ merchantSessionKey: 'F42164DA-4A10-4060-AD04-F6101821EFC3' }).form();
</script>
Он отобразил форму ввода карты, но после этого я не нажал кнопку отправки.
Я добавил этот код после того, как форма мысли, что он будет использовать его для отправки платежа, но страница просто гаснет:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{' .
'"transactionType": "Payment",' .
'"paymentMethod": {' .
' "card": {' .
' "merchantSessionKey": "' . $merchantSessionKey . '",' .
' "cardIdentifier": "' . $cardIdentifier . '"' .
' }' .
'},' .
'"vendorTxCode": "$ticketNo",' .
'"amount": 100,' .
'"currency": "GBP",' .
'"description": "Online Payment",' .
'"apply3DSecure": "UseMSPSetting",' .
'"customerFirstName": "Sam",' .
'"customerLastName": "Jones",' .
'"billingAddress": {' .
' "address1": "407 St. John Street",' .
' "city": "London",' .
' "postalCode": "EC1V 4AB",' .
' "country": "GB"' .
'},' .
'"entryMethod": "Ecommerce"' .
'}',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic <Base64 Encoded Integration Key:Integration Password>",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
?>
Я также должен получить от пользователя ввести их платежный адрес и т. д., поскольку это, по-видимому, требуется sagepay, поэтому я должен подумать о том, чтобы схватить это от них где-то.
Я не знаю, где я ошибаюсь, поскольку инструкции бросают мне много кода, не сообщая мне, что с ним делать. Я где-то читал в своей документации, что мне не нужно много опыта работы с разработчиками, я думал, что дам ему шанс. Я не полный новичок, но я довольно новичок в php, так как моя карьера удерживала меня в ASP много лет.
Любая помощь была бы принята с благодарностью.
Заранее спасибо. Nico
Для того, чтобы убедиться, что мы на правильном шарике здесь, вы создаете 'merchantSessionKey' каждый раз, когда представлена форма CC? 'MerchantSessionKey' будет длиться только 400 секунд после создания. Затем вы захватываете 'cardIdentifier', который отправляется с вашей формой CC? «CardIdentifier» будет одноразовым маркером, который представляет карту. – Jason
Веб-сайт Sage Pay предлагает более структурированный подход при реализации Sage Pay PI. Если вы еще этого не сделали и все еще испытываете трудности, посмотрите на http://integrations.sagepay.co.uk/content/getting-started-overview –