PHP支付回调:如何从merchant_data嵌套数组提取字段保存到TXT
如何从支付平台回调的嵌套JSON中提取指定字段并保存到TXT文件?
我来帮你搞定这个问题!你已经成功获取到支付平台的回调数据并能保存全部内容了,接下来只需要对merchant_data这个嵌套的JSON字符串做额外解析,就能提取出你需要的first name和phone值啦。
具体步骤说明:
- 解析嵌套的
merchant_data字符串:因为merchant_data本身是JSON格式的字符串,所以需要用json_decode()再次解析成数组,才能遍历提取里面的字段。 - 遍历数组找到目标字段:可以通过
label(比如first_name、phone)或者name来匹配对应的条目,取出value值。 - 将提取的值写入TXT文件:把拿到的first name和phone整理成合适的格式,用
file_put_contents()写入文件即可。
完整代码示例:
// 获取回调数据 $json = file_get_contents('php://input'); $obj = json_decode($json, true); // 解析merchant_data这个嵌套的JSON字符串 if (!empty($obj['merchant_data'])) { $merchantData = json_decode($obj['merchant_data'], true); // 初始化要提取的变量 $firstName = ''; $phone = ''; // 遍历数组,匹配目标字段 foreach ($merchantData as $item) { // 注意你提供的示例里label是"fist_name"(少了个r),如果是拼写错误记得改成"first_name" if ($item['label'] === 'fist_name') { $firstName = $item['value']; } elseif ($item['label'] === 'phone') { $phone = $item['value']; } } // 整理要保存的内容,格式可自定义 $saveContent = "First Name: {$firstName}\r\nPhone: {$phone}\r\n\r\n"; // 写入TXT文件,文件名可按需修改 file_put_contents('user_info.txt', $saveContent, FILE_APPEND | LOCK_EX); }
小提醒:
- 检查你提供的示例数据里
label的拼写:"label":"fist_name"可能是first_name的笔误,要是实际回调数据里是正确拼写,记得把代码里的匹配值改成first_name,不然会匹配不到哦。 - 加了
!empty($obj['merchant_data'])的判断,避免merchant_data为空时触发解析报错。 - 保存的内容格式和文件名都可以根据你的实际需求调整,比如改成逗号分隔的CSV格式也很方便。
内容的提问来源于stack exchange,提问作者Yrtymd
相关产品推荐
相关产品推荐

