Пользовательская переменная кнопки PayPal Buy Now не работает

Я пытаюсь выполнить платеж в 3 классических шага:

1) Страница заказа с кнопкой PayNow

2) PayPal Оплата

3) Перенаправить на страницу "Платеж завершен"

То, чего я хочу добиться, - это чтобы идентификатор перешел с шага 1 на шаг 3. Я попытался вставить это поле в переменную "custom", например:

<input type="hidden" name="custom" value="--Server Code--">

После оплаты PayPal, PayPal перенаправляет меня на мою страницу:

http://www.mysite.cm/tx=blalba?aaaa

В этом URL нет настраиваемого поля. Если из API я связываюсь с PayPal, чтобы получить детали продажи, я не получаю ничего, связанного с моим настраиваемым полем.

Что я делаю не так? Я подумываю об использовании файлов cookie, но предпочитаю делать это стандартным способом.

  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
        <input type="hidden" name="cmd" value="_s-xclick">
        <input type="hidden" name="return" value="testestest">
        <input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal è il metodo rapido e sicuro per pagare e farsi pagare online.">
        <img alt="" border="0" src="https://www.paypalobjects.com/it_IT/i/scr/pixel.gif" width="1" height="1">
    </form>

2 ответа

Решение

Пользовательская переменная PayPal возвращается в IPN (уведомление о платеже в Instante), а не когда пользователь возвращается на ваш сайт после завершения платежа.

В вашем случае достаточно переменной сеанса.

РЕДАКТИРОВАТЬ:

Другим способом может быть добавление в поле "return" правильного значения url. пример:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="return" value="http://www.website.com?pram=value">
    <input type="hidden" name="cancel" value="http://www.website.com?param=value">
    <input type="hidden" name="business" value="yourpaypal@email.com">
    <input type="hidden" name="item_name" value="Test">
    <input type="hidden" name="amount" value="9.00">
    <input type="hidden" name="currency_code" value="EUR">

    <input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal è il metodo rapido e sicuro per pagare e farsi pagare online.">
   <img alt="" border="0" src="https://www.paypalobjects.com/it_IT/i/scr/pixel.gif" width="1" height="1">
</form>

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

Я должен был сделать это сам недавно, так что вот решение, которое работало для меня:

Во-первых, вам нужно добавить свой идентификатор в HTML-код кнопки "Оплатить сейчас", например, в переменную "custom", как показано в вопросе.

В моей собственной реализации у меня были некоторые проблемы с использованием "настраиваемой" переменной (подробности не запоминаются), поэтому вместо этого я передал свой идентификатор в качестве параметра URL в URL-адресе уведомления "IPN":

<input type="hidden" name="notify_url" value="https://example.com/notify/?id=xyz">

Вот полный HTML-код для моей кнопки:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="ABCDEFGHILJKLM">
    <table>
    <tr><td><input type="hidden" name="on0" value="Betrag">Betrag</td></tr><tr><td><select name="os0">
        <option value="Gebuehr">Gebuehr €3,50 EUR</option>
        <option value="Gebuehr und Spende">Gebuehr und Spende €5,00 EUR</option>
    </select> </td></tr>
    </table>
    <input type="hidden" name="currency_code" value="EUR">
    <input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
    <input type="hidden" name="notify_url" value="https://example.com/notify/?id=xyz">
</form>

После завершения процесса оплаты PayPal отправит сообщение IPN на мой URL-адрес для уведомлений, в котором содержится много информации о транзакции (дополнительную информацию см. По ссылке).

Мой идентификатор был передан через параметр URL, поэтому я могу получить его (в PHP) следующим образом:

$uid = "";
if (!empty($_GET['id'])) {
    $uid = $_GET['id'];
}

И, конечно же, вам необходимо проверить, действительно ли IPN-вызов поступает от PayPal.

Другие вопросы по тегам