0 - 访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400

use*_*461 9 paypal

我正在使用paypal rest API,但是我收到了一个错误.这是我的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

在我打电话之前一切正常 $payment->create($apiContext);

然后它显示此错误:

0 - 访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400 .

Mik*_*e T 16

如果将调用包装在try/catch块中并捕获PPConnectionException,则可以检查数据以准确查看错误:

// ...
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;
}
Run Code Online (Sandbox Code Playgroud)

  • 尽管异常命名空间是:`PayPal\Exception\PayPalConnectionException`,但这有所帮助 (7认同)

小智 12

我认为400的原因是你的subTotal + tax + shipping总和不合计.你应该能够在你得到的响应中检查原因,它应该包含一系列错误.

subTotal + tax + shipping = total

57.41 + 0.06 + 0.06!= 5.47