Закрыть тему после совершения покупки Paypal - PullRequest
1 голос
/ 21 сентября 2011

У меня есть возможность на моем форуме phpBB добавить кнопку PayPal Buy Now, чтобы пользователи могли продавать и покупать предметы.Я хотел бы иметь возможность автоматически закрывать тему, когда пользователь совершает покупку через PayPal, чтобы избежать покупки одним и тем же предметом несколькими пользователями.

Можно ли получить данные сеанса пользователя из PayPal после совершения транзакции?Затем объедините данные сеанса в переменную типа:

$paypal = (isset($_POST['purchased'])) ? true : false;

Не уверен, нужно ли мне загружать Paypal SDK для этого или нет.

Любые предложения будут великолепны, спасибо.

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Когда я последний раз использовал его, Paypal Standard позволял вам указать обратный URL (куда отправлять пользователя) для сбоев и для успехов. Динамически генерируйте некоторые секретные хэши, чтобы облегчить, когда пользователь, наконец, перенаправлен.

Или вы можете использовать IPN.

1 голос
/ 22 сентября 2011

Не полагайтесь на обратный URL. Покупатели могут (и будут) закрывать свой браузер / вкладку после завершения платежа.
Вместо этого используйте мгновенные платежные уведомления PayPal, чтобы получать уведомления от сервера к серверу от PayPal, которые впоследствии можно будет проверить и использовать для обновления вашей базы данных с соответствующим флагом для закрытого потока phpBB.

IPN работает следующим образом:

  1. Вы создаете PayPal и получаете "notify_url". Значением этого параметра будет полный URL-адрес сценария на вашем сервере, который называется «сценарий IPN» или «обработчик IPN».

Для стандарта платежей через веб-сайт вы можете указать обработчик IPN следующим образом <input type="hidden" name="notify_url" value="http://blah.com/ipn.php

Для Express Checkout или платежей через веб-сайт Pro просто включите следующее в вызов API SetExpressCheckout / DoExpressCheckoutPayment или DoDirectPayment соответственно. NOTIFYURL=http://blah.com/ipn.php

  1. Покупатель совершает транзакцию через PayPal
  2. Как только покупатель завершит транзакцию, он / она может закрыть браузер или вернуться на ваш сайт
  3. Как только транзакция будет принята и обработана PayPal, PayPal отправит уведомление на http://blah.com/ipn.php
  4. Вам нужно взять все данные POST, отправленные этому сценарию, и вернуть их обратно к https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate
  5. Если отправленные вами данные соответствуют данным, отправленным вам PayPal, возвращается ответ «ПРОВЕРЕНО».
  6. Если ответ ПРОВЕРЕН, именно в этот момент вы будете искать соответствующую транзакцию / покупателя на своем конце и соответствующим образом обновлять статус потока phpBB.

Некоторые примеры кода и документации для PayPal IPN доступны по адресу https://www.paypal.com/ipn/
Кроме того, некоторые советы по созданию безопасного сценария IPN доступны по адресу https://www.x.com/developers/community/blogs/ppmtsrobertg/securing-your-instant-payment-notification-ipn-script

Примечание. Если вы хотите включить в транзакцию любые пользовательские данные, которые вы можете прочитать позже, используйте 'custom'.
<input type="hidden" name="custom" value="xxxxx">
Это также будет возвращено в данных POST IPN, отправленных PayPal.

1 голос
/ 21 сентября 2011

Можно ли получить данные сеанса пользователя из PayPal после совершения транзакции?

Вы действительно хотите доверять данным сеанса пользователя?Я уверен, что вы можете прочитать данные сеанса, вы не хотите делать это, было бы тривиальной задачей изменить это.Даже если вы можете, вы действительно не должны читать данные сеанса для другого сайта.

Не уверен, нужно ли мне загружать Paypal SDK для этого или нет.

Это был бы правильный способ сделать это.

...