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
{

}

Спасибо заранее:)

0 ответов

Другие вопросы по тегам