html - 网站支付标准 : How would I connect the order being sent and the IPN receiving it?

标签 html paypal paypal-ipn

我设置了一个自定义购物车,我想知道如何将我数据库中的“客户制作的订单”连接到订单完成后 Paypal 发送的“IPN POST”。

我可以要求一个电子邮件地址并比较两者;但它们可能不一样。在处理 IPN 处理程序 时,我至少需要执行哪些检查?

*我发现很多此类信息分布在多个问题中。我希望这能为其他人节省很多时间。

最佳答案

您可以将隐藏在 HTML 中的自定义变量与您的订单一起传递,订单完成后该变量将传回 IPN。


如何在“网站支付标准”的订购阶段执行此操作:

<input type="hidden" name="custom" value="UNIQUEVALUE">

UNIQUEVALUE 是存储在您的数据库中用于标识订单的唯一标识符。


在完成支付阶段:

这将作为 POST 变量 custom 传递给您的 IPN。

https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNReference#id091EAB0105Z *还声明此自定义变量的最大长度为:255 个字符。


在上线之前,您至少应该进行以下检查:

检查 1:检查订单是否存在
检查2:检查订单是否重复
检查 3:检查您支付的金额是否正确
检查 4:使用沙盒/假订单进行测试
检查5:测试,测试,再测试


检查 1:检查订单是否存在

然后,在您的处理程序/监听器 IPN 中,您应该查询您的数据库以获取此 UNIQUEVALUE,如果未找到,请给自己发送电子邮件告知发生了这种情况。


检查 2:检查订单不重复

您应该将“txn_id”与付款状态一起存储在您的数据库中。如果订单是完整的,那么这意味着 txn_id 是重复的,应该这样处理。

*切记:检查付款状态。这可能会作为待处理等...如果 txn_type = web_acceptpayment_status = Completed 那么订单就完成了。这就是您需要存储订单状态的原因。因为您现在可以得到一个挂单,稍后可以得到一个完整的订单。它们都具有相同的 txn_id

可在此处找到完整的状态列表:https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNReference#id091EB04C0HS

对于那些懒惰的人来说,这些可以是:Canceled_Reversal/Completed/Created/Denied/Expired/Failed/Pending/Refunded/Reversed/Processed/Voided。


检查 3:检查您是否收到了正确的金额

您应该做的另一项检查是查看收到的付款和订单的费用是否相同。使用“网站支付标准”,有人可以更改您的 HTML 代码并传递不同的支付金额。


检查 4:使用沙盒/假订单进行测试

使用https://developer.paypal.com/转到“应用程序”并向您的 IPN 处理程序发送测试 IPN 消息。还要记住将 IPN 处理程序 中的代码从 paypal.com/cgi-bin/更改为 sandbox.paypal.com/cgi-bin/webscr webscr.否则这将失败。


检查 5:测试,测试,再测试

使用 Paypal “发送测试 IPN 消息”,彻底测试您的 IPN 处理程序。然后再次测试。

关于html - 网站支付标准 : How would I connect the order being sent and the IPN receiving it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15429361/

相关文章:

html - 将图标与文本放在同一行

Paypal IPN 问题(与后端流程集成)

Paypal IPN 始终获得状态 - 已排队

paypal - `Notify_URL` 会覆盖之前设置的 IPN 数据吗

javascript - 在我获取数据之前指令的代码被触发

html - 如何将关闭按钮添加到 Bootstrap 卡?

express - Paypal 即时更新 nvp 不工作(沙盒环境)

google-app-engine - 如何在 python GAE 中从 PayPal 沙箱上线?

php - 我如何强制隐藏页面以防止直接访问并且只能从 Paypal 重定向访问?

javascript - 为什么 MathML 代码在单个 HTML 文件上显示不同,但在 Jsfiddle 上却有效? MathJar 用于单一 HTML?