2016-12-18 7 views
2

Мне дана задача перепроектировать сайт, где пользователь заканчивает покупку билета для события.простой платеж 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

+0

Для того, чтобы убедиться, что мы на правильном шарике здесь, вы создаете 'merchantSessionKey' каждый раз, когда представлена ​​форма CC? 'MerchantSessionKey' будет длиться только 400 секунд после создания. Затем вы захватываете 'cardIdentifier', который отправляется с вашей формой CC? «CardIdentifier» будет одноразовым маркером, который представляет карту. – Jason

+0

Веб-сайт Sage Pay предлагает более структурированный подход при реализации Sage Pay PI. Если вы еще этого не сделали и все еще испытываете трудности, посмотрите на http://integrations.sagepay.co.uk/content/getting-started-overview –

ответ

0

У меня нет никакого кода для показа, поскольку все, что я пробовал, отображает пустую страницу, поэтому я делаю что-то неправильно.

...

Я довольно новый для PHP, как моя карьера удерживала меня в ASP на протяжении многих лет.

Первое, что я хотел бы сделать, это проверить работоспособность. Когда PHP возвращает пустую страницу, это часто происходит из-за того, что из вас сохраняются ошибки (например, PHP работает в конфигурации производства). Таким образом, первая вещь, которую вы должны сделать это:

Создайте следующий код в файл, что веб-сервер, очевидно, собирается открыть (я хотел бы использовать index.php)

<?php 
echo('This is some PHP'); 

Вы должны увидеть слова «Это какой-то PHP» на экране.

Теперь попробуйте это:

<?php 
echo($This_is_some_PHP); 

До тех пор, пока вы не имеете переменную $ This_is_some_PHP (скажите, пожалуйста, вы не - и если вы делаете, пожалуйста прокомментируйте его сейчас) - то вы должны увидеть ошибку на экране.

Если вы видите пустой экран, ваш PHP работает в конфигурации производства, переключите его в конфигурацию разработчика, включив ошибки печати на экран и сообщения об ошибках. Таким образом, когда все идет не так, вы, по крайней мере, начинаете получать возможность отлаживать их. Затем вы можете начать отлаживать проблему.