我认为Paypal SDK(由REST API支持)有三个步骤:
创建付款
payment = Payment({...})
payment.create()
return redirect( redirect_url( payment))
客户通过Paypal支付并授权付款
重定向到我们执行付款的网站,从而转移资金
我应该在第1步存储创建的付款吗?因此,我会捕获所有付款尝试,无论是否成功。或者我可以创建付款,直到第3步才记住它?也就是说,仅记录成功付款(在各自的发票内)。如果我不在第1步存储它,是否存在任何可靠性或安全性问题或其他伤害?
我怀疑无法回滚失败。
在Paypal条款中,它们具有sale
意图,用于支付所提供服务的发票。卡数据不会触及我们的服务器,我会在处理它时推迟Paypal。
我使用paypalrestsdk,Paypal的Python SDK。
答案 0 :(得分:1)
以前,当PayPal将页面重定向回您的服务器以授权您时,将PaymentId恢复是很棘手的,因为第3步无法获得PaymentId
但是,现在,PaymentId作为URL的一部分返回,如第3步所示:
http://localhost/Server-SDK/PayPal-PHP-SDK/sample/payments/ExecutePayment.php?success=true&paymentId=PAY-62998961VU1587338KR3AXWQ&token=EC-4YC2489096181311L&PayerID=REABK2UGK7PLW
正如您所看到的,它有paymentId,这是您需要存储的ID。 所以,回答你不需要存储任何东西,直到第3步。
附加说明:
但是,如果您想提供一些复杂的逻辑/服务。例如。向他们发送电子邮件提醒(如果你有他们的emailId),提醒他们是否放弃你的卡等等。但是,除了使用这些步骤之外,还有很多方法可以做到这一点。