2014-04-25 14 views
8

Paypal rest API'sini kullanıyorum ancak bir hata alıyorum. Sonra bu hata gösterir ben $payment->create($apiContext);0 - https://api.sandbox.paypal.com/v1/payments/payment adresine erişirken Http yanıt kodu 400 aldım

arayana kadar

function makePaymentUsingPayPal($total, $currency, $paymentDesc, $returnUrl, $cancelUrl) { 

    // set billing address 
    $addr = new Address(); 
    $addr->setLine1('fh52 N Main ST'); 
    $addr->setCity('Johnstownfhf'); 
    $addr->setCountry_code('UK'); 
    $addr->setPostal_code('35345'); 
    $addr->setState('DF'); 

    // set credit card information 
    $card = new CreditCard(); 
    $card->setNumber('4111111111111111'); 
    $card->setType('visa'); 
    $card->setExpire_month('12'); 
    $card->setExpire_year('2015'); 
    $card->setCvv2('123'); 
    $card->setFirst_name('dgdg'); 
    $card->setLast_name('dgdgdShopper'); 
    $card->setBilling_address($addr); 

    $fi = new FundingInstrument(); 
    $fi->setCredit_card($card); 

    $payer = new Payer(); 
    $payer->setPaymentMethod("paypal"); 

    //$payer = new Payer(); 
    //$payer->setPayment_method('credit_card'); 
    //$payer->setFunding_instruments(array($fi)); 

    // Specify the payment amount.   
    $amountDetails = new Details(); 
    $amountDetails->setSubtotal('57.41'); 
    $amountDetails->setTax('0.06'); 
    $amountDetails->setShipping('0.06'); 

    $amount = new Amount(); 
    $amount->setCurrency('USD'); 
    $amount->setTotal('5.47'); 
    $amount->setDetails($amountDetails); 

    // ###Transaction 
    // A transaction defines the contract of a 
    // payment - what is the payment for and who 
    // is fulfilling it. Transaction is created with 
    // a `Payee` and `Amount` types 
    $transaction = new Transaction(); 
    $transaction->setAmount($amount); 
    $transaction->setDescription('sdgdfg This is the payment transaction description.'); 

    $redirectUrls = new RedirectUrls(); 
    $redirectUrls->setReturnUrl($returnUrl); 
    $redirectUrls->setCancelUrl($cancelUrl); 

    $payment = new Payment(); 
    $payment->setRedirectUrls($redirectUrls); 
    $payment->setIntent("buy"); 
    $payment->setPayer($payer); 
    $payment->setTransactions(array($transaction)); 

    //print_r($payment);exit; 
    $payment->create($apiContext); 

    // return $payment; 
} 

her şeyi iyi çalışır: İşte benim kodudur

0 - Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment .

+0

Aynı sorunu yaşıyorum, birisi bunu anladı mı? –

cevap

10

ben 400 sebebi olduğunu düşünüyorum senin SUBTOTAL + vergi nakliye toplamına kadar eklemez. Yanıtınızdaki sebebi kontrol etmelisiniz, bir dizi hata içermelidir.

+ 0,06

57,41 + 0,06! = 5.47

2

toplam

subtotal + vergi nakliye = aynı sorunu vardı. Sorun, iade edilen numaralı iletide geçirdiğim parametrelerde bulunan space idi.

// ... 
try { 
    $response = $pp_payment->create(); 
} catch (PayPal\Exception\PPConnectionException $pce) { 
    // Don't spit out errors or use "exit" like this in production code 
    echo '<pre>';print_r(json_decode($pce->getData()));exit; 
} 
14

, hata tam olarak ne olduğunu görmek için verileri inceleyebilir ve toplam doğru. Benim durumumda, sanal alan kullanıyordum ve toplamı ve alt toplamı dikkat etmedim. Bazı kuruşlar fark yaratıyorlar ve bir hata veriyorlardı, sadece değerleri düzeltiyorlardı ve düzgün çalışıyordu.

+6

Bu, istisna ad alanı olmasına rağmen yardımcı oldu: 'PayPal \ Exception \ PayPalConnectionException' – Iwazaru

+0

Hem yanıt hem de @ Iwazaru'nun yorumu çok yardımcı oldu. PayPal PHP SDK'sının 1.6.2 sürümü için istisna ad alanı artık "PayPal \ Exception \ PayPalConnectionException" –

0

Sen aratoplamlarını olmadığını tekrar kontrol etmelidir: Bir deneme/yakalama bloğunda çağrı sarın ve PPConnectionException yakalarsak

Make sure your $returnUrl and $cancelUrl are urlencoded if you are passing any special characters.

İlgili konular