我总是收到来自paypal沙箱的“待定”[payment_status]响应,这就是我将数据插入数据库的代码根本不起作用的原因。每当我结帐并完成付款时,这是从返回的数据中获得的响应
Array
(
[mc_gross] => 12.00
[protection_eligibility] => Ineligible
[address_status] => confirmed
[item_number1] => 2
[payer_id] => TRCLJTHLNCJ7Q
[tax] => 0.00
[address_street] => 1 Main St
[payment_date] => 20:15:44 Jan 01, 2012 PST
[payment_status] => Pending
[charset] => windows-1252
[address_zip] => 95131
[mc_shipping] => 10.00
[mc_handling] => 0.00
[first_name] => Test
它总是待定,当有关付款的所有内容都已完成且测试帐户概述本身显示付款已完成时。
这就是为什么代码的这一部分由于“待定”事情而根本不起作用
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
if ($_POST['payment_status'] == 'Completed'
&& no_paypal_trans_id($_POST['txn_id'])
&& $paypal_email == $_POST['receiver_email']
&& $paypal_currency == $_POST['mc_currency']
&& payment_amount_correct($shipping, $_POST)
)
{
// process payment
create_order($_POST);
}
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
任何想法如何解决这个问题?或者为什么这会发生在PayPal的回复上?
答案 0 :(得分:12)
关闭https://developer.paypal.com/>上帐户的“付款审核” '测试帐户'。
注意:此信息也可在“pending_reason”响应中获得,该响应将提供更多描述性信息,以便其等待(因为您可能会看到这种情况发生在实时环境中,以便通过PayPal或echeck交易进行付款审核)。 / p>
答案 1 :(得分:3)
稍微处理这个问题& PayPal更改用户界面,
以下是来自 PayPal商家技术支持的确切说明:
感谢您与Merchant技术支持部门联系。
请尝试按照以下说明关闭沙盒帐户的付款审核功能:
!!! 确保您在 PayPal SandBox商家帐户上执行此操作!
&安培;这就是它的样子:
答案 2 :(得分:0)
如果Robert提供的“付款审核”解决方案不起作用,则可能发生的另一个原因是,如果买方有未经证实的地址或不同的货币,您的卖家帐户可以选择接受或拒绝付款。在这种情况下,您需要以卖家身份登录并接受付款,您将获得另一个IPN,其中包含payment_status =已完成
步骤:
答案 3 :(得分:0)
登录您的Sandbox开发者帐户。 单击“测试帐户”链接。 您应该在屏幕右侧看到您的测试帐户。 请注意“付款审核”列。 如果您看到帐户已启用,请点击它, 您现在应该看到已禁用。
此致
答案 4 :(得分:0)
我在发送错误的商家电子邮件地址时收到了此信息:
[pending_reason] =>单边
如果有人也会尝试更改您的商家(不是您的客户/买家,而是卖家)电子邮件地址。
答案 5 :(得分:0)
如果收到付款的沙盒帐户属于“个人”类型,则IPN将发送payment_status =待定。