我正在使用php curl进行API调用。如果出现下降,我会得到这两种类型的回复;
如果由于号码无效而导致交易被拒绝
{ "结果":" ERROR", "消息":"交易被拒绝:无效的卡号" }
缺少任何字段时
{ "结果":" ERROR", " message":{ "地址":"是必填字段", " city":"是必填字段", "州":"是必填字段" } }
在API处理文件中,我将此错误存储在会话中,因此在错误处理页面上,我使用以下代码
foreach($_SESSION['error_message'] as $x => $x_value) {
echo ucfirst($x) . " " . $x_value;
echo "<br>";
这种方式如果缺少字段错误,一切都会正确显示。但是在案例1的情况下,当卡被拒绝时,它没有显示上面代码的响应,但是如果我只是回应
echo $_SESSION['error_message'];
它将显示错误响应。我想知道是否有更好的方法来处理这个问题,因此可以显示两个错误。
答案 0 :(得分:0)
测试$data->message
是数组还是字符串,然后执行foreach
或直接设置错误消息。将所需字段上的错误作为简单的字符串数组更好,使对象的格式更接近事务拒绝消息的内容,如果您可以控制如何生成JSON ...
即 -
{ "result": "ERROR", "message": { "address is a required field", "city is a required field", "state is a required field" } }
和
{ "result": "ERROR", "message": { "Transaction Declined: .... " }
}
<?php
$json1='{ "result": "ERROR", "message": "Transaction Declined: Invalid Card Number" }';
$json2='{ "result": "ERROR", "message": { "address": "is a required field", "city": "is a required field", "state": "is a required field" } }';
$obj=json_decode($json2);
if(is_object($obj->message)){
foreach($obj->message as $k=>$v){
$msg['error'][]="The field $k is a required field <br />";
}
}else{
$msg['error'][]=$obj->message;
}
print_r($msg);
?>
答案 1 :(得分:0)
你可以创建一个函数来接受字符串或数组并处理它:
FileSystemWatcher