Не получается запарсить json-запрос удаленного сервера на PHP
Удаленный сервер обращается к моему с следующим запросом:
sendNotificationAsync(): url=****************/getReq.php, request.object={
"id" : "po-2e0b0050-0003-5000-a000-08b0474395ad",
"amount" : {
"value" : "65.00",
"currency" : "RUB"
},
"status" : "succeeded",
"payout_destination" : {
"type" : "bank_card",
"card" : {
"first6" : "*******",
"last4" : "****",
"card_type" : "Visa",
"issuer_country" : "RU",
"issuer_name" : "Alfa-Bank"
}
},
"description" : "SAFE_DEAL",
"created_at" : "2024-06-24T03:48:33.208Z",
"deal" : {
"id" : "****************"
},
"metadata" : {
"order_id" : "12120697"
},
"test" : false
}, headers=[Signature: v1 2e0b006a 1 MGQCMBM/d5VCjHLDz53bK7RAr93sm3G6ibYuw8C1tJANZKV8nOJx8mym5IjxiffdmiyxpgIwbGpvt/MdgHtrhArKscnmg//PyDF1xppgvrIx1FlK8tFHLJd1cB502FErxzP3hphJ, Content-Type: application/json, User-Agent: AHC/2.1, Accept: */*]
Ответ, который получает сервер:
END http request: method=POST, url=*********/getReq.php, status=200, time.ms=9
Исходя из того, что сервер отправляет application/json, пытаюсь спарсить данные из запроса на своей стороне:
$source = file_get_contents('php://input');
$requestBody = json_decode($source, true);
// Пробовал по разному, т.к. видел разные примеры.
file_put_contents("getReq1.txt", $requestBody["id"]." ".$requestBody["deal"]["id"]." ".$requestBody["status"]."1");
file_put_contents("getReq2.txt", $requestBody->id." ".$requestBody->deal->id." ".$requestBody->status." 1");
В файл записывается только " 1", приписываемая к концу строки, соответственно, к файлу обращение происходит, но данные не получается спарсить. Пробовал еще вариант просто получить $_POST запрос, но тоже неудачно:
$requestBody = json_decode($_POST, true);
file_put_contents("getReq1.txt", $requestBody->id." ".$requestBody->deal->id." ".$requestBody->status." 1");
file_put_contents("getReq2.txt", $_POST["id"]." ".$_POST["deal"]["id"]." ".$_POST["amount"]["value"]." ".$_POST["status"]."1");
Что делаю со своей стороны не так?
Ответы (1 шт):
Данная проблема показала важность использования отладки для решения возникающих проблем.
Главной составляющей отладки является проверка реально полученных данных на соответствие ожиданиям. Записав полученный JSON в файл, удалось выяснить, что данные имеют другую структуру. После указания правильных ключей в распакованном массиве, удалось получить нужные значения.