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_MySQL教程-第一天
Mar 18 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
php笔记之:数据类型与常量的使用分析
May 14 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
调试php程序的简单步骤
Oct 04 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
产品销售员岗位职责
2013/12/18 职场文书
学校岗位设置方案
2014/01/16 职场文书
中秋节超市促销方案
2014/01/30 职场文书
远程教育学习心得体会
2016/01/23 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
详解MySQL连接挂死的原因
2021/05/18 MySQL
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL