我想PayPal的REST API集成到我的Symfony 2 web應用程序,但我覺得很難理解的完整的工作流程究竟是如何的樣子:PayPal REST API訂單工作流程:付款 - >銷售 - > Webhook?
的PayPal docs描述以下步驟接受付款。人們可以利用PayPal Playground來模擬下列步驟操作:
- 獲取的訪問令牌
- 通過查詢API創建一個
Payment
對象 - 將用戶重定向到在
Payment
響應收到approval url
- 在用戶批准PayPal頁面上的付款後,他會使用
Payment
對象中定義的成功鏈接重定向到我的頁面。使用收到的信息到執行的付款。 - 付款完成後,狀態
approved
From the docs:一旦支付是全面的,它被稱爲 銷售。然後,您可以查看銷售情況並退款。
到目前爲止好。但是: Webhooks在此工作流中使用/觸發了哪些內容?我在PayPal開發人員儀表板中定義了一個通配符Webhook(接受所有可能的事件)。
我的觀察是,我的系統接收網絡掛接事件1-2分鐘(!)後付款執行(第四步)後,用戶被重定向到成功的鏈接和。
除了執行付款和接收Webhook之間的這種長時間的延遲,這個工作流程意味着,我只接收處理成功鏈接的Webhook AFTER。 這意味着,處理成功鏈接對於完成支付是絕對必要的。它是否正確?
我需要使用Webhooks嗎?
幾天前我已經問過this question,nifr的答案很合理:一個不能信任用戶關注任何重定向URL,但應該只依賴Webhook事件。
然而,這所以碰撞與我之前所描述的,因爲我將永遠不會收到網絡掛接不處理重定向URL的意見...
,處理PAYMENT.SALE.COMPLETED
網絡掛接事件沒有做出很大的意義,因爲這應該在處理重定向網址時完成。 正確嗎?
但是,要處理待處理付款的更新,處理退款或轉回付款等。只有通過聽取這些事件纔有可能。
所以答案是:只有使用Webhooks才能獲得以前付款的更新。正確?
所以,主要的問題是:
- 的5個步驟接受付款並沒有說明使用網絡掛接任何東西。這似乎沒有多大意義,因爲沒有Webhooks,人們會錯過更新事件等等。 那麼,真正有可能在沒有Webhook的情況下實施完整的支付工作流程嗎?
- 如果是,在這種情況下更新(退款,待處理等)如何處理?
- 如果否,完成訂單的正確策略/時間是什麼,因爲完成接收和處理webhook需要相當長的時間?