Задать вопрос
@skands757

Как получить одно из значений ответа на запрос?

С моего сервера отправляется API запрос на другой сервер для получения транзакции.

Получаю такой ответ:
{"status":"success","1":{"transaction":"8025400","email":"Не указана","amount":"21.38","currency":"RUB","currency_amount":"20.00","comission_percent":"6.90","comission_fixed":"0.00","amount_profit":"20.00","method":"Не выбран","payment_id":"1618399991","description":"Покупка доступа на 2 дня","date":"2023-03-13 19:40:46","pay_date":"2023-03-13 19:40:46","transaction_status":"0","custom_fields":"null","webhook_status":"0","webhook_amount":"0"}}


Как из этого ответа взять значение "transaction_status"

И использовать его здесь:
if (! isset( transaction_status=0 )) // Вот как тут правильно написать?

{
  echo '  Статус транзакции = 0 ';
  
  exit(0);
}

unset( transaction_status=0 ); // И тут аналогично

echo ' Статус транзакции не равен 0 ';


Если простыми словами, то мне нужно чтобы если значение transaction_status равно 0, то показывало одно, а если значение равно 1, то показывало другое
  • Вопрос задан
  • 146 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
ValeriuCutebov
@ValeriuCutebov
Чтобы получить значение transaction_status из ответа на запрос, вам нужно сначала декодировать JSON-строку в массив PHP. Это можно сделать с помощью функции json_decode:

$response = '{"status":"success","1":{"transaction":"8025400","email":"Не указана","amount":"21.38","currency":"RUB","currency_amount":"20.00","comission_percent":"6.90","comission_fixed":"0.00","amount_profit":"20.00","method":"Не выбран","payment_id":"1618399991","description":"Покупка доступа на 2 дня","date":"2023-03-13 19:40:46","pay_date":"2023-03-13 19:40:46","transaction_status":"0","custom_fields":"null","webhook_status":"0","webhook_amount":"0"}}';
$data = json_decode($response, true);
$transaction_status = $data["1"]["transaction_status"];

Затем вы можете использовать переменную $transaction_status в своих условиях if / else:

if ($transaction_status == 0) {
  echo 'Статус транзакции = 0';
  exit(0);
} else {
  echo 'Статус транзакции не равен 0';
}

Надеюсь, это поможет!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HardBot
@HardBot
back-end, front-end developer
$obj = json_decode(тут json);
echo $obj->{"1"}->transaction_status;
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Я бы еще проверку на существование статуса добавил:
<?php
$response = '{"status":"success","1":{"transaction":"8025400","email":"Не указана","amount":"21.38","currency":"RUB","currency_amount":"20.00","comission_percent":"6.90","comission_fixed":"0.00","amount_profit":"20.00","method":"Не выбран","payment_id":"1618399991","description":"Покупка доступа на 2 дня","date":"2023-03-13 19:40:46","pay_date":"2023-03-13 19:40:46","transaction_status":"0","custom_fields":"null","webhook_status":"0","webhook_amount":"0"}}';
$data = json_decode($response, true);
$transaction_status = $data["1"]["transaction_status"] ?? -1;

switch ($transaction_status) {
    case -1:
      echo 'Статус транзакции неизвестен';
      exit(0);
    case 0:
      echo 'Статус транзакции = 0';
      exit(0);
    default:
        echo 'Статус транзакции не равен 0';
}


https://phpize.online/sql/mysql57/undefined/php/ph...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы