【问题标题】:why am I getting payment_status as pending on paypal sandbox?为什么我在 paypal 沙箱上收到 payment_status 为待处理?
【发布时间】:2012-01-02 04:24:28
【问题描述】:

我总是从贝宝沙箱收到“待处理”[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);
}

任何想法如何解决这个问题?或者为什么贝宝返回的响应会发生这种情况?

【问题讨论】:

  • 币种相同时会出现这种情况吗? (如果你要美元而他用欧元支付,我认为状态将处于待处理状态)
  • 我只用美元,我不知道在沙盒上它给了我一个待定状态,它已经完成了

标签: php paypal


【解决方案1】:

https://developer.paypal.com/ 上的帐户关闭“付款审核”>“测试帐户”。

注意:此信息也可在“pending_reason”响应中找到,这将提供更多描述性信息为什么它处于待处理状态(您可能会在实时环境中看到这种情况发生在 PayPal 或电子支票交易的付款审查中)。

【讨论】:

  • 我关闭了付款审查..现在我不知道为什么会收到完整的状态..但是数据仍然不会进入我的 db 表中...在那里一种从 paypal.php IPN 文件中获取错误消息的方法?..就像抛出一个警告框来显示错误,为什么数据没有进入数据库?
  • 使用 error_log() (php.net/manual/en/function.error-log.php) 在每一步写入日志
  • 我将 paypal 数据的插入移动到 db,移动到我网站的另一个区域。paypal.php 对我根本不起作用
  • 如何在paypal live网站上禁用支付审核...?
  • PayPal Live 网站上的付款审核只发生在少数交易中,通常不会超过 24 小时。如果您有 PayPal 的客户经理,您可以与他们讨论,但我不认为可以禁用它。
【解决方案2】:

在稍微处理了这个问题 & PayPal 更改了 UI 之后,

以下是 PayPal 商家技术支持的具体说明:

感谢您联系商家技术支持。

请尝试按照以下说明为您的 Sandbox 帐户关闭付款审核功能:

  • 转到PayPal Developer Website
  • 登录您的开发者帐户
  • 点击应用程序
  • 点击沙盒帐户
  • 点击您要关闭“付款审核”选项的电子邮件地址,然后在展开后点击“个人资料”
  • 点击设置
  • 然后选择关闭进行付款审核。
  • 点击关闭

!!!确保您在您的PayPal SandBox 商家帐户上执行此操作!

&这就是它的样子:

【讨论】:

  • 其他详细信息+“待处理”交易的原因:stackoverflow.com/questions/18037648/…
  • 我已经更改了您显示的设置,但仍然得到相同的 payment_status = 'Pending' 我还需要做些什么才能使其正常工作
  • 你尝试过@Robert 的建议吗?
【解决方案3】:

如果接收付款的沙盒帐户类型为“个人”,则 IPN 将发送 payment_status=Pending。

【讨论】:

    【解决方案4】:

    如果 Robert 提供的“付款审核”解决方案不起作用,另一个可能发生的原因是,如果买家有未确认的地址或不同的货币,您的卖家账户可以选择接受或拒绝付款。在这种情况下,您需要以卖家身份登录并接受付款,您将获得另一个 IPN,payment_status=Completed

    步骤:

    1. 打开贝宝沙盒
    2. 按左侧的“测试帐户”
    3. 选择卖家账号,点击底部“进入沙盒测试站点”
    4. 您应该会看到所有付款,并可选择接受或拒绝每一笔付款

    【讨论】:

      【解决方案5】:

      登录您的沙盒开发者帐户。 单击测试帐户链接。 您应该会在屏幕右侧看到您的测试帐户。 请注意付款审核列。 如果您看到为您的帐户启用,请单击它, 您现在应该会看到已禁用。

      问候,

      【讨论】:

        【解决方案6】:

        我在发送错误的企业电子邮件地址时收到了此信息:

        [pending_reason] => 单方面

        如果有人也有这种情况,请尝试更改您的业务(不是您的客户/买方而是卖方)电子邮件地址。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-27
          • 2015-07-21
          • 2012-04-26
          • 2016-08-06
          • 2021-10-04
          • 2013-06-08
          • 2012-12-16
          相关资源
          最近更新 更多