未设置 PayPal IPN $_POST['txn_id']

Posted

技术标签:

【中文标题】未设置 PayPal IPN $_POST[\'txn_id\']【英文标题】: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 感谢您的编辑。这很有帮助。我下面的解释应该可以解决您的问题。 【参考方案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。 -- 您可以使用invoicecustom,您将在您的IPN 中看到这些。 取消不是交易;没有交易发生,因此没有 txn_id 可用。您可以通过subscr_id中的订阅ID识别订阅/定期付款。 关于subscr_id 的优点。虽然,很容易将取消与 transaction 混淆,因为它被归类为 transaction 类型。【参考方案2】:

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

【讨论】:

是的,我现在刚刚测试了 $_GET['txn_id'] 和 $_REQUEST['txn_id'] 并且它们没有设置

以上是关于未设置 PayPal IPN $_POST['txn_id']的主要内容,如果未能解决你的问题,请参考以下文章

Paypal ipn 未验证:无效

Paypal IPN,缺少 POST 数据

Paypal:IPN 侦听器未收到 IPN 消息

Paypal IPN 未检索变量

PayPal IPN POST 请求编码

Paypal:ipn响应问题