Как вернуться с покупки PayPal и отобразить сообщение об успехе или неудаче? - PullRequest
0 голосов
/ 24 октября 2019

Кажется, я не могу найти правильный способ обработки URL-адреса возврата покупки PayPal и отобразить alert message.

Вот как я понимаю процесс:

  1. С моего сайта отправьте пользователя на PayPal, указав returnurl в качестве URL, соответствующего тому, что он купил.
  2. Paypal обрабатывает, а затем нажимает на мой IPN listener
  3. Пользователь видит сообщение в окне PayPal и кнопку Return to merchant (я в тестировании с песочницей)
  4. Пользователь нажимает Return to Merchantи вернулся на страницу, где они совершили покупку у

Хорошо, поэтому в моем IPN listener я делаю это:

if( ! session_id() ) {
    session_start();
}

then a bunch of checks, then

$_SESSION['alert-success'] = 'Thank you for your purchase!';

or

$_SESSION['alert-danger'] = 'There was a problem processing your order';

Теперь в этом IPN listener я могу установитьболее тонко настроенные сообщения, но сейчас пытаемся заставить что-то базовое работать.

Затем на странице продукта они возвращаются. У меня есть это

     <div class="flash-message">
         <?php
         foreach (['danger', 'warning', 'success', 'info'] as $msg) {
             $msgtype = 'alert-' . $msg;
             $issession=0;
             if(isset($_SESSION[$msgtype])) {
                 $p = "<p class=\"alert " . $msgtype. "\">" . $_SESSION[$msgtype] . "</p>";
                 echo $p;
                 $issession=1;
             }
         }
         if ($issession) {
             session_destroy();
         }
         ?>
     </div>

Теперь это ничего не делает,Поэтому кажется, что любая переменная сеанса, установленная в IPN listener, недоступна, когда пользователь возвращается к URL-адресу возврата.

У меня есть в форме PayPal это

<input type="hidden" name="rm" value="2">

, чтобыу меня есть данные $_POST, и я подтвердил, что когда пользователь нажимает Return to Merchant, данные поста появляются с 'payer_status' => string 'VERIFIED'

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

Все выше сказанное, чтоправильный способ сделать это?

Спасибо!

1 Ответ

0 голосов
/ 24 октября 2019

Причина использования сессий не работает, потому что PayPal - это та, которая отправляет данные в прослушиватель IPN. Сеанс не будет сохранен в браузере пользователя, поскольку он не отправляет данные в прослушиватель IPN. Не можете ли вы сохранить информацию, собранную из прослушивателя IPN, в базу данных? Это то, что я сделал для своих покупок PayPal. Когда платеж успешно прошел, я сохранил данные платежа, собранные от прослушивателя IPN, и сохранил их с идентификатором пользователя в базе данных. Когда они были перенаправлены на страницу успеха, я взял информацию из базы данных и отобразил ее.

...