我有一个自定义购物车设置,我想知道如何将我的数据库中的'订购客户制作'连接到'IPN POST',Paypal将在订单完成后发送。
我可以要一个电子邮件地址并比较两者;但他们可能不一样。在处理IPN handler
时,我至少需要执行哪些检查?
*我发现很多这些信息都存在于多个问题中。我希望这能为他人节省很多时间。
答案 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_accept
和payment_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
。然后再测试一下。