Я бы хотел преобразовать этот curl (работающий в оболочке) в PHP. Это выглядит особенно, поскольку у него есть опция -F, 1 для содержимого JSON и 1 для ЗАГРУЗКИ ФАЙЛА.
Если код указан ниже, и являются действительными данными.
curl -X POST https://api.sandbox.paypal.com/v1/customer/disputes/<dispute_id>/provide-evidence \
-H "Content-Type: multipart/related; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-H "Authorization: Bearer <my_token>" \
-F 'input={
"evidence_type": "PROOF_OF_FULFILLMENT",
"evidence_info": {
"tracking_info": [
{
"carrier_name": "FEDEX",
"tracking_number": "122533485"
}
]
},
"notes": "Test"
};type=application/json' \
-F 'file1=img/myimg.png'
Но моя проблема в том, что это не работает:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, https://api.sandbox.paypal.com/v1/customer/disputes/<DISPUTE_ID>/provide-evidence);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$postFields = array
(
'input' => '{
"evidence_type": "PROOF_OF_FULFILLMENT",
"evidence_info": {
"tracking_info": [
{
"carrier_name": "FEDEX",
"tracking_number": "122533485"
}
]
},
"notes": "Test"
};type=application/json',
'file' => 'file1=img/myimg.png'
);
$boundary = uniqid();
$delimiter = '-------------' . $boundary;
$headers = array();
$headers[] = "Content-Type: multipart/related; boundary=" . $delimiter;
$headers[] = "Authorization: Bearer ".$token;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
$arr = json_decode($result);
return($arr);
У меня есть эта ошибка в ответ:
Array
(
[name] => VALIDATION_ERROR
[message] => Invalid request - see details
[debug_id] => 799d8c12dd477
[details] => Array
(
[0] => Array
(
[location] => body
[issue] => MISSING_OR_INVALID_REQUEST_BODY
)
)
[links] => Array
(
)
)
Кто-нибудь имел эту проблему в прошлом?
Спасибо