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

6

我正在使用PayPal沙盒来做一个订阅按钮,但当我收到订阅或取消订阅的IPN响应时,$_POST ['txn_id']永远不会设置。

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

谢谢!

编辑:例如,对于subscr_cancel,我在POST中拥有的所有信息是: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 custom payer_status business address_country address_city verify_sign payer_email btn_id last_name address_state receiver_email recurring txn_type item_name mc_currency residence_country test_ipn period1 period3 correlation_id


您能确认您确实收到了一个IPN到您的IPN URL吗?例如,是否设置了任何其他PayPal $_POST变量? - Josh
是的,我在POST中获取了所有其他数据,甚至包括txn_type,所以我没有txn_id很奇怪。 - Jerome Ansia
感谢您的编辑。这对我很有帮助。下面我的解释应该能够解决您的问题。 - Josh
2个回答

6
根据表格2. 订阅变量总结
对于订阅变量,交易ID(txn_id)仅适用于美元付款和多币种付款交易类型(txn_type)。
如预期所示,PayPal不会将txn_id发送到您的IPN,以进行交易类型subscr_cancel,并且只有当交易类型为subscr_payment时才会发送txn_id
有关根据交易类型向IPN URL发送哪些变量的进一步说明,请查看IPN和PDT变量

谢谢!好的,没有办法识别类型为subscr_cancel的交易以确保它是唯一的吗? - Jerome Ansia
如果您有自己独特的交易标识方法,或者您拥有支付交易的交易ID,则可以将自己的变量发送到PayPal,PayPal会返回给您的IPN。 -- 您可以使用 invoicecustom,并且您会在IPN中看到这些信息。 - Josh
1
取消并不是一项交易;没有任何交易发生,因此也没有可用的txn_id。您可以通过subscr_id中的订阅ID来识别订阅/循环付款。 - Robert
subscr_id 的观点很好。然而,由于它被归类为“交易”类型,因此很容易将取消与“交易”混淆。 - Josh

0

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


是的,我刚刚测试了一下 $_GET['txn_id'] 和 $_REQUEST['txn_id'],它们都没有设置。 - Jerome Ansia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接