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 возврата?

Снимок экрана оплаты Paypal

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).

Надеюсь, это поможет.

Другие вопросы по тегам