PayPal IPN返回购物车或订单ID进行后期处理

时间:2010-07-28 00:55:23

标签: php paypal shopping-cart paypal-ipn

我已成功将自定义购物车发布到PayPal - 它只是处理好订单,当收到付款时,它会将数据发回到我在配置中指定的URL。该代码基于此处的库:http://www.phpfour.com/blog/2009/02/php-payment-gateway-library-for-paypal-authorizenet-and-2checkout/

所以我通过将数据发回PayPal来成功验证IPN - 这一切都很棒。这是我的困境 - 我如何知道IPN确认的顺序?

我没有使用PayPals购物车,我有自己的。它在我的数据库中有自己的购物车ID,当我收到该购物车的IPN时,我想“关闭”购物车并将其保存为稍后查询的订单。

我已尝试将其他自定义字段与重定向一起传递给填充购物车的PayPal,但该值不会在IPN中返回给我。 x.com上的文档很简单,所以我没有找到任何帮助。

有没有人有PayPal和IPN的经验?不一定要用PHP - 我可以解释代码 - 但如果你有办法用订单向PayPal发送一个值,然后用IPN返回该值,那就太棒了!

如果使用PayPal的API无法做到这一点(我很难相信) - 有关如何处理此问题的其他建议吗?

4 个答案:

答案 0 :(得分:1)

我不知道这是不是一个好主意,但这里有两个不同的选择:

答:对项目1使用第一组on1 / os1并将订单ID添加到该项目。

B:在自定义字段中,我不确定你在那里有什么,但你可以在这里制作类似orderidhere41 | otheritems的东西,然后通过爆炸来解析这个问题。让他们分开。

Paypal确实限制了这一点,我不知道为什么,但这两者都应该有效。将它作为on / os将其放在用户的paypal收据上,这是我的首选方法。

如果其他人有更好的解决方案,我也会对此感兴趣!

编辑:

澄清on1 os1。这些是通常用于大小/颜色等的“选项”。有关它们的更多信息,请参阅option_name1 option_selection(sp)下的IPN PDT Paypal variables。当然,名称是“订单ID”,os将是实际ID。

编辑:

查看该文档$my2CO->addField('cart_order_id', rand(1, 100));是我将自己的购物车订单ID放在哪里。那应该是正确的领域。抱歉混淆:))

编辑:

最后有一个自定义字段用于支付宝IPN,称为“自定义”添加数据到此将通过,这将为您传输orderid。必须在双方都称为自定义。

答案 1 :(得分:1)

(这可能与其他API不同)。

我的经验是通过C#进行快速结账,但即使在PHP中也应该是相同的。如果您在将用户重定向到PayPal之前使用了名称 - 值对(NVP)界面,则会点击PayPal站点以检索重定向URL。作为回复的一部分,他们会将一个令牌传回给您。您将此令牌与订单一起保存。当IPN回发发生时,您将获得相同的令牌,这样您就可以查找原始订单。

流程流程如下(“您”是您的网站):

  • 用户填写购物车,点击按钮/链接查看
  • 请求已发送到您的网站
  • 您的网站收到请求,将数据发送到PayPal
  • 您收到来自PayPal的初始回复,其中包含令牌
  • 您可以将此令牌与此用户的购物车一起保存。
  • 您将用户重定向到PayPal返回的链接
  • 用户被重定向到PayPal并输入付款信息
  • 付款信息由PayPal验证
  • 将用户重定向回您的网站
  • PayPal会将IPN回复发送回您的网站
  • 您获取响应中包含的令牌
  • 您查找之前保存的令牌以查找购物车(它们的值相同)
  • 您关闭了初始订单/购物车。

您可能想要试用PHP SDK - 向下滚动到名称 - 值对接口。

答案 2 :(得分:1)

我非常怀疑这会对原始海报有所帮助,但PayPal已添加或最终记录了“发票”选项,该选项允许您发布OrderID,并通过IPN将其发回。 我目前正在使用它,它似乎按预期工作。

有关详细信息,请参阅Website Payments Standard Integration Guide (PDF):附录A,表A.4

答案 3 :(得分:1)

您可以创建并发布一个长度为255个字符的自定义传递变量,该变量可以容纳任何数据。有关Paypal IPN官方指南第44页的更多信息。