I am using the REST API in PHP to try and create a PayPal purchase, but I only get a generic 400 error whenever I run it. Apparently this means bad request, but there are barely any details given. Here is the main portion of my code:
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();
The last part of the code outputs:
exception:
Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment.
got response
response:
I have no idea what could be causing this error. I was following this tutorial: https://developer.paypal.com/webapps/developer/docs/api/#create-a-payment