按照 https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/ 上的指南进行操作,我已成功创建付款并重定向用户以批准它。
创建的付款如下所示,我将其保存在用户 session 中以供进一步引用。
{
"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"
}
]
}
用户同意付款后,Paypal 会将用户重定向到return_url
.例如,http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2
.
为了执行支付,必须向 https://api.sandbox.paypal.com/v1/payments/payment/{payment_id}/execute/
发出 POST 请求.
问题
URL中Paypal提供的唯一两条信息是token
和 PayerID
.怎么才能找到对应的payment_id
?
可能的解决方案
token
是 approval_url
的一部分,解析 URL 并存储 token -> payment
关系可以解决问题。但我正在寻找不需要解析的更好解决方案。
最佳答案
我认为 paypal 文档对此并不清楚。但是您可以做一些简单的事情来解决通过返回 url 中的参数传递 de PaymentID 的问题。
像这样: return_url = 'http://www.yourdomain.com/paypal/success/?paymentID=PAY-1234567'
当 Paypal 重定向到您的站点时,它将返回 paymentID 以及其他参数。
关于 Paypal REST API : How to retrieve payment ID after user has approved the payment.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543958/