使用 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
?>
我目前正在使用他们的 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
?>