【问题标题】:PayPal IPN $_POST['txn_id'] not set未设置 PayPal IPN $_POST['txn_id']
【发布时间】:2012-02-23 08:07:19
【问题描述】:

我正在使用 PayPal 沙箱执行订阅按钮,然后当我收到订阅或订阅取消的 IPN 响应时,从未设置过 $_POST['txn_id']。

所以我不知道如何识别交易以只接受唯一的交易

谢谢!

编辑:例如,我在 POST 中为 subscr_cancel 提供的所有信息是:amount1、amount3、address_status、subscr_date、payer_id、address_street、mc_amount1、mc_amount3、charset、address_zip、first_name、reattempt、address_country_code、address_name、otify_version subscr_id 风俗 付款人状态 商业 地址国家 地址城市 验证签名 付款人电子邮件 btn_id 姓 地址状态 接收者电子邮件 再次发生的 txn_type 项目名称 mc_currency 居住的国家 test_ipn 周期1 时期3 相关性_id

【问题讨论】:

  • 您能否确认您确实收到了指向您的 IPN URL 的 IPN?例如,是否设置了任何其他 PayPal $_POST 变量?
  • 是的,我在 POST 中获得了所有其他数据,甚至是 txn_type,所以很奇怪我没有 txn_id
  • 感谢您的编辑。这很有帮助。我下面的解释应该可以解决您的问题。

标签: php paypal sandbox paypal-ipn


【解决方案1】:

根据Table 2. Summary of subscription variables:

对于订阅变量,交易 ID (txn_id) 仅适用于美元支付和 多币种支付交易类型 (txn_type)。

正如预期的那样,对于交易类型subscr_cancel,PayPal 不会将txn_id 发送到您的 IPN,并且只会在交易类型为subscr_payment 时发送txn_id。

有关根据您的交易将哪些变量发送到您的 IPN URL 的进一步说明,请查看IPN and PDT Variables。

【讨论】:

  • 谢谢!好的,所以没有办法识别 subscr_cancel 类型的交易来确保它是唯一的?
  • 如果您有自己的唯一标识交易的方法,或者您有支付交易的交易 ID,您可以将自己的变量发送到 PayPal,PayPal 将返回您的 IPN。 -- 您可以使用invoice 或custom,您将在您的IPN 中看到这些。
  • 取消不是交易;没有交易发生,因此没有 txn_id 可用。您可以通过subscr_id中的订阅ID识别订阅/定期付款。
  • 关于subscr_id 的优点。虽然,很容易将取消与 transaction 混淆,因为它被归类为 transaction 类型。
【解决方案2】:

您是否检查过$_REQUEST['txn_id'],因为这可能会通过GET 发送到您的服务器。

【讨论】:

  • 是的,我现在刚刚测试了 $_GET['txn_id'] 和 $_REQUEST['txn_id'] 并且它们没有设置
猜你喜欢
  • 2018-02-11
  • 2013-11-08
  • 2015-06-09
  • 2012-01-17
  • 2012-06-19
  • 2015-04-10
  • 2012-12-09
  • 2020-07-14
  • 2011-08-16
相关资源
最近更新 更多