Рабочий процесс с PayKey с использованием адаптивного платежа Paypal - PullRequest
5 голосов
/ 24 января 2012

Я пытаюсь внедрить платежную систему с использованием нового API Paypal (Adaptive Payment).

Пока у меня есть этот рабочий процесс:

  • Отправить запрос в Paypal на: AdaptivePayments/Pay
  • Это создает запрос на оплату и возвращает PayKey, действительный 3 часа ( источник )
  • Теперь я жду, что PayPal отправит мне запрос через IPN. Когда это будет, я получу Pay_key с ним
  • Используя этот pay_key, я позвоню на AdaptivePayments/PaymentDetails, чтобы узнать состояние платежа.

Но мне было интересно, как я могу это сделать, если прошло больше 3 часов? (как в возврате?)

Какой верный способ сделать тогда?

Спасибо за вашу помощь!

1 Ответ

11 голосов
/ 25 января 2012

Что ж, я сам отвечу на этот вопрос и после небольшого прочтения.

Вместо использования payKey, указанного при вызове AdaptivePayments/Pay, а другое решение - использовать trackingId.

Вот как:

На первом шаге вы создаете AdaptivePayments/Pay и указываете trackingId (должен быть уникальным):

{
  "actionType":"PAY",
  "currencyCode":"USD",
  "receiverList":{"receiver":[{"amount":"1.00","email":"seller_1288085303_biz@gmail.com"}]},
  "returnUrl":"http://apigee.com/console/-1/handlePaypalReturn",
  "cancelUrl":"http://apigee.com/console/-1/handlePaypalCancel?",
  "trackingId":"abcde-12345-unique-of-course",
  "ipnNotificationUrl":"http://apigee.com/console/-1/ipn",
  "requestEnvelope":{"errorLanguage":"en_US", "detailLevel":"ReturnAll"}
}

В ответ вы получите PayKey, который выВы перенаправите своего покупателя на, чтобы совершить платеж.

Затем, на протяжении всей эволюции этого платежа, вы будете уведомлены на ваш IPN-адрес (здесь "http://apigee.com/console/-1/ipn").

* 1016").* Когда вы получите (POST) запрос по этому адресу, проверьте действительность PayPal, и вы получите trackingId в параметре. Проверьте, существует ли этот trackingId, а затем спросите AdaptivePayments/PaymentDetails с этим trackingId следующим образом:
{
 "trackingId":"{put here}",
 "requestEnvelope":{"errorLanguage":"en_US", "detailLevel":"ReturnAll"}
}

И у вас будет полный подробный статус вашего платежа взамен.

Теперь вы выполняете работу по обновлению базы данных, звоните покупателю и т. Д. И т. Д.)

Что мне помогло:

...