0

我已经成功地将我的自定义购物车发布到 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

4 回答 4

1

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

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

B:在自定义字段中,我不确定您在其中有什么,但是您可以在此处将其设置为 orderidhere41|otheritems 之类的内容,然后通过在 | 处爆炸来解析它。让他们分开。

Paypal 确实限制了这一点,我不知道为什么,但这两个都应该工作。将其作为 on / os 将其放在用户的贝宝收据上,因此这是我的首选方法。

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

编辑:

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

编辑:

浏览该文档$my2CO->addField('cart_order_id', rand(1, 100));是我放置自己的购物车订单 ID 的地方。那应该是正确的字段。对困惑感到抱歉 :)

编辑:

最后有一个用于paypal IPN的自定义字段,称为“自定义”,向此添加数据将通过,这将为您往返传输orderid。它必须被称为双方的习惯。

于 2010-07-28T00:58:44.267 回答
1

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

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

流程如下所示(“您”是您的站点):

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

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

于 2010-07-28T01:51:35.597 回答
1

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

有关详细信息,请参阅网站支付标准集成指南 (PDF):附录 A,表 A.4

于 2012-06-18T17:24:41.240 回答
1

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

于 2012-07-28T23:26:41.457 回答