2012-05-30 3 views
1

Я собираюсь интегрировать Paypal Express Checkout в онлайн-систему заказа продуктов питания. Мой текущий вид потока заключается в следующем:Paypal Express Checkout API: может ли DoExpressCheckoutPayment сбой?

  • SetExpressCheckout называется, и клиент перенаправляется на Paypal с маркером.
  • После того как клиент одобрил платеж, он перенаправляется на страницу ожидания, а заказ отправляется в ресторан.
  • После получения ответа ресторана, происходит следующее:
    • Если заказ будет одобрен, DoExpressCheckoutPayment называется и компенсация будет завершена;
    • Если заказ отклонен, платеж не завершается.

Это заставляет меня задаться вопросом, это когда-либо возможно, что DoExpressCheckoutPayment терпит неудачу, и средства не могут быть приняты по какой-либо причине? Потому что в моем случае было бы слишком поздно отменять заказ, который уже был отправлен в ресторан.

Вместо этого следует использовать PAYMENTACTION=Authorization, а затем зафиксировать/аннулировать авторизацию? Поскольку средства могут храниться в течение 3 дней, а мне просто нужно несколько минут для принятия решения, это выглядит немного излишним.

ответ

3

Да, вызов API DoExpressCheckoutPayment, безусловно, может быть неудачным.
Что вам нужно сделать, это установить PAYMENTACTION = Авторизация в вашем вызове SetExpressCheckout и DoExpressCheckoutPayment API, и - как только ресторан подтвердит заказ - вызовите API DoCapture, чтобы получить средства от авторизации.
Фонды выполняются в течение 3 дней, а разрешение доступно до 29 дней.

Также; дизайн для отказа. Держите резервную копию. На всякий случай DoCapture делает сбой. Этого не должно быть, но вы никогда не знаете. Поэтому дважды проверьте, что «PAYMENTSTATUS» «Completed» и «TRANSACTIONID» не являются пустыми в ответе API DoCapture.

+0

Спасибо, что отвечает на мой вопрос! – Benjamin

Смежные вопросы