• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP实现微信对账单处理

php 搞代码 4年前 (2022-01-01) 26次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了PHP实现微信对账单处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段来源gao.dai.ma.com搞@代*码网内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。

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 个字段为账单的汇总信息。因此通过循环就可以遍历整个账单。

大家有更好的解决方案,欢迎把代码贴出来一起交流!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是PHP实现微信对账单处理的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现微信对账单处理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址