Статьи

Зарегистрироваться с помощью учебника PAYPAL (1/3): процесс PDT и IPN

абстрактный

Целью данного руководства является ознакомление с принципами правильной работы процесса регистрации в системе PayPal.

  1. Объясните, как работает PayPal (процесс IPN и PDT). Глава Один
  2. Приведите хороший пример, чтобы показать, как регистр работает с PayPal, содержащий базу данных, контроллер и форму интерфейса с функциями jQuery. И объясните, как настроить учетную запись PayPal (пример Sandbox и реальной учетной записи PayPal). Глава вторая
  3. Дайте подробные комментарии в коде. В третьей главе

Этот учебник дает общую картину процесса PayPal (PDT и IPN) и реального проекта от начальной точки до конца. Хорошее объяснение и картинки, подробные комментарии в строке кода. Надеюсь, это будет полезно всем читателям.

Глава Один

PayPal PDT (передача платежных данных)

PDT позволяет покупателю перенаправить с веб-сайта продавца на веб-сайт PayPal и оплатить платеж, а затем перенаправить обратно на веб-сайт продавца.

Шаг 1:

Клиент нажимает на кнопку и переходит на сайт PayPal, показывая форму оплаты.

Шаг 2:

После того, как клиент заполнил форму оплаты и нажал кнопку «Pay Now» в PayPal, PayPal будет перенаправлен на страницу результатов PayPal, отображающую:

На этом этапе PayPal вызывает собственную функцию-обработчик PDT и передает параметры через URL, наиболее важной переменной является «tx», который является токеном транзакции.

например: http://domain.com/register/paypalPDT?tx=4XV95919FA406935A&st=Completed&amt=400.00&cc=AUD&cm=&item_number=38

Шаг 3:

Этот шаг обрабатывается незаметно. После того, как PayPal вызовет вашу собственную функцию обработчика PDT, ваша функция обработчика PDT отправит POST tx и auth_token обратно в PayPal.

PayPal идентифицирует ваш торговый счет auth_token и tx-токен. Затем, ваша собственная функция обработчика PDT, fsock получает данные от PayPal.

Данные платежа от PayPal представляют собой строку, подобную следующей:

шаг 3-2

Шаг 4:

Последний шаг прост и легок. Ваша функция обработчика PDT может отображать страницу успеха или страницу неудачи на экране покупателя.

Заключение Обзор:

Итак, давайте взглянем на все эти четыре шага.

PayPal IPN (Уведомление об оплате экземпляра)

IPN — это резервный план для покупателей, закрывающих браузер после оплаты, PDT не может перенаправить обратно на сайт продавца. Если покупатели закрывают браузер или останавливают перенаправление PDT, ваша функция обработчика PDT не может $ _GET [‘tx’], тогда вы не можете POST back tx и auth_token, тогда PayPal не может отправить данные платежа вашему обработчику, тогда страница результатов не может быть показана.

К счастью, PayPal предоставляет план резервного копирования IPN, который является более надежным, поскольку PayPal будет отправлять данные платежа в функцию обработчика IPN.

Шаг 1:

PayPal POST платежные реквизиты для вашей функции обработчика IPN. Данные POST похожи:

IPN-POST

Данные POST должны быть массивом, но я закодирован json_encode, поэтому теперь он отображается в формате json.

Шаг 2:

Ваша функция-обработчик IPN отправляет платежные данные обратно в PayPal через cURL и ожидает подтверждения PayPal.

Шаг 3:

PayPal подтвердил данные платежа из вашей функции обработчика IPN и вернул результат подтверждения.

Что-то вроде:

Итак, вы можете видеть, что данные POST были проверены PayPal.

Заключение Обзор:

На приведенной выше диаграмме видно, что PayPal и функция вашего обработчика IPN имеют «протокол рукопожатия» для подтверждения платежных реквизитов. Затем ваша функция-обработчик IPN получает строку результата от PayPal, затем ваша функция может обрабатывать различные действия в зависимости от результата.

PayPal IPN и PDT работают вместе

Надеемся, у вас есть четкое понимание о PayPal PDT и IPN. Затем мы должны совместить два инструмента, чтобы обеспечить правильную обработку платежа.

Ключевым моментом является обработка обработчиков дублирования. Например, у нас есть платежная запись с именем payment_1. PDT обработал payment_1, а IPN также пытается обработать payment_1 (если пользователь НЕ закрыл браузер).

Одним из способов решения этой проблемы является то, что в вашей базе данных вы можете отметить, что платеж был обработан, что означает, что предварительная проверка payment_1 уже была обработана или нет.