php提取微信账单的有效信息


Posted in PHP onOctober 01, 2018

最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,微信账单接口返回为一个字符串类似如下结果:

程序需要实现的功能就是从这个字符串从提取每一笔订单中的有效信息,参考代码如下:

function deal_wechat_return_result($reponse)
 {
 $result = array();
 $reponse = str_replace(","," ",$reponse);
 $reponse = explode("`",$reponse);
 $total_order_count =( count($reponse) - 6 ) / 24;
 for($i = 0; $i< $total_order_count; $i++)
 {
  $base_index = 24 * $i;
  $result[$reponse[$base_index + 7]] = array(
  'wechat_order_no' => $reponse[$base_index + 6],
  'order_count' => $reponse[$base_index + 13],
  'order_discount' => $reponse[$base_index + 23]
  );
 }
 return $result;
 }

主要的思路是微信账单返回的结果格式是固定的,可以用 '`' 实现字符串的分割,然后每 24 个 字段为一个订单的描述信息,最后 6 个字段为账单的汇总信息。因此通过 for 循环就可以遍历整个账单,代码里面只取了我需要的字段,如果还需要其它的字段可按照此格式自行加入即可。

代码还有以下几点有待完善:

1. 没有考虑字符串特别大的情况,可能会导致 php 进程分配的内存耗尽,对于普通的商户订单,每天成交量不是特别大的情形是够用的。

2. 默认了微信返回的格式是固化的,其实可以根据微信返回的字符串头和尾进行动态的匹配。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
开发大型 PHP 项目的方法
Jan 02 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
php伪静态之APACHE篇
Jun 02 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
各种快递查询--Api接口
Apr 26 PHP
YII分模块加载路由的实现方法
Oct 01 #PHP
php实现微信公众号企业转账功能
Oct 01 #PHP
详解json在php中的应用
Sep 30 #PHP
php实现数组重复数字统计实例
Sep 30 #PHP
PHP APP微信提现接口代码
Sep 30 #PHP
PHP实现微信提现功能
Sep 30 #PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 #PHP
You might like
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python全局变量操作详解
2015/04/14 Python
5种Python单例模式的实现方式
2016/01/14 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
pytorch forward两个参数实例
2020/01/17 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
Android面试宝典
2013/08/06 面试题
简历的自我评价范文
2014/02/04 职场文书
家长评语和期望
2014/02/10 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python