2014-03-26 67 views
6

我想讓PayPal REST API創建存儲在保險庫中的信用卡的付款。但是,每當我嘗試,並與在跳馬PayPal的API將掛起周邊半分鐘卡付款,然後給我下面的500錯誤:PayPal REST API返回信用卡令牌的服務器錯誤

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(''); 
$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); 
} 

如果我改變$useVaultfalse那麼付款將與交易將在開發者現身沙箱。 我用this guide at dev-tools.paypal.com,它似乎是具有相同的問題,因爲我(I獲得到步驟4 3,並將其打印出一個內部服務錯誤發生

回答

9

使用常用的測試CC就像當貝寶有時會拋出錯誤500你正在使用的那個,所以嘗試另一個,或者只是嘗試一個真正的CC號碼,只要你在沙箱模式,它不會向你收取任何費用或其他任何東西

+0

相當正確。 API目前在沙箱中,它正在運行,但我沒有修復ETA。 – tomwhipple

+0

謝謝。我不知道這是一個問題,只是貝寶沙箱API或什麼 –

+2

謝謝,非常令人沮喪,貝寶至少沒有提供有用的答覆年齡! – RogerRoger

相關問題