Art*_*yom 2 database transactions paypal distributed-transactions
处理应用程序和paypal之间的事务的最佳实践是什么.
考虑:
现在根据PayPal API,我可以发送Pay并获得成功.但是,如果我发送Pay成功但由于网络问题而无法收到响应,会发生什么.所以我认为错误发生了并再试一次,从技术上讲,我会向Bob发送300美元而不是150美元?
如何在保留帐户的本地数据库和远程PayPal API之间处理此类事务?
我最近对一个客户端正在完成的ASP.NET MVC项目有了这个问题.
我学到了两件事:
Paypal和您的数据库之间的通信是不可信任的(好吧,没有真正了解这一点,但它完全得到了加强)
我现在明白为什么这么多的网站有贝宝作为一个交易型何况还有可能是该交易已经完成,产品的运输/派送完毕的时间之间的处理时间.
处理这种情况的方式类似于企业处理个人支票的方式:
对于今天许多企业运营的方式来说,这听起来效率低下,但它确实出现了问题.事实上,这就是许多企业偏离接受个人支票的原因,与其他支付方式相比,它们不可靠.
现在,这与处理Paypal付款有何关联?
NOTVALID,或者您永远无法从Paypal获得回复).该公司决定:
这可能听起来不像是经营您业务的最佳方式,但这是我们处理不完美互联网的方式.
VALID,则按预期处理事务.VALID,请向客户提及处理可能有延迟,让您的应用程序向您发送可能发生Paypal交易问题的通知(您可能希望包含引用ID,以便您可以快速找到事务此通知正在引用),并将事务标记pending为相反complete或类似的事件.complete或failed.令人讨厌的是,我们必须采取额外措施来确保资金转移,但如前所述,我们正在使用一个不完善的系统,我们希望非常确定金融交易的成功/失败.
此过程的另一个好处是,当有人篡改Paypal支付系统时,可能会收到通知 - 让您在未来更好地应对恶意行为.