PHP实现微信对账单处理
网络编程 2021-07-04 23:24www.168986.cn编程入门
这篇文章主要为大家详细介绍了PHP实现微信对账单处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。
Ps至于如何调用微信接口下载对账单,在微信的官方SDK包中就有现成的方法,直接调用即可。注意对账单接口一次只能查询一天的数据。代码大致如下
// 引入微信sdk文件 require_once APP_DIR . '/ome/lib/wxpay/lib/WxPay.Api.php'; require_once APP_DIR . '/ome/lib/wxpay/log.php'; // 实列化下载对账单对象 $input = new WxPayDownloadBill(); // 对账单日期 $input->SetBill_date(date("Ymd", strtotime("-1 day"))); // 对账单类型 $input->SetBill_type('ALL'); // 获取账单信息 $downloadBillResult = WxPayApi::downloadBill($input);
打印$downloadBillResult就会发现他是一个数据文本(string),本文程序需要实现的功能就是从这个字符串从提取每一笔订单中的有效信息,参考代码如下
/ 微信对账单数据处理 @param $response 对账单数据 @return array 返回结果 / public function deal_WeChat_response($response){ $result = array(); $response = str_replace(","," ",$response); $response = explode(PHP_EOL, $response); foreach ($response as $key=>$val){ if(strpos($val, '`') !== false){ $data = explode('`', $val); array_shift($data); // 删除第一个元素并下标从0开始 if(count($data) == 24){ // 处理账单数据 $result['bill'][] = array( 'pay_time' => $data[0], // 支付时间 'APP_ID' => $data[1], // app_id 'MCH_ID' => $data[2], // 商户id 'IMEI' => $data[4], // 设备号 'order_sn_wx' => $data[5], // 微信订单号 'order_sn_sh' => $data[6], // 商户订单号 'user_tag' => $data[7], // 用户标识 'pay_type' => $data[8], // 交易类型 'pay_status' => $data[9], // 交易状态 'bank' => $data[10], // 付款银行 'money_type' => $data[11], // 货币种类 'total_amount' => $data[12], // 总金额 'coupon_amount' => $data[13], // 代金券或立减优惠金额 'refund_number_wx' => $data[14], // 微信退款单号 'refund_number_sh' => $data[15], // 商户退款单号 'refund_amount' => $data[16], // 退款金额 'coupon_refund_amount' => $data[17], // 代金券或立减优惠退款金额 'refund_type' => $data[18], // 退款类型 'refund_status' => $data[19], // 退款状态 'goods_name' => $data[20], // 商品名称 'service_charge' => $data[22], // 手续费 'rate' => $data[23], // 费率 ); } if(count($data) == 5){ // 统计数据 $result['summary'] = array( 'order_num' => $data[0], // 总交易单数 'turnover' => $data[1], // 总交易额 'refund_turnover' => $data[2], // 总退款金额 'coupon_turnover' => $data[3], // 总代金券或立减优惠退款金额 'rate_turnover' => $data[4], // 手续费总金额 ); } } } return $result; }
返回的数据分为2部分,bill节点下存放的是具体流水数据,summary节点下存放的是统计数据
主要的思路是微信账单返回的结果格式是固定的,可以用 '`',换行符(PHP_EOL)实现字符串的分割,然后每 24 个 字段为一个订单的描述信息, 6 个字段为账单的汇总信息。通过循环就可以遍历整个账单。
大家有更好的解决方案,欢迎把代码贴出来一起交流!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
上一篇:微信企业转账之入口类分装php代码
下一篇:php提取微信账单的有效信息
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程