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

Posted

技术标签:

【中文标题】PayPal REST API 为信用卡令牌返回 500 服务器错误【英文标题】:PayPal REST API returning 500 Server error for credit Card Token 【发布时间】:2014-05-05 02:18:36 【问题描述】:

我正在尝试让 PayPal REST api 使用存储在保险库中的信用卡创建付款。但是,每当我尝试使用保险库中的卡付款时,PayPal 的 API 都会挂起大约半分钟,然后给我以下 500 错误:

Exception: Got Http response code 500 when accessing https://api.sandbox.paypal.com/v1/payments/payment.
"name":"INTERNAL_SERVICE_ERROR","message":"An internal service error has occurred","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#INTERNAL_SERVICE_ERROR","debug_id":"e3c779ea99f73"

这是我正在使用的代码(如果这里的信息太多,我很抱歉,我不知道哪些信息与我的问题有关)

<?php
include("bootstrap.php"); //Sample bootstrap file configured with my clientId and Secret, creates $apiContext
use PayPal\Api\CreditCard;
use PayPal\Api\Payer;
use PayPal\Api\FundingInstrument;
use PayPal\Api\Details;
use PayPal\Api\Amount;
use PayPal\Api\Transaction;
use PayPal\Api\Payment;
use PayPal\Api\Address;
use PayPal\Api\CreditCardToken;

$useVault = true;

$addr = new Address();
$addr->setLine1('52 N Main ST');
$addr->setCity('Johnstown');
$addr->setCountry_code('US');
$addr->setPostal_code('43210');
$addr->setState('OH');


$card = new CreditCard();
//Also used PayPal Sandbox account number here
$card->setNumber('4111111111111111');
$card->setExpire_month('03');
$card->setExpire_year('2019');
$card->setCvv2('123');
$card->setFirst_name('Joe');
$card->setLast_name('Shopper');
$card->setType('visa');
$card->setBilling_address($addr);
$fi = new FundingInstrument();

//Setting $useVault to false here
// will attempt to make the payment without storing the CC in the vault
// Which works. having it use the vault will return a 500 error
if($useVault)
    //use Store the CC in the vault
    $response = $card->create($apiContext);
    $ccToken = new CreditCartToken();
    $ccToken->setCredit_card_id($response->id);
    $fi->setCredit_card_token($creditCardToken);
else
    $fi->setCredit_card($card);



$payer = new Payer();
$payer->setPayment_method('credit_card');
$payer->setFunding_instruments(array($fi));
$amountDetails = new Details();
$amountDetails->setSubtotal('7.41');
$amountDetails->setTax('0.03');
$amountDetails->setShipping('0.03');


$amount = new Amount();
$amount->setCurrency('USD');
$amount->setTotal('7.47');
$amount->setDetails($amountDetails);
$transaction = new Transaction();
$transaction->setAmount($amount);
$transaction->setDescription('This is the payment transaction description.');

$payment = new Payment();
$payment->setIntent('sale');
$payment->setPayer($payer);
$payment->setTransactions(array($transaction));
try 
    var_dump($payment->create($apiContext));
 catch (PayPal\Exception\PPConnectionException $ex) 
    echo "Exception: " . $ex->getMessage() . PHP_EOL;
    var_dump($ex->getData());
    exit(1);

如果我将$useVault 更改为false,则会进行付款并且交易将显示在开发人员沙箱中。 我使用了this guide at dev-tools.paypal.com,它似乎和我有同样的问题(我进入第 3 步,共 4 步,它打印出发生了内部服务错误

【问题讨论】:

【参考方案1】:

Paypal 有时会在使用经常使用的测试 CC(如您正在使用的那个)时抛出错误 500,因此请尝试另一个或只尝试使用真实的 CC 号码,只要您处于沙盒模式,它就不会向您收费或类似的东西那个。

【讨论】:

非常正确。目前,沙盒中还有一个影响此 API 的问题。它正在处理中,但我没有修复 ETA。 谢谢。我不知道这只是 PayPal 沙盒 API 的问题还是什么 谢谢,非常令人沮丧的是 PayPal 至少没有提供有用的回复消息! 从来没有使用 Paypal API。总是抛出 500 错误。我在使用 Paypal 或其 API 时的体验非常糟糕。

以上是关于PayPal REST API 为信用卡令牌返回 500 服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST API - 沙盒为 API 请求返回 401 但访问令牌成功

PayPal Rest API 创建付款不返回销售 ID

Paypal Payment REST API 和信用卡支付

用于支付流的 Paypal PHP REST API

paypal rest api 更新存储的信用卡

paypal rest api 测试信用卡号码