可以仅依靠Paypal IPN记录购买吗?

问题描述

| 我正在通过以下主要步骤从网站设置一个简单的“立即购买”交易: 从价格表中选择产品 评论选择(金额,税金等) 在Paypal上处理付款 收据/谢谢 目前,我正在第2步中存储数据库记录-这可能意味着将有很多记录,因为人们决定不继续购买,因此没有收到付款。这些记录没有实际用途,因为我将使用Google Analytics(分析)来跟踪结帐流程的成功程度。 我正在使用Paypal IPN来验证付款的真实性并将它们记录在步骤2插入的记录中;但是,我可以仅依靠IPN事务中的数据来首先填充数据库,从而删除是否需要在步骤2中存储它们,并且必须进行数据库清理以删除从未完成的事务? 我个人看不出为什么我不会-IPN包含我需要的有关付款的所有数据,并且可能还有更多信息,并且如果由于服务器第一次不通过,Paypal将重新发送IPN几天小故障,但是我还有其他重要的事情吗? 显然,第一要考虑的是没有交易丢失或未记录,因此不会引起客户不满!     

解决方法

        像您一样进行双向验证很重要。 在用户离开系统前往贝宝之前,您要保存订单信息(总计,数量)。当ipn回来时,您验证请求(该请求必须来自paypal ip或其他),然后验证该交易是否成功,然后您的步骤2进入现场。您可以验证从Paypal ipn返回的总数是否与用户离开前保存的总数相同(Paypal有时可能会返回部分付款,用户可以获取帖子数据并从带有较低的“ 0”的经过修改的html中撰写自己的帖子组)。步骤2还应该存储买方的user_id,因此您也必须进行比较。 这是一个示例层(没有编程语言,只是一个伪代码):
if request comes from paypal:
    #   query the order
    if order.total == request.total && order.user_id == request.custom:
        payment may come in...
    ,        作为过去三年来已处理超过60万笔PayPal付款的系统的设计者和管理员-完全依赖IPN将允许一些错误从裂缝中溜走。 真实数据:         交易总数没有IPN无效IPN重复IPN 年1 170,000 + 2 101 0 2年级205,000 + 54 15 3 3年230,000 + 20 24 13 幸运的是,我们的系统采用PDT(付款数据传输)作为“备份”结构,因此我们不会丢失任何交易数据或拥有不满意的客户。注意:PDT也不能完全依赖-实际上,今年年初,PDT退货的可靠性存在一个主要问题。 最常见的“无效” IPN返回是HTML错误页面或截断的结果……如果需要,我可以提供示例。 最好的选择是IPN和PDT结合使用(将“购物车”数据原样存储在数据库中)。 IPN流程或PDT流程都可以创建事务(并删除数据库中的'cart \'数据记录)。然后,到达的第二个过程将没有用于记录交易的“购物车”条目。 注意:-正如您在使用自定义字段的最终解决方案中所指出的那样-注意自定义字段有长度限制,返回给您时可以将其截短。     ,        我并不是仅依靠IPN来执行此操作,但是PayPal将记录失败以与您的服务器联系,如果该服务器发生故障并且应该稍后重试,尽管我只在开发中遇到过故障并且从未验证过重试。我只是相信他们。     ,        是的,对于典型的电子商务网站,您可以-相当可靠。如果核反应堆融化并导致人们死亡,那你就不能-我见过它的问题,但很少见。     ,        我已经开发了许多电子商务站点,并且在实践中,您始终希望记录发生“意外”时可以采取的措施。您自己的数据可能会提供更多信息。 如您所说,是的,您可以这样做,但是我建议这不是一个好主意。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...