Преобразовать объект в массив для отображения ошибок с помощью Square API - PullRequest
0 голосов
/ 28 июня 2018

В настоящее время я использую метод оплаты SquareUp, используя их Connect V2 API. Обработка платежа работает нормально, однако я хотел бы, чтобы на экране отображались любые ошибки, например, если карта отклоняется.

<code>} catch (\SquareConnect\ApiException $e) {
  echo "Caught exception!<br/>";
  print_r('<strong>Details:</strong><br/>');
  echo "<pre>";
  var_dump($e->getResponseBody());

  echo "
"; }

Когда я выкидываю все значение getResponseBody, я получаю результат ниже, однако я просто хочу вывести строку в свойство 'detail'. Я думал, что, возможно, преобразование в массив поможет, но, честно говоря, я не уверен.

object(stdClass)#20 (1) {
  ["errors"]=>
  array(1) {
    [0]=>
    object(stdClass)#21 (3) {
      ["category"]=>
      string(20) "PAYMENT_METHOD_ERROR"
      ["code"]=>
      string(13) "CARD_DECLINED"
      ["detail"]=>
      string(14) "Card declined."
    }
  }
}

Я пытался сделать это, однако он ничего не выгружает внутри , где при выводе всего $e->getResponseBody() выводится .

$json = file_get_contents($e->getResponseBody());
$obj = json_decode($json);
echo $obj->errors[0]->detail));

1 Ответ

0 голосов
/ 28 июня 2018

Сначала необходимо разрешить для ($obj->errors), а затем ссылаться на элементы массива, например:

<?php
$obj = (object)['errors' => [(object)['category' => 'PAYMENT_METHOD_ERROR', 'code' => 'CARD_DECLINED', 'detail' => 'Card declined']]];

echo ($obj->errors)[0]->category;   // output PAYMENT_METHOD_ERROR
echo '<br />';
echo ($obj->errors)[0]->code;       // output CARD_DECLINED
echo '<br />';
echo ($obj->errors)[0]->detail;     // output Card declined
?>
...