![](/img/trans.png)
[英]PayPal REST API: Fulfill Order/Payment on Redirect URL or on Webhook call?
[英]PayPal REST API order workflow: Payment -> Sale -> Webhook?
我正在嘗試將PayPal REST API集成到我的Symfony 2 Web應用程序中,但我發現很難理解完整的工作流程到底是什么樣的:
PayPal文檔描述了接受付款的以下步驟。 可以使用PayPal Playground來模擬這些步驟:
Payment
對象 Payment
響應中收到的approval url
Payment
對象中定義的success-link將其重定向回我的頁面。 使用收到的信息執行付款。 approved
從文檔: 付款完成后,它被稱為銷售 。 然后,您可以查找銷售並退款。
到現在為止還挺好。 但是:在這個工作流程中,Webhooks在哪里使用/解雇? 我在PayPal開發人員儀表板中定義了一個通配符Webhook(接受所有可能的事件)。
我的觀察是,我的系統接收網絡掛接事件1-2分鍾(!)用戶被重定向到成功鏈接, 並執行付款后(步驟4) 之后 。
除了執行付款和接收Webhook之間的這個長時間延遲之外,這個工作流程意味着我只接收處理成功鏈接后的Webhook。 這意味着,處理成功鏈接絕對是完成付款所必需的。 它是否正確?
我需要使用Webhooks嗎?
我已經在幾天前問過這個問題了,nifr的答案是非常合理的:人們不能相信用戶遵循任何重定向URL,但應該只依賴於Webhook事件。
然而,這與我之前描述的觀察結果相沖突,因為如果不處理重定向URL,我將永遠不會收到Webhook ...
因此,處理PAYMENT.SALE.COMPLETED
webhook事件沒有多大意義,因為這應該在處理重定向URL時完成。 正確?
但是,要處理待處理付款的更新,只能通過收聽這些事件來處理退款或撤銷付款等。
所以答案是:只使用Webhooks獲取之前付款的更新。 正確?
所以,主要問題是:
我仍然是PayPal世界的新手,但幾天前我在一個在線商店中集成了PayPal Plus REST API,根據我的理解,我可以看出工作流程如下:
$payment->execute($paymentExecution,$api);
的那一刻$payment->execute($paymentExecution,$api);
,您要求Paypal向用戶收取金額。 但在此之后,你沒有錢。 Paypal首先處理收費並稍后通過WebhookEvents通知您。 當用戶按每筆直接付款或信用卡等付款時,Webhook通知(帶有令人討厭的延遲)尤其重要。處理此類付款需要幾秒鍾/分鍾。
redirectUrl絕對是收費/執行付款所必需的。 這里執行成功,只是告訴用戶,他完成了他的Job,你可以在這里保存/捕獲PaymentID / Transaction id,以便以后使用/更新通過WebhookEvent Listener。
所以我建議你只有在通過WebhookEvent Listener接收到通知后才更新你的數據庫(付款已完成),而不是成功的RedirectUrl。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.