Могу ли я отправить переменную в PayPal и отправить мне ее обратно после завершения платежа? - PullRequest
43 голосов
/ 17 мая 2010

Я использую API экспресс-оплаты для преобразования учетных записей людей на моем сайте в премиум-аккаунты после оплаты. Единственная проблема заключается в том, что он не отправляет пользователя обратно на сайт, пока он не нажмет кнопку, чтобы вернуться, и он обновляет их разрешение, когда это происходит. Около 40% пользователей, кажется, не делают этого .... поэтому их учетные записи никогда не зачисляются после оплаты.

Несмотря на то, что PayPal делает мгновенный постбэк после успешного платежа, я так и не смог заставить его действительно обновить учетную запись пользователя сразу, так как я не могу заставить его отослать обратно какую-то информацию, которая идентифицирует пользователя, завершил платеж. Я мог сделать это только тогда, когда вас отправили обратно на сайт, который отправляет идентификатор транзакции, который я зарегистрировал с помощью постбека. Он ищет его и дает разрешение, если он был найден в БД.

Есть ли способ отправить какую-то переменную в PayPal, чтобы она потом отправляла мне обратно? Что-то вроде & user_id = 123, что очень удобно для обновления прав пользователя.

Ответы [ 7 ]

34 голосов
/ 17 июня 2011

Iten_number скрытая переменная не работает в моем приложении. Но я обнаружил, что скрытое поле custom отлично работает. Просто добавьте это поле в форму, сгенерированную PayPal: <input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>. После этого вы можете прочитать это значение, чтобы определить, например, какой продукт был приобретен. (Код Java): String custom = request.getParameter("custom");

27 голосов
/ 17 мая 2010

Да, если вы отправите item_number, уведомление о IPN будет включать его при отправке вам сообщений. Я записываю уникальный идентификатор в базу данных, когда пользователь запускает процесс оплаты, и включаю его при отправке их в PayPal. Когда приходит IPN, этот уникальный идентификатор совпадает с записью в базе данных, предоставляя мне всю необходимую информацию.

Редактировать Ваш комментарий:

Я предполагаю, что где-то на приведенном выше сайте есть пример кода, но в основном в моем случае я использую форму, которую я POST https://www.paypal.com/cgi-bin/webscr. Внутри этой формы есть различные скрытые поля, задокументированные в материале IPN ( cmd для выполнения какой команды, business для указания идентификатора вашей компании, item_name для подробного описания в интерфейсе PayPal, item_number для номера товара, о котором я упоминал выше, и т. Д., И т. Д.). Когда IPN отправляет сообщение обратно на ваш IPN-адрес, оно включает в себя различные поля (например, payment_status - вид важного! & Mdash и item_number, которые вы указали при публикации на них).

18 голосов
/ 31 августа 2011

Просто чтобы добавить к этому старому вопросу ...

Существуют параметры параметров, которые обычно используются для отправки пользовательских данных через PayPal.

Эти теги параметров: on0 , on1 или on2 для имен пользовательских полей и os0 , os1 и os2 для значений настраиваемого поля.

Я бы отправил on0 со значением "UserID" и os0 фактическим ID.

Эти значения будут представлены в IPN следующим образом:

os0 представляется как option_selection1

os1 представляется как option_selection2

os2 представляется как option_selection3

on0 представляется как option_name1

on1 представляется как option_name2

on2 представляется как option_name3

Вот информация о параметрах HTML PayPal

7 голосов
/ 25 июля 2015

В соответствии с HTML-переменными для PayPal Payments Standard вы можете отправить все переменные "Pass-through":

item_number Сквозная переменная для отслеживания продукта или услуги купленный или сделанный вклад. Указанное вами значение передается вернуться к вам после завершения оплаты. Эта переменная требуется, если вы хотите, чтобы PayPal отслеживал инвентарь или отслеживал прибыль и убыток по товару кнопка продается.

custom Сквозная переменная для собственных целей отслеживания, которую покупатели не видят. По умолчанию - вам не передаются переменные.

и

счет Сквозная переменная, которую вы можете использовать для определения номера счета для этой покупки. По умолчанию - переменная не передается обратно вы.

Все эти сквозные переменные отправляются обратно IPN в информации ответа об оплате.

Вам просто нужно отрендерить свой HTML-шаблон на стороне сервера и записать поля обратно в HTML-код, например

<input type="hidden" name="item_number" value="{{ productID }}">
<input type="hidden" name="invoice_id" value="{{ invoiceID }}">
<input type="hidden" name="custom" value="{{ jsonInfo }}">

Технически поле "custom" может быть строкой в ​​кодировке JSON, если вы хотите обрабатывать больше данных, таких как

myItemObject = {
   "customerEmail" : "john@doe.com
   "customerID: "AAFF324"
}
jsonInfo = json.dumps( myItemObject )
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID)
6 голосов
/ 02 сентября 2016

Я наконец-то получил этот ответ, хочу поделиться со всеми вами взглядом:

в вашей HTML-форме введите этот код (это песочница Paypal):

form action="https://www.sandbox.paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post"

На вашем PHP после перенаправления Paypal на вашу страницу успешно: используйте переменную cm GET:

$example = $_GET["cm"];
4 голосов
/ 10 ноября 2015

Надеюсь этот URL решит вашу проблему. Как решил и мой. Добавьте пользовательскую переменную в форму, а затем получите ее на странице успешной оплаты. Пример : <input type='hidden' name='custom' value='<?php echo $email; ?>'/>

, а затем получить его как:

 $_POST['custom']
0 голосов
/ 08 июня 2018
<input type="hidden" name="on0" value="Ajay Gadhavana">
<input type="hidden" name="on1" value="my_phone_number">
<input type="hidden" name="on2" value="my_third_extra_field">

Ответ от PayPal будет

[option_name1] => Ajay Gadhavana [option_name1] => my_phone_number [option_name1] => my_third_extra_field

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...