使用 Square API 将对象转换为数组以显示错误

Convert Object to Array to display errors using Square API

我目前正在使用他们的 Connect V2 API 实施 SquareUp 付款方式。处理付款工作正常,但我想将任何错误回显到屏幕上,例如,如果卡被拒绝。

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

  echo "</pre>";
}

当我转储整个 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."
    }
  }
}

我试过这样做,但它不会在 <pre></pre> 中转储任何内容,而转储整个 $e->getResponseBody() 会在 <pre></pre>.

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

您需要先解析 ($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
?>