PayPal с ошибкой возврата REST PHP 400

Я использую REST API на PHP, чтобы попытаться создать покупку PayPal, но я получаю только общую ошибку 400 всякий раз, когда я ее запускаю. По-видимому, это означает «плохой запрос», но подробностей нет. Вот основная часть моего кода:

define("PP_CONFIG_PATH", "../vendor/"); $apiContext = new ApiContext(new OAuthTokenCredential('-redacted-', '-redacted-')); // id, secret $addr = new Address(); $addr->setLine1($_POST['addr1']); if(isset($_POST['addr2']) && !empty($_POST['addr2'])) $addr->setLine2($_POST['addr2']); $addr->setCity($_POST['city']); $addr->setCountry_code($_POST['country']); $addr->setPostal_code($_POST['zip']); $addr->setState($_POST['state']); $addr->setPhone('9179261285'); // TODO put in actual phone $card = new CreditCard(); $card->setNumber($_POST['card_num']); $card->setExpire_month($_POST['expire_mon']); $card->setExpire_year($_POST['expire_yr']); $card->setCvv2($_POST['cvv2']); $card->setFirst_name($_GET['fname']); $card->setLast_name($_GET['lname']); $card->setBilling_address($addr); $fi = new FundingInstrument(); $fi->setCredit_card($card); $payer = new Payer(); $payer->setPayment_method('credit_card'); $payer->setFunding_instruments(array($fi)); $cost = $_POST['plan'] == 1 ? '19.95' : '29.95'; $amountDetails = new AmountDetails(); $amountDetails->setSubtotal($cost); $amountDetails->setTax('0.00'); $amountDetails->setShipping('0.00'); $amount = new Amount(); $amount->setCurrency('USD'); $amount->setTotal($cost); $amount->setDetails($amountDetails); $transaction = new Transaction(); $transaction->setAmount($amount); $transaction->setDescription('MyTrustCo membership subscription.'); $payment = new Payment(); $payment->setIntent('sale'); $payment->setPayer($payer); $payment->setTransactions(array($transaction)); try { $response = $payment->create($apiContext); } catch (PPConnectionException $e) { echo "<br />exception:<br />" . $e->getMessage() . "<br />"; } echo "response: " . $response; die(); 

Последняя часть кода выводит:

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

Я понятия не имею, что может вызвать эту ошибку. Я следовал этому руководству: https://developer.paypal.com/webapps/developer/docs/api/#create-a-payment

У меня была такая же проблема, но в итоге я обнаружил основную причину, взяв Exception вместо PPConnectionException (в соответствии с примером кода SDK, который обманул нас обоих). Как только я это сделал, мне удалось сбросить данные об исключениях, которые показали, что PayPal жаловался, что моя сумма транзакций не была отформатирована правильно – у меня была только одна цифра после десятичной точки. Если посмотреть на свой код выше, это вряд ли будет иметь место, но изменение обработчика исключений должно быстро выявить реальную проблему.

Вы также можете быть восприимчивы к проблеме форматирования для других значений, хотя в будущем вы можете решить следующее:

 money_format('%!i', $amount)