Это следующий вопрос: PHP: простой способ начать оформление заказа через PayPal?
Итак, моя проблема в том, что я указываю URL-адрес возврата. Однако после оплаты через PayPal я попадаю на экран с надписью:
Вы только что завершили платеж. XXXX, вы только что завершили платеж. Ваш идентификатор транзакции для этого платежа: XXXXXXXXXXXXX.
Мы отправим письмо с подтверждением на адрес XX@XXXX.com. Эта транзакция будет отображаться в вашей выписке как PAYPAL.
Go to PayPal account overview
Мне нужно, чтобы этот экран не отображался, а переходил непосредственно к URL-адресу возврата. У меня есть:
- Установите переменную "return"
- Установите для переменной "rm" значение: 2 (согласно руководству = " браузер покупателя перенаправляется на URL-адрес возврата с помощью метода POST, и все платежные переменные включены ")
Собственно, вот и вся моя форма:
<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<input type="hidden" value="_xclick" name="cmd">
<input type="hidden" value="onlinestore@thegreekmerchant.com" name="business">
<!-- <input type="hidden" name="undefined_quantity" value="1" /> -->
<input type="hidden" value="Order at The Greek Merchant:<Br />Goldfish Flock BLG<br />" name="item_name">
<input type="hidden" value="NA" name="item_number">
<input type="hidden" value="22.16" name="amount">
<input type="hidden" value="5.17" name="shipping">
<input type="hidden" value="0" name="discount_amount">
<input type="hidden" value="0" name="no_shipping">
<input type="hidden" value="No comments" name="cn">
<input type="hidden" value="USD" name="currency_code">
<input type="hidden" value="http://XXX/XXX/XXX/paypal/return" name="return">
<input type="hidden" value="2" name="rm">
<input type="hidden" value="11255XXX" name="invoice">
<input type="hidden" value="US" name="lc">
<input type="hidden" value="PP-BuyNowBF" name="bn">
<input type="submit" value="Place Order!" name="finalizeOrder" id="finalizeOrder" class="submitButton">
</form>
Есть идеи, как я могу заставить его автоматически вернуться? Или как мне вернуть результат платежа на свой сайт, чтобы я мог обновить базу данных? Что такое IPN?
Ответы:
Вы должны включить автоматический возврат в своей учетной записи PayPal, иначе он проигнорирует это
return
поле.Из документации (обновлено, чтобы отразить новый макет, январь 2019 г.):
IPN предназначен для мгновенного уведомления об оплате. Это даст вам более надежную / полезную информацию, чем то, что вы получите при автоматическом возврате.
Документация для IPN находится здесь: https://www.x.com/sites/default/files/ipnguide.pdf
Онлайн-документация для IPN: https://developer.paypal.com/docs/classic/ipn/gs_IPN/
Общая процедура заключается в том, что вы передаете
notify_url
параметр с запросом и настраиваете страницу, которая обрабатывает и проверяет уведомления IPN, а PayPal будет отправлять запросы на эту страницу, чтобы уведомить вас о платежах / возвратах / т. Д. проходить через. Эта страница обработчика IPN тогда будет правильным местом для обновления базы данных, чтобы отмечать заказы как оплаченные.источник
My Selling Tools
Шаг 4) ЩелкнитеWebsite Preferences
подSelling Online
return
поле». Любойreturn
параметр URL-адреса, который вы передаете для оформления заказа, будет учитываться и переопределять любой URL-адрес автоматического возврата (или его отсутствие), настроенный в профиле учетной записи продавца PayPal, но если у них не включен автоматический возврат, покупатель должен будет вручную щелкнуть по конец оформления заказа, чтобы быть перенаправленным на этот URL-адрес, а не автоматически.Пример формы с использованием PHP для прямых платежей.
пожалуйста, пройдите через поля notify_url, return, cancel_return
пример кода для обработки ipn (my_ipn.php), который запрашивается PayPal после оплаты.
Для получения дополнительной информации о создании IPN перейдите по этой ссылке.
Изображение ниже поможет вам понять процесс PayPal.
Для дальнейшего чтения перейдите по следующим ссылкам;
надеюсь, это поможет вам .. :)
источник
один способ я нашел:
попробуйте вставить это поле в созданный вами код формы:
rm означает метод возврата ;
2 означает (пост)
После того, как пользователь совершит покупку и вернется на URL-адрес вашего сайта, этот URL-адрес также получит параметры POST
ps при использовании php попробуйте вставить
var_dump($_POST);
обратный URL (скрипт), затем сделайте тестовую покупку, и когда вы вернетесь на свой сайт, вы увидите, какие переменные указаны в вашем URL.источник
Делюсь этим, поскольку недавно я столкнулся с проблемами, похожими на эту тему
В течение долгого времени мой скрипт работал хорошо (базовая форма оплаты) и возвращал переменные POST на мою страницу success.php, а также данные IPN в качестве переменных POST. Однако в последнее время я заметил, что страница возврата (success.php) больше не получает никаких переменных POST. Я тестировал в песочнице и живу, и я почти уверен, что PayPal что-то изменил!
Notify_url по-прежнему получает правильные данные IPN, позволяющие мне обновлять БД, но мне не удалось отобразить сообщение об успешном завершении на моей странице URL-адреса возврата (success.php).
Несмотря на попытки использовать множество комбинаций для включения и выключения параметров в настройках оплаты веб-сайта PayPal и IPN, мне пришлось внести некоторые изменения в свой сценарий, чтобы гарантировать, что я все еще могу обрабатывать сообщение. Я добился этого, включив PDT и Auto Return, следуя этому отличному руководству .
Теперь все работает нормально, но единственная проблема в том, что URL-адрес возврата содержит все переменные PDT, что некрасиво!
Вы также можете найти это полезным
источник
Я думаю, что идея установки значений автоматического возврата, как описано выше Кевином, немного странная!
Скажем, например, что у вас есть несколько веб-сайтов, которые используют одну и ту же учетную запись PayPal для обработки ваших платежей, или скажем, что у вас есть несколько разделов на одном веб-сайте, которые выполняют разные задачи покупки и требуют разных обратных адресов при оплате завершено. Если я размещу кнопку на своей странице, как описано выше в разделе «Пример формы с использованием PHP для прямых платежей», вы увидите, что там есть строка:
где вы устанавливаете индивидуальное возвращаемое значение. Почему его нужно ставить вообще, в том числе и в профиле?!?!
Кроме того, поскольку вы можете установить только одно значение в разделе профиля, это означает (AFAIK), что вы не можете использовать автоматический возврат на сайте с несколькими действиями.
Комментарии пожалуйста ??
источник
return
значениями для каждой кнопки ? Значит, у меня могут быть разные страницы возврата, которые все равно будут получать данные PDT?на странице оформления заказа найдите скрытый элемент формы cancel_return:
установите в качестве значения элемента формы cancel_return URL-адрес, по которому вы хотите вернуться:
источник