Кажется, я не могу найти правильный способ обработки URL-адреса возврата покупки PayPal и отобразить alert message
.
Вот как я понимаю процесс:
- С моего сайта отправьте пользователя на PayPal, указав
returnurl
в качестве URL, соответствующего тому, что он купил. - Paypal обрабатывает, а затем нажимает на мой
IPN listener
- Пользователь видит сообщение в окне PayPal и кнопку
Return to merchant
(я в тестировании с песочницей) - Пользователь нажимает
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
, которую я хочу отображать в области своих флеш-сообщений, и я думал, что использование переменных сеанса достигнет этого, но это было неправильно.
Все выше сказанное, чтоправильный способ сделать это?
Спасибо!