按照https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/的指南,我已成功創建付款並重定向用戶以批准付款。Paypal REST API:如何在用戶批准付款後檢索付款ID。
創建的付款看起來像波紋管,並將其保存在用戶會話中以供進一步參考。用戶批准支付
{
"id": "PAY-6RV70583SB702805EKEYSZ6Y",
"create_time": "2013-03-01T22:34:35Z",
"update_time": "2013-03-01T22:34:36Z",
"state": "created",
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.47"
}
},
"description": "This is the payment transaction description."
}
],
"links": [
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
"rel": "self",
"method": "GET"
},
{
"href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
"rel": "approval_url",
"method": "REDIRECT"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
"rel": "execute",
"method": "POST"
}
]
}
後,支付寶將用戶重定向到return_url
。例如,http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2
。
爲了執行付款,POST請求必須作出https://api.sandbox.paypal.com/v1/payments/payment/{payment_id}/execute/
。
問題
的貝寶在URL中提供的信息只有兩件是token
和PayerID
。我怎樣才能找到相應的payment_id
?
可能的解決方案
的token
是approval_url
的一部分,解析URL並存儲token -> payment
關係就可以解決問題。但我正在尋找一個不需要解析的更好的解決方案。
一個更好的解決方案,我認爲這是最好的方法,不使用paymentID但隨機令牌來連接貝寶異步調用。通過這種方式,您可以毫無問題地分離會話用戶。與Python金字塔我創建付款發送成功的網址爲http://本地主機:6543/payment_ok/T-b37b41f1-5146-463a-b248-bad523a2fa79。 –
是的安東尼奧,你是對的!事實是,您在發送請求之前沒有付款ID。然後,發送隨機令牌可以識別用戶的會話。 –
這不起作用。原因是付款ID是未知的,直到返回URL已被髮送到PayPal。目前推薦的最佳做法是將付款ID存儲在用戶的會話中(只要確保會話不會在用戶退回或PayPal的付款記錄被清除之前過期)。如果PayPal除支付者ID和交易令牌之外還包括支付ID,那將是最好的。我不確定他們爲什麼決定省略它。同樣令人沮喪的是,他們沒有在文件中提到它。 – Aquarelle