Paypal IPN检查付款是否扣留

时间:2018-03-13 21:45:14

标签: php paypal paypal-ipn

我有一个PayPal IPN,效果很好。如果有人在我的主页上购买产品,他会收到一封带有产品密钥的电子邮件。到现在为止还挺好。 但现在我有一个问题。有时付款是扣留的,不能直接付款。问题往往是,人们买了一个产品然后还钱。我丢失了产品密钥(是的,我需要为此投资)和钱+我需要支付费用..

但我有个主意。如果有一个变量来检查付款是否成功并且我有钱,或者如果它是由paypal持有,我可以制作一个脚本。如果它被保留,则productkey将从数据库中删除,并使用变量

在另一个数据库中进行安全保护
$_POST['parent_txn_id'];

然后,如果钱在我的帐户上,IPN应该再次触发,对吗? 然后我只询问是否存在parent_txn_id的现有条目,如果是,则发送另一个数据库的内容,而不是主数据库。 我知道这听起来很混乱,但每次,如果我的PayPal账户上有一些动作,IPN应该被触发,对吧?所以我可以检查parent_txn_id。

现在我使用这个变量:

if (strcmp($readresp, "VERIFIED") == 0) {

}

我找到了变量“payment_status”。有值“已完成”和“待处理”。 PENDING我需要使用的变量?我查看了可能的pending_reason,但没有理由称为“持有因为paypal的保护”..

那么如何查看我的账户中的钱是扣留还是成功?

谢谢:)

2 个答案:

答案 0 :(得分:0)

是 “PENDING”是因任何原因持有的任何交易的状态

无论如何你不想发送产品密钥,除非状态为“已完成”,所以如果产品密钥已完成则发送产品密钥

答案 1 :(得分:0)

如果你设置了IPN,如果付款处于“暂停”状态,你应该收到一个带有payment_status =“PENDING”的IPN 当状态“PENDING”出现时。还应包括变量“pending_reason”。

您可以在此处参考:https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/