如何解决 Paypal 保险库信用卡收费失败

Posted

技术标签:

【中文标题】如何解决 Paypal 保险库信用卡收费失败【英文标题】:How to troubleshoot Paypal vault credit card charge failure 【发布时间】:2016-11-19 06:47:33 【问题描述】:

我正在尝试使用 Paypal 沙盒向 Paypal 保险库信用卡付款,但我无法弄清楚。似乎没有办法解决错误。它要么工作要么不工作,我没有体验过它工作。

我可以提取卡片列表,我可以检索特定卡片,但我无法向其中任何一张付款。

我正在使用 php Paypal SDK。这是 Paypal 看到的我的要求。


    "body": 
        "intent": "sale",
        "payer": 
            "payment_method": "credit_card",
            "funding_instruments": [
                
                    "credit_card_token": 
                        "credit_card_id": "CARD-6XP216179L970340WK6BNY5A",
                        "payer_id": "1"
                    
                
            ]
        ,
        "transactions": [
            
                "amount": 
                    "currency": "USD",
                    "total": "26.01"
                
            
        ]
    ,
    "header": 
        "x-pp-silover": "name\\u003dSANDBOX3.API.1\\u0026silo_version\\u003d1880\\u0026app\\u003dplatformapiserv\\u0026TIME\\u003d1702332759\\u0026HTTP_X_PP_AZ_LOCATOR\\u003d",
        "content-length": "233",
        "paypal-request-id": "323223593916288146862657311204",
        "x-slr-retry": "SLR-RETRY-EMPTY",
        "accept": "*/*",
        "client-auth": "No cert",
        "host": "api.sandbox.paypal.com",
        "user-agent": "PayPalSDK/PayPal-PHP-SDK 1.7.3 (platform-ver\\u003d5.6.23-2+deb.sury.org~xenial+1; bit\\u003d64; os\\u003dLinux_4.4.0-21-generic; machine\\u003dx86_64; crypto-lib-ver\\u003d1.0.2h; curl\\u003d7.47.0)",
        "x-slr-nobounce": "true",
        "x-slr-orig-script_uri": "https://api.sandbox.paypal.com/v1/payments/payment",
        "x-pp-corrid": "793fa20aaec8b",
        "pp_remote_addr": "99.99.99.1",
        "content-type": "application/json",
        "authorization": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxl4S0"
    ,
    "additional_properties": ,
    "method": "POST"

我将 IP 修改为比我当前分配的 IP。不知道发布是不是安全问题,不是保密的。

我正在使用的代码如下所示。

$apiContext = new \PayPal\Rest\ApiContext(
            new \PayPal\Auth\OAuthTokenCredential(
                $clientId,
                $secret
                )
            );

        $cardToken = new CreditCardToken();
        $cardToken->setCreditCardId($paymentMethod->getProcessorId());
        $cardToken->setPayerId("1");

        $fi = new FundingInstrument();
        $fi->setCreditCardToken($cardToken);

        $payer = new Payer();
        $payer->setPaymentMethod("credit_card")
        ->setFundingInstruments(array($fi));
        $amount = new Amount();
        $amount->setCurrency("USD")
        ->setTotal("26.01");

        $transaction = new Transaction();
        $transaction->setAmount($amount);

        $payment = new Payment();
        $payment->setIntent("sale")
        ->setPayer($payer)
        ->setTransactions(array($transaction));
        print_r($payment);

            $payment->create($apiContext);
            if ($payment->getState() == 'approved') 
                return TRUE;
            
            return FALSE;
         catch (Exception $ex) 
            print_r($ex);
        

$paymentMethod->getProcessorId() 是一个有效的信用卡保险库 ID,我可以从 Paypal 的沙箱中检索它。

这是 Paypal 的回复。


    "status": 500,
    "duration_time": 135,
    "body": 
        "message": "An internal service error occurred.",
        "information_link": "https://developer.paypal.com/webapps/developer/docs/api/#INTERNAL_SERVICE_ERROR",
        "name": "INTERNAL_SERVICE_ERROR",
        "debug_id": "793fa20aaec8b"
    ,
    "additional_properties": ,
    "header": 
        "Content-Length": "209",
        "Content-Language": "*",
        "X-SLR-RETRY": "500",
        "CORRELATION-ID": "793fa20aaec8b",
        "Date": "Fri, 15 Jul 2016 23:53:39 GMT",
        "Connection": "close",
        "Paypal-Debug-Id": "793fa20aaec8b",
        "PROXY_SERVER_INFO": "host\\u003dslcsbplatformapiserv3001.slc.paypal.com;threadId\\u003d569",
        "Content-Type": "application/json"
    

据我了解,内部错误只是意味着,有些事情是不正确的,但它并没有说明什么是不正确的。使用起来很烦人,它们在响应故障排除方面没有任何用处,而且显然没有通过 Paypal SB 仪表板检查的日志记录。

【问题讨论】:

【参考方案1】:

这是一个内部错误,因此它不会传达出了什么问题。在这里很难收到回复。

从 PayPal 获得回复的最佳选择是在以下地址创建一个帐户 https://www.paypal-techsupport.com/ 并使用 debug_id 在那边发布相同的问题。 (单击站点页脚中的联系支持)。他们会告诉它是什么类型的错误。我有从他们那里获得帮助的成功记录。

如果他们的回复花费的时间比在内部错误情况下获得帮助的第二个最佳位置是 https://github.com/paypal/PayPal-PHP-SDK 还要长,也可以在那里发布 debug_id。

【讨论】:

我这样做了,他们确实和我一起回来了。我需要使用这些卡号进行测试。签证:4716 3248 7603 0777 万事​​达卡:5453 9874 8085 6045 很少有信用卡在 PayPal Sandbox 中被过度使用,并导致奇怪的行为。想想一张有半百万账单地址的信用卡。这些问题在直播中得到了很好的解决,但在沙盒中,它会导致这些问题。最好的办法是使用独特的信用卡。您可以使用paypal-knowledge.com/infocenter/… 的第 4 步来帮助您创建一个,或者使用getcreditcardnumbers.com 来创建一个大批量。

以上是关于如何解决 Paypal 保险库信用卡收费失败的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 保险库存储 - 安全地发送信用卡信息

PayPal REST API 付款收款人

PayPal Android SDK 保险库

paypal Vault 是不是支持 SEK(瑞典)货币?

如何获取令牌以根据需要向授权的 PayPal 账户收费?

PayPal REST API 为信用卡令牌返回 500 服务器错误