网站付款标准:如何连接正在发送的订单和接收它的IPN?

时间:2013-03-15 10:00:13

标签: html paypal paypal-ipn

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

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

*我发现很多这些信息都存在于多个问题中。我希望这能为他人节省很多时间。

1 个答案:

答案 0 :(得分:1)

您可以将HTML中隐藏的custom变量与您的订单一起传递,该订单将在订单完成后传回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 handler中的代码更改为sandbox.paypal.com/cgi-bin/webscr paypal.com/cgi-bin/webscr。否则这将失败。


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

使用paypal'发送测试IPN消息',彻底测试您的IPN handler。然后再测试一下。