最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。
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 个字段为账单的汇总信息。因此通过循环就可以遍历整个账单。
大家有更好的解决方案,欢迎把代码贴出来一起交流!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
风云阁资源网 Design By www.bgabc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
风云阁资源网 Design By www.bgabc.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]