Php paypal API doExpressCheckoutPayment状态待定

Php paypal API doExpressCheckoutPayment状态待定,php,paypal,paypal-sandbox,Php,Paypal,Paypal Sandbox,我正在测试定期付款。在doExpressCheckoutPayment操作之后,我在我的沙盒paypal帐户中收到了挂起状态。为什么状态未完成?设置状态完成需要多长时间?或者可能需要在沙箱中设置一些参数。我使用默认设置。付款审核-已禁用。 谢谢 UPD 1: 这是我的申请代码: public function setPayment($plan){ $params = array( 'PAYMENTREQUEST_0_AMT' => '10.00',

我正在测试定期付款。在doExpressCheckoutPayment操作之后,我在我的沙盒paypal帐户中收到了挂起状态。为什么状态未完成?设置状态完成需要多长时间?或者可能需要在沙箱中设置一些参数。我使用默认设置。付款审核-已禁用。 谢谢

UPD 1: 这是我的申请代码:

public function setPayment($plan){
        $params = array(
            'PAYMENTREQUEST_0_AMT' => '10.00',
            'RETURNURL' => $this->base_url.'/paypal/response',
            'CANCELURL' => $this->base_url.'/paypal/paypal',
            'PAYMENTREQUEST_0_PAYMENTACTION' => 'Authorization',
            'PAYMENTREQUEST_0_CURRENCYCODE' => 'GBP',
            'PAYMENTREQUEST_0_DESC' => 'Testing PayPal recurring',
            'PAYMENTREQUEST_0_NOTIFYURL' => 'http://barton.netai.net/ipn.php',
            'L_BILLINGTYPE0' => 'RecurringPayments',
            'L_BILLINGAGREEMENTDESCRIPTION0' => 'SamePayments'
        );
    $this->_paypal->addFields($params);
    $response = $this->_paypal->request('SetExpressCheckout');
    if (strtoupper($response['ACK'])=='SUCCESS'){
        $token=$response['TOKEN'];
        header('Location: '.$this->_paypal->getPaypalUrl().'?cmd=_express-checkout&token='.$token);
        return true;
    } else {
        return false;
    }
}

public function responseAction(){
    if (isset($_GET['token']) && isset($_GET['PayerID'])){
        $this->_paypal->addFields(array('TOKEN'=>$_GET['token']));
        $response=$this->_paypal->request('GetExpressCheckoutDetails');
        if ($response['ACK']=='Success'){
            $response=array();
            $this->_paypal->addFields(array(
                                          'TOKEN' => $_GET['token'],
                                          'PAYMENTREQUEST_0_PAYMENTACTION' => 'Authorization',
                                          'PAYERID' => $_GET['PayerID'],
                                          'L_BILLINGTYPE0' => 'RecurringPayments',
                                          'L_BILLINGAGREEMENTDESCRIPTION0' => 'SamePayments',
                                          'PAYMENTREQUEST_0_AMT' => '10.00',
                                          'PAYMENTREQUEST_0_CURRENCYCODE' => 'GBP'
                                      ));
            $response=$this->_paypal->request('DoExpressCheckoutPayment');
            show($response); exit;
        }
    }
}
SetExpressCheckout响应:

    Array
(
    [TOKEN] => EC-01C99915Y11155245
    [TIMESTAMP] => 2012-02-24T10:23:32Z
    [CORRELATIONID] => 69e91a5abc347
    [ACK] => Success
    [VERSION] => 84
    [BUILD] => 2571254
)
 Array
(
    [TOKEN] => EC-2FR88291S31672645
    [SUCCESSPAGEREDIRECTREQUESTED] => false
    [TIMESTAMP] => 2012-02-24T10:26:08Z
    [CORRELATIONID] => a95c7a9bb64b3
    [ACK] => Success
    [VERSION] => 84
    [BUILD] => 2571254
    [INSURANCEOPTIONSELECTED] => false
    [SHIPPINGOPTIONISDEFAULT] => false
    [PAYMENTINFO_0_TRANSACTIONID] => 2RN165632T770592L
    [PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout
    [PAYMENTINFO_0_PAYMENTTYPE] => instant
    [PAYMENTINFO_0_ORDERTIME] => 2012-02-24T10:26:06Z
    [PAYMENTINFO_0_AMT] => 10.00
    [PAYMENTINFO_0_TAXAMT] => 0.00
    [PAYMENTINFO_0_CURRENCYCODE] => GBP
    [PAYMENTINFO_0_PAYMENTSTATUS] => Pending
    [PAYMENTINFO_0_PENDINGREASON] => authorization
    [PAYMENTINFO_0_REASONCODE] => None
    [PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Eligible
    [PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => ItemNotReceivedEligible,UnauthorizedPaymentEligible
    [PAYMENTINFO_0_SECUREMERCHANTACCOUNTID] => WLC8CZSP2C5L8
    [PAYMENTINFO_0_ERRORCODE] => 0
    [PAYMENTINFO_0_ACK] => Success
)
doExpressCheckoutPayment响应:

    Array
(
    [TOKEN] => EC-01C99915Y11155245
    [TIMESTAMP] => 2012-02-24T10:23:32Z
    [CORRELATIONID] => 69e91a5abc347
    [ACK] => Success
    [VERSION] => 84
    [BUILD] => 2571254
)
 Array
(
    [TOKEN] => EC-2FR88291S31672645
    [SUCCESSPAGEREDIRECTREQUESTED] => false
    [TIMESTAMP] => 2012-02-24T10:26:08Z
    [CORRELATIONID] => a95c7a9bb64b3
    [ACK] => Success
    [VERSION] => 84
    [BUILD] => 2571254
    [INSURANCEOPTIONSELECTED] => false
    [SHIPPINGOPTIONISDEFAULT] => false
    [PAYMENTINFO_0_TRANSACTIONID] => 2RN165632T770592L
    [PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout
    [PAYMENTINFO_0_PAYMENTTYPE] => instant
    [PAYMENTINFO_0_ORDERTIME] => 2012-02-24T10:26:06Z
    [PAYMENTINFO_0_AMT] => 10.00
    [PAYMENTINFO_0_TAXAMT] => 0.00
    [PAYMENTINFO_0_CURRENCYCODE] => GBP
    [PAYMENTINFO_0_PAYMENTSTATUS] => Pending
    [PAYMENTINFO_0_PENDINGREASON] => authorization
    [PAYMENTINFO_0_REASONCODE] => None
    [PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Eligible
    [PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => ItemNotReceivedEligible,UnauthorizedPaymentEligible
    [PAYMENTINFO_0_SECUREMERCHANTACCOUNTID] => WLC8CZSP2C5L8
    [PAYMENTINFO_0_ERRORCODE] => 0
    [PAYMENTINFO_0_ACK] => Success
)
在我之前的文章中,您建议我安装PAYMENTREQUEST\u 0\u PAYMENTACTION进行销售,
也许这有助于我解决这个问题?

如另一个问题中所述,替换

'PAYMENTREQUEST_0_PAYMENTACTION' => 'Authorization',


当您将PAYMENTREQUEST\u 0\u PAYMENTACTION设置为“授权””时,意味着您要求PayPal检查资金是否可用,如果可用,则暂停72小时。您最多有29天的时间获取授权,当您获取授权时,资金仅保留三天。29天期限的前72小时被称为“荣誉期”,这意味着贝宝保证资金可用

  • 在大多数情况下,根据具体情况,会发生三天的扣留 发卡银行,或银行本身在ACH交易中,如 借记卡。在某些情况下,三天的扣留被放弃,而在 在其他情况下,信用卡可能会被扣留30天或更长时间 直到下一个计费周期
  • 如果您决定在交易的最后三天内获取资金 29天期限内,这些基金持有至29天结束 而不是通常的三天
  • 您可以捕获少于原始授权金额的完整数据 金额,或比原始授权高出115%或75美元, 以较小者为准
当您将PAYMENTREQUEST\u 0\u PAYMENTACTION设置为“Sale”时,将在不持有资金的情况下处理付款。资金将立即从买家的资金来源转移到您的PayPal帐户余额

  • 您可以对交付的东西使用“销售”选项 很快,如数字商品或产品,只要你 收到订单
  • 资金立即从买方的资金来源获得,并且 发送到您的贝宝帐户余额

请包含完整的SetExpressCheckout和DoExpressCheckoutPayment API请求和响应。此外,您在完成交易时选择了什么资金来源?我添加了请求和响应,请参阅UPD1@YuriyNedostup当您这样提供时,PAYMENTREQUEST\u 0\u NOTIFYURL是否正常工作?我的意思是,它应该只在DoExpressCheckoutPayment中提供并且在SetExpressCheckout中被忽略时才起作用(根据:)。似乎PayPal api为ExpressCheckOutPayment提供了一个错误的示例。如果您打算使用授权和捕获,授权也是一个完全有效的值。我的意思是,PayPal第22页的快速结帐指南使SetExpressCheckout与“PAYMENTREQUEST\u 0\u PAYMENTACTION”等同于销售,但下面使用的“PAYMENTREQUEST\u 0\u PAYMENTACTION”等同于授权DoExpressCheckoutPayment@PayPal_Robert 你能帮我吗