经过多次阅读,我最终将PayPal与IPN方法集成在一起。我在listener.php
执行 3 项检查,分别是:
- 检查
txn_id
是否尚未在数据库中(有人可以使用旧的已确认交易 ID 返回已确认状态,只要它写在PayPal文档中( - 检查
receiver_email
是否与卖家电子邮件匹配 - 检查
custom
是否与订单编号匹配 - 检查
mc_gross
是否与价格匹配
如果所有检查都正确,我将所有数据插入数据库; 我现在缺少的是如果这些参数中的任何一个不匹配,我该怎么办。我可以向PayPal发送一条代码消息,表示"嘿PayPal,出了点问题:删除交易,显示错误消息,最终让买家重试"?如果没有,您将如何处理这种情况?
不,你不能。PayPal不会让用户在 IPN 过程中等待,因此用户不再在那里读取错误或重试。
适当的操作可能是退款。我会触发通知商店经理,他们收到了不合理的付款,并将其留给人工来处理这个问题。如果一切都配置良好,这是一种非常罕见的边缘情况。
您没有提到呼叫PayPal以检查呼叫的真实性。你真的应该先做那个。