Paypal Express Checkout REST: входящий JSON-запрос не сопоставляется с API-запросом
В настоящее время я пытаюсь реализовать Paypal Express Checkout, используя REST на стороне сервера в PHP (не используя SDK).
Насколько мне известно, я смог успешно создать платеж (я использую window.alert("На авторизацию" + data.payerID + "На авторизацию" + data.paymentID), чтобы показать, что оба значения существуют до EXECUTE_PAYMENT_URL), но страница выполнения платежа просто возвращается:
{"name": "MALFORMED_REQUEST", "message": "Входящий запрос JSON не соответствует запросу API.", "information_link": " https://developer.paypal.com/docs/api/payments/" "debug_id":"f6152303d0c3f"}
Я попытался сопоставить пример простой отправки через payer_id, но это не работает, и я не могу найти пример рабочего запроса, который я мог бы затем скопировать и заполнить соответствующими значениями для транзакции.
Кто-нибудь может определить, что я пропускаю / какая часть искажена? Или, может быть, знаете, где я могу найти, какие именно поля требует API?
$paymentID=$_REQUEST['paymentID'];
$payerID=$_REQUEST['payerID'];
/*
Code block that requests the current order ref, connects with the DB to get latest info for filling out the data json
*/
$data = '{
"payer_id": "'.$payerID.'",
"transactions": [
{
"amount":{
"total": "'.(($PostCost+$SubTotal)/100).'",
"currency":"GBP",
"details": {
"subtotal": "'.($SubTotal/100).'",
"shipping": "'.($PostCost/100).'",
"handling_fee": "1.00",
"shipping_discount": "-1.00"
}
}
}],
"intent": "authorize",
"payer": {
"payment_method": "paypal"
}
}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/payments/payment/$paymentID/execute/");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Authorization: Bearer ".$_SESSION['accesstoken'],
"Content-length: ".strlen($data))
);
$result = curl_exec($ch);
if(empty($result))die("Error: No response.");
else
{
}
Спасибо заранее:)