Извлечение данных из конечной точки API Json и сохранение данных в массиве.В основном Создание переменных из данных Json, полученных от обратного вызова API - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь получить данные из API, сохраняя данные в переменные, которые я планирую, наконец, сохранить в базе данных.Проблема в том, что проект выдает ошибки, которые мне не удалось устранить.

Этот код предназначен для PHP и JSON.Я работаю над системой онлайн-платежей и хочу сохранить данные, полученные от обратных вызовов, в мою базу данных.Однако я не могу этого сделать, потому что данные, полученные в формате JSON, оказываются головной болью при его извлечении.

Вот код PHP о том, как я извлекаю переменные:

$amount=$callbackData->Body->CallbackMetadata->Item[0]->Value; $mpesaReceiptNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[1]->Value; $balance=$callbackData->Body->stkCallback->CallbackMetadata->Item[2]->Value; $b2CUtilityAccountAvailableFunds=$callbackData->Body->stkCallback->CallbackMetadata->Item[3]->Value; $transactionDate=$callbackData->Body->stkCallback->CallbackMetadata->Item[4]->Value; $phoneNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[5]->Value;

Вот данные JSON:

{  

"Тело": {
"stkCallback": {
«MerchantRequestID»: «22571-1918158-1», «CheckoutRequestID»: «ws_CO_DMZ_357840864_13022019182443436», «ResultCes»: 0, «ResultDesc»: «Запрос на обслуживание успешно обработан»., «CallbackMetadata:»* «Элемент»: [
{
«Имя»: «Сумма», «Значение»: 1,00}, {
«Имя»: «MpesaReceiptNumber», «Значение»: «NBD5TUW3AV»}, {
"Имя": "Баланс"}, {
"Имя": "Дата транзакции", "Значение": 20190213182502}, {
"Имя": "Номер телефона", "Значение": 254727304011}]}}}}

Вот ошибка, которую я получаю:

[13-Feb-2019 14:46:07 Europe / London] Примечание PHP: Неопределенное свойство: stdClass :: $ CallbackMetadata в / home / vinemupw / public_html / project/callbacks/stkcallback.php в строке 25 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Item' необъекта в / home / vinemupw / public_html / project / callbacks /stkcallback.php в строке 25 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: попытка получить свойство 'Value' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.phpв строке 25 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: неопределенное свойство: stdClass :: $ CallbackMetadata в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 26 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: попытка получить свойство Item для не-объекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 26 [13 февраля-201914:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Value' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 26 [13-Feb-2019 14:46: 07 Европа / Лондон] Примечание PHP: Неопределенное свойство: stdClass :: $ CallbackMetadata в / home / vinemupw / public_html / project / callbacks / stkcallback.php в строке 27 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Item' необъекта в / home / vinemupw / public_html / project/callbacks/stkcallback.php в строке 27 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: попытка получить свойство 'Value' необъекта в / home / vinemupw / public_html / project / callbacks /stkcallback.php в строке 27 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: неопределенное свойство: stdClass :: $ CallbackMetadata в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 28[13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Item' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 28 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: попытка получить свойство 'Value' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 28 [13 февраля-201914:46:07 Европа / Лондон] Примечание PHP: неопределенное свойство: stdClass :: $ CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 29[13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Item' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 29 [13-Feb-2019 14:46:07 Европа / Лондон] Примечание PHP: Попытка получить свойство 'Value' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 29 [13 февраля-201914:46:07 Европа / Лондон] Уведомление PHP: Неопределенное свойство: stdClass :: $ CallbackMetadata в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 30 [13-Фев-2019 14:46:07 Европа/ Лондон] Примечание PHP: Попытка получить свойство Item для необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 30 [13-Feb-2019 14:46:07 Европа / Лондон]Примечание PHP: Попытка получить свойство 'Value' необъекта в /home/vinemupw/public_html/project/callbacks/stkcallback.php в строке 30 [13-Feb-2019 14:46:07 Европа / Лондон] Предупреждение PHP:json_decode () ожидает, что параметр 1 будет строкой, а массив указан в / home / vinemupw / public_html / project / callbacks / stkcallback.php в строке 64

1 Ответ

0 голосов
/ 13 февраля 2019

Вы json_decode ответили?Предполагая, что $ data содержит строку json, которую вы должны сделать

$arr = json_decode($data, true); 

Затем вы можете получить доступ к ResultCode, например, с помощью:

$arr['Body']['stkCallback']['ResultCode'];

Для доступа к списку элементов

    $callbackMetadata = $data['Body']['stkCallback']['CallbackMetadata'];
    $amount = $callbackMetadata['Item'][0];

Как примечание: второй параметр в json_decode определяет, должен ли быть возвращен ассоциированный массив или объект.

Редактировать: JSON, который вы разместили выше, имеет недействительную структуру, возможно, вы удалили некоторые значения?

...