2015-03-25 2 views
1

Так что я играю с песочницей Paypal, и я только что реализовал транзакции с кредитными картами. Я внимательно следил за примером Paypal Dev, но, похоже, он постоянно возвращает ошибку. Я попробовал несколько кредитных карт. Все работало правильно, прежде чем я делал транзакции с прямыми кредитными картами.Paypal Sandbox Api Ошибка проверки?

<?php 
    use PayPal\Api\Payer; 
    use PayPal\Api\Details; 
    use PayPal\Api\Amount; 
    use PayPal\Api\Transaction; 
    use PayPal\Api\Payment; 
    use PayPal\Api\RedirectUrls; 
    use PayPal\Api\CreditCard; 
    use PayPal\Api\FundingInstrument; 
    use PayPal\Exception\PayPalConnectionException; 

    require 'protected/extensions/paypal/src/start.php'; 

    $payer = new Payer(); 
    $details = new Details(); 
    $amount = new Amount(); 
    $transaction = new Transaction(); 
    $payment = new Payment(); 
    $redirectUrls = new RedirectUrls(); 
    $card = new CreditCard(); 

    $card->setType("visa") 
     ->setNumber("4214024046137679") 
     ->setExpireMonth("03") 
     ->setExpireYear("2020") 
     // ->setCvv2("012") 
     ->setFirstName("asdf") 
     ->setLastName("asdf"); 

    $fi = new FundingInstrument(); 
    $fi->setCreditCard($card); 
    //PAYER 
    $payer->setPaymentMethod("credit_card") 
    ->setFundingInstruments(array($fi)); 

    //Details 
    //acutal prices(20 dollars is a test) 

    //Amount 
    $details->setShipping(0.0) 
     ->setSubtotal(20.00); 

    $amount->setCurrency("CAD") 
     ->setTotal(20.00) 
     ->setDetails($details); 

    //Transaction 
    $transaction->setAmount($amount) 
     ->setDescription('Membership'); 

    //Payment 
    $payment->setIntent("sale") 
     ->setPayer($payer) 
     ->setRedirectUrls($redirectUrls) 
     ->setTransactions(array($transaction)); 

    $payment->setRedirectUrls($redirectUrls); 

    try{ 
     $payment->create($api); 
     $currentId = Yii::app()->user->getId(); 

     $transactionHash = $payment->getId(); 
     // $_SESSION['transactionId'] = $transactionHash; 

     $update = Yii::app()->db->createCommand() 
     ->update('member', array(
     'transactionId'=> $transactionHash, 
     ), 'id=:id', array(':id'=> $currentId)); 

     var_dump($payment->create($api)); 

    } catch(PayPal\Exception\PayPalConnectionException $ex){ 
     echo $ex->getData(); 
    } 

    // $approvalUrl = $payment->getApprovalLink(); 

    // $redirectUrl = $payment->getHref(); 
    // header('Location: ' . $approvalUrl); 
    ?> 

Это ошибка она возвращается:

{ "имя": "VALIDATION_ERROR", "детали": [{ "поле": "payer.funding_instruments [0] .credit_card. number "," issue ":" Value is invalid "}, {" field ":" payer.funding_instruments [0] .credit_card.number "," issue ":" Must be numeric "}]," message ":" Invalid просьба - подробности см «„information_link“:» https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR»,„debug_id“:„d25b7c74793c9“}

+0

Вы нашли ответ на этот вопрос? У меня такая же проблема – AshanPerera

ответ

0

вы можете попробовать заменить приведенный ниже код и запустить как есть (дзю st для проверки), похоже, что вы обновили несколько строк кода, используя yii, потребовали файл и добавленные классы.

<?php 

// # CreatePaymentSample 
// 
// This sample code demonstrate how you can process 
// a direct credit card payment. Please note that direct 
// credit card payment and related features using the 
// REST API is restricted in some countries. 
// API used: /v1/payments/payment 

require __DIR__ . '/../bootstrap.php'; 
use PayPal\Api\Amount; 
use PayPal\Api\Details; 
use PayPal\Api\Item; 
use PayPal\Api\ItemList; 
use PayPal\Api\CreditCard; 
use PayPal\Api\Payer; 
use PayPal\Api\Payment; 
use PayPal\Api\FundingInstrument; 
use PayPal\Api\Transaction; 

// ### CreditCard 
// A resource representing a credit card that can be 
// used to fund a payment. 

$card = new CreditCard(); 
    $card->setType("visa") 
     ->setNumber("4214024046137679") 
     ->setExpireMonth("03") 
     ->setExpireYear("2020") 
     // ->setCvv2("012") 
     ->setFirstName("asdf") 
     ->setLastName("asdf"); 

// ### FundingInstrument 
// A resource representing a Payer's funding instrument. 
// For direct credit card payments, set the CreditCard 
// field on this object. 
$fi = new FundingInstrument(); 
$fi->setCreditCard($card); 

// ### Payer 
// A resource representing a Payer that funds a payment 
// For direct credit card payments, set payment method 
// to 'credit_card' and add an array of funding instruments. 
$payer = new Payer(); 
$payer->setPaymentMethod("credit_card") 
    ->setFundingInstruments(array($fi)); 

// ### Itemized information 
// (Optional) Lets you specify item wise 
// information 
$item1 = new Item(); 
$item1->setName('test SSL') 
    ->setCurrency('USD') 
    ->setQuantity(1) 
    ->setPrice('7.50'); 
$item2 = new Item(); 
$item2->setName('Granola bars') 
    ->setCurrency('USD') 
    ->setQuantity(5) 
    ->setPrice('2.00'); 

$itemList = new ItemList(); 
$itemList->setItems(array($item1, $item2)); 

// ### Additional payment details 
// Use this optional field to set additional 
// payment information such as tax, shipping 
// charges etc. 
$details = new Details(); 
$details->setShipping('1.20') 
    ->setTax('1.30') 
    ->setSubtotal('17.50'); 

// ### Amount 
// Lets you specify a payment amount. 
// You can also specify additional details 
// such as shipping, tax. 
$amount = new Amount(); 
$amount->setCurrency("USD") 
    ->setTotal("20.00") 
    ->setDetails($details); 

// ### Transaction 
// A transaction defines the contract of a 
// payment - what is the payment for and who 
// is fulfilling it. 
$transaction = new Transaction(); 
$transaction->setAmount($amount) 
    ->setItemList($itemList) 
    ->setDescription("Payment description"); 

// ### Payment 
// A Payment Resource; create one using 
// the above types and intent set to sale 'sale' 
$payment = new Payment(); 
$payment->setIntent("sale") 
    ->setPayer($payer) 
    ->setTransactions(array($transaction)); 

// ### Create Payment 
// Create a payment by calling the payment->create() method 
// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) 
// The return object contains the state. 
try { 
    $payment->create($api); 
} catch (PayPal\Exception\PPConnectionException $ex) { 
    echo "Exception: " . $ex->getMessage() . PHP_EOL; 
    var_dump($ex->getData()); 
    exit(1); 
} 
?> 
<html> 
<head> 
    <title>Direct Credit card payments</title> 
</head> 
<body> 
    <div> 
     Created payment: 
     <?php echo $payment->getId();?> 
    </div> 
    <pre><?php var_dump($payment->toArray());?></pre> 
    <a href='../index.html'>Back</a> 
</body> 
</html> 
Смежные вопросы