Кнопка PayPal, отправляющая пользовательскую переменную через IPN

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

У меня есть сайт с членскими подписками. Клиент регистрируется со своей электронной почтой и паролем на моем сайте. Затем они идут в PayPal, чтобы оплатить подписку.

Моя проблема заключается в том, как мне передать ключ — их адрес электронной почты — через всю транзакцию, чтобы я знал, кому предназначен платеж?

Это потому, что вполне вероятно, что иногда они регистрируются с одним адресом электронной почты, а платят с помощью другого. И как это все сделать с (безопасной) зашифрованной кнопкой.

Я подумал, что могу сделать зашифрованную кнопку на странице PayPal «Создать кнопку оплаты PayPal».

На шаге 3 добавьте (зачеркните реальный URL) дополнительные переменные:

notify_url=http://xxxxxxxxxx.com/xxxxx.php
test_ipn=1

Получить код:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

и вставьте данный код на мою php-страницу, но добавьте скрытое поле с именем «custom» и укажите адрес электронной почты и измените действие формы, чтобы перейти в песочницу. .

Что-то вроде этого:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

<input type="hidden" name="custom" value="<?=$signUpEmail ?>">

<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Эту пользовательскую переменную я могу позже подобрать на своей странице ipn, чтобы знать, для кого предназначено членство.

Я правильно думаю? Или делать кнопку с "рукописным" кодом? Или есть лучший способ?


person Paul    schedule 28.06.2012    source источник


Ответы (2)


В форме Paypal есть поле, которое вы можете использовать, чтобы указать все, что хотите. Имя поля "custom". Таким образом, вы можете написать что-то вроде:

<input name="custom" value="blablabla" type="hidden">

Я предлагаю закодировать значение пользовательского значения. Например, какой-то base64_encode может быть полезен, чтобы отпугнуть любопытных людей. Тем не менее, в руководстве также есть хорошее объяснение того, что вы можете сделать с Paypal. Эта ссылка и эта one — это выдержка.

Более того, как предлагается в комментариях, невозможно использовать переменную сеанса, связанную с вашим интерфейсом, в отложенной связи между вашим сайтом и PayPal.

person gdm    schedule 05.11.2012
comment
Есть ли способ добавить второе пользовательское поле? - person Joao Alves Marrucho; 07.12.2018
comment
Вы можете кодировать все, что хотите, в одном поле, а затем декодировать его всякий раз, когда вы его получаете. Например, вы можете кодировать строку json или параметры, закодированные в URL, внутри поля. - person gdm; 13.01.2019

Описанный выше способ работает, хотя у меня были некоторые проблемы с тем, что песочница PayPal не принимала "обычный PayPal" hosted_button_id — это было устранено путем повторного создания hosted_button_id в песочнице. .

<input type="hidden" name="hosted_button_id" value="RECREATENEWINPAYPALSANDBOX">
person Paul    schedule 01.07.2012