PayPal REST API 为信用卡令牌返回 500 服务器错误
我正在尝试让 PayPal REST api 使用存储在保险库中的信用卡创建付款.但是,每当我尝试使用保险库中的卡付款时,PayPal 的 API 都会挂起大约半分钟,然后出现以下 500 错误:
I am trying to have the PayPal REST api create a payment with a credit card stored in the vault. But, whenever I try and make a payment with the card in the vault PayPal's API will hang for around half a minute, and then give me the following 500 error:
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"}
这是我正在使用的代码(如果这里信息过多,我深表歉意,我不知道哪些信息与我的问题相关)
This is the code I am using (I apologize if there is too much information here, I didn't know what information was pertinent to my problem)
<?php
include("bootstrap.php"); //Sample bootstrap file configured with my clientId and Secret, creates $apiContext
use PayPalApiCreditCard;
use PayPalApiPayer;
use PayPalApiFundingInstrument;
use PayPalApiDetails;
use PayPalApiAmount;
use PayPalApiTransaction;
use PayPalApiPayment;
use PayPalApiAddress;
use PayPalApiCreditCardToken;
$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 (PayPalExceptionPPConnectionException $ex) {
echo "Exception: " . $ex->getMessage() . PHP_EOL;
var_dump($ex->getData());
exit(1);
}
如果我将 $useVault
更改为 false
,那么将付款并且交易将显示在开发人员沙箱中.我在 dev-tools.paypal.com 上使用了本指南 它似乎和我有同样的问题(我到达第 3 步,共 4 步,它打印出发生内部服务错误
If I change $useVault
to false
then the payment will be made and the transaction will show up in the developer sandbox.
I used this guide at dev-tools.paypal.com and it seems to be having the same problem as me ( I get to step 3 of 4, and it prints that an internal service error has occured
推荐答案
Paypal 在使用常用的测试 CC 时有时会抛出错误 500,例如您正在使用的测试 CC,因此请尝试另一个或仅尝试使用真实的 CC 编号,只要您处于沙盒模式,它不会向您收取任何费用或类似费用.
Paypal sometimes throws error 500 when using frequently used test CC like the one you are using, so try another one or just try with a real CC number as long as you are in sandbox mode it won't charge you or anything like that.
相关文章