URL возврата PayPal не работает с php и HTML-формой
У меня настроены платежи (с использованием php), поэтому, когда клиент возвращается в файл success.php (после процесса оплаты в Paypal с использованием прослушивателя IPN), он добавляется в базу данных с новым номером участника, который также генерируется в файл success.php. Процесс работает нормально, если клиент оплачивает как гость, он возвращается на страницу success.php, как и должно быть. Однако, если клиент входит в систему PayPal, а не в качестве гостя, он перенаправляется на страницу учетной записи пользователя Paypal, а не на страницу success.php на моем сайте. Это означает, что оплата была принята, но их членский номер не создан и не добавлен в БД.
Есть ли способ заставить ВСЕХ клиентов вернуться на мою страницу успеха или следует добавить код для создания нового участника в файл ipn listener (ipn.php), чтобы не было никакого значения, если они не вернутся к успеху? страница?
Этот код я использую на странице оформления заказа, чтобы установить URL возврата.
<form action="<?php echo $paypalURL; ?>" method="post">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" name="business" value="<?php echo $paypalID; ?>">
<!-- Specify a Buy Now button. -->
<input type="hidden" name="cmd" value="_xclick">
<!-- Specify details about the item that buyers will purchase. -->
<input type="hidden" name="item_name" value="<?php echo $item_name; ?>">
<input type="hidden" name="item_number" value="<?php echo $item_number; ?>">
<input type="hidden" name="amount" value="<?php echo $price; ?>">
<input type="hidden" name="currency_code" value="GBP">
<!-- Specify URLs -->
<input type='hidden' name='cancel_return' value='http://example.com/payment-cancelled'>
<input type='hidden' name='return' value='http://example.com/thanks-for-joining/'>
<!-- Display the payment button. -->
<input type="submit" name="submit" class="button" value="Pay Now">
</form>
Я должен добавить, что до сих пор я проверял это только в режиме песочницы, поэтому, если кто-нибудь знает, является ли это проблемой только песочницы, пожалуйста, дайте мне знать.
ОБНОВЛЕНИЕ: Дальнейшее тестирование показывает, что обратный URL больше не работает с гостевым извлечением. Это начало происходить только после того, как платежи в песочнице проходят через новые страницы оплаты (скриншот прилагается).
Изменил ли PayPal метод запроса URL возврата?
1 ответ
Я боролся с несколькими способами интеграции платежей PayPal на мой сайт. Из того, что я читал здесь о stackru, на сайте PayPal и во всем Интернете, вероятно, лучше всего поместить всю эту серверную работу в ваш слушатель. Вы можете настроить что-то на внешнем интерфейсе, чтобы подготовить свою БД для клиента, но главная проблема с использованием страницы успеха для этой информации заключается в следующем:
1) ваши клиенты могут просто ввести URL вашей страницы успеха, если она известна
2) Клиент может отказаться от перенаправления после PayPal и вообще не может вернуться на ваш сайт (это лучшая причина, насколько я понимаю).
3) Иногда PayPal перенаправляет, но слушатель, возможно, не получил ответ PayPals о завершении, ожидании, и т. Д. (Вот почему они ждут 10 секунд до перенаправления), поэтому вы не хотите, чтобы пользователь пошел в другое место или были проверены преждевременно.
Честно говоря, размещение всего кода в вашем слушателе также довольно просто и снижает вероятность неправильной связи между вашей страницей успеха и PayPal. Что касается тестирования, я просто использовал симулятор IPN для проверки своего кода, и все было в порядке.
Что касается URL перенаправления, в PayPal есть несколько избыточностей. Если вы используете кнопки, опция 3 (я считаю) предоставит обратный URL, который переопределяет другие. Я не уверен в использовании песочницы, но убедитесь, что у вас есть.sandbox.paypal в вашем коде, чтобы убедиться, что он работает ( https://gist.github.com/xcommerce-gists/3440401).
Надеюсь, это поможет.