我正在尝试从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”,“Value”:“NBD5TUW3AV”},{ “姓名”:“余额”},{ “名称”:“TransactionDate”,“Value”:20190213182502},{ “姓名”:“电话号码”,“价值”:254727304011}]}}}}
这是我得到的错误:
[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中的未定义属性:stdClass :: $ CallbackMetadata [201-Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[201-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'[21-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图获取/ home / vinemupw / public_html / project / callbacks / stkcallba中非对象的属性'Value' ck.php第26行[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:第27行/home/vinemupw/public_html/project/callbacks/stkcallback.php中的未定义属性:stdClass :: $ CallbackMetadata [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获取非对象的属性'Value'[201-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on 28 28 [13-Feb-2019 14:46:07 Europe /伦敦] PHP注意:尝试在第28行的[home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[21-Feb-2019 14:46:07 Europe / London] PHP注意:尝试在/ home / vinemupw / public_html / project / c中获取非对象的属性“Value”第28行[2009年2月13日14:46:07欧洲/伦敦] PHP注意:/ home /vinemupw第29行[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注意:未定义的属性:stdClass :: $ CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 30 [13-Feb-2019 14:46: 07欧洲/伦敦] PHP注意:尝试在第30行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[19-Feb-2019 14:46:07 Europe /伦敦] PHP注意:尝试在/ home / vinemupw / pub中获取非对象的属性“Value”第30行的lic_html / project / callbacks / stkcallback.php [19-Feb-2019 14:46:07欧洲/伦敦] PHP警告:json_decode()期望参数1为字符串,在/ home / vinemupw / public_html /中给出的数组第64行的project / callbacks / stkcallback.php
你有没有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结构无效,您是否删除了一些值?