我正在尝试从api获取数据,将数据保存到我计划最终保存在数据库中的变量中。问题在于该项目引发了我无法解决的错误。
此代码用于PHP和JSON。我正在使用在线支付系统,我想将从回调接收的数据保存到我的数据库中。但是,我无法执行此操作,因为以JSON格式接收的数据提取出来非常麻烦。
这是我提取变量的 PHP代码:
$amount=$callbackData->Body->CallbackMetadata->Item[0]->Value;
$mpesaReceiptNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[1]->Value;
$balance=$callbackData->Body->stkCallback->CallbackMetadata->Item[2]->Value;
$b2CUtilityAccountAvailableFunds=$callbackData->Body->stkCallback->CallbackMetadata->Item[3]->Value;
$transactionDate=$callbackData->Body->stkCallback->CallbackMetadata->Item[4]->Value;
$phoneNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[5]->Value;
这是JSON数据:
{
“身体”:{
“ stkCallback”:{
“ MerchantRequestID”:“ 22571-1918158-1”,
“ CheckoutRequestID”:“ ws_CO_DMZ_357840864_13022019182443436”,
“ ResultCode”:0,
“ ResultDesc”:“服务请求已成功处理。”,
“ CallbackMetadata”:{
“项目”:[
{
“名称”:“金额”,
“值”:1.00
},
{
“名称”:“ MpesaReceiptNumber”,
“值”:“ NBD5TUW3AV”
},
{
“名称”:“余额”
},
{
“名称”:“交易日期”,
“值”:20190213182502
},
{
“名称”:“电话号码”,
“值”:254727304011
}
]
}
}
}
}
这是我遇到的错误:
[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:/home/vinemupw/public_html/project/callbacks/stkcallback.php中的stdClass :: $ CallbackMetadata行25 [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在/home/vinemupw/public_html/project/callbacks/stkcallback.php中的第26行 [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第26行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第26行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在/home/vinemupw/public_html/project/callbacks/stkcallback.php的第27行 [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第27行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第27行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:28行/home/vinemupw/public_html/project/callbacks/stkcallback.php中的stdClass :: $ CallbackMetadata [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第28行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第28行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中 [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:第30行/home/vinemupw/public_html/project/callbacks/stkcallback.php中的stdClass :: $ CallbackMetadata [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第30行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第30行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/伦敦] PHP警告:json_decode()期望参数1为字符串,在第64行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中给出的数组>
答案 0 :(得分:0)
您对响应进行json_decode吗?建议$ data保存您必须执行的json字符串
$arr = json_decode($data, true);
然后您可以使用以下方式访问ResultCode:
$arr['Body']['stkCallback']['ResultCode'];
访问项目列表
$callbackMetadata = $data['Body']['stkCallback']['CallbackMetadata'];
$amount = $callbackMetadata['Item'][0];
作为注释:json_decode中的第二个参数定义是否应返回assoc数组或对象。
编辑:您上面发布的json具有无效结构,您可能删除了一些值吗?