Пользовательская переменная кнопки 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.