php 处理微信账单

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

交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,微信退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率 `2015-04-12 20:27:22,`wx554f0b3e56067c9d,`10024142,`0,`WJ4,`1000690206201504120059461630,`wx554f0b3e56067c9d1428841627,`oMfX0jgJjSPVvYOz3p_BP8LclWO0,`NATIVE,`SUCCESS,`CMB_CREDIT,`CNY,`71.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.42600,`0.60% `2015-04-12 18:08:38,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1001370206201504120059259734,`wx554f0b3e56067c9d1428833308,`oMfX0jhbQ1xd0B6Vm-kuizH9e9rs,`NATIVE,`SUCCESS,`COMM_DEBIT,`CNY,`92.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.55200,`0.60% `2015-04-12 19:12:06,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1001520206201504120059346120,`wx554f0b3e56067c9d1428837103,`oMfX0jj6h2ls1TsZEORs8WXRtSrE,`NATIVE,`SUCCESS,`CEB_CREDIT,`CNY,`69.60,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.41760,`0.60% `2015-04-12 13:03:25,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1002120206201504120058869224,`wx554f0b3e56067c9d1428814993,`oMfX0jtHOXPrCCWebdJEYl1eIzVg,`NATIVE,`SUCCESS,`CFT,`CNY,`16.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.10080,`0.60% `2015-04-12 12:20:39,`wx554f0b3e56067c9d,`10024142,`0,`WJ2,`1002560206201504120058795541,`wx554f0b3e56067c9d1428812423,`oMfX0jhBckNfxRDHp2lUiFxXlCYE,`NATIVE,`SUCCESS,`CCB_DEBIT,`CNY,`126.60,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.75960,`0.60% `2015-04-12 09:35:03,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058568869,`wx554f0b3e56067c9d1428802486,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CMBC_DEBIT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 09:23:20,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058569203,`wx554f0b3e56067c9d1428801789,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CMBC_DEBIT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:15:27,`wx554f0b3e56067c9d,`10024142,`0,`WJ5,`1003310206201504120058606779,`wx554f0b3e56067c9d1428804915,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:10:09,`wx554f0b3e56067c9d,`10024142,`0,`WJ5,`1003310206201504120058610924,`wx554f0b3e56067c9d1428804597,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:06:19,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058617007,`wx554f0b3e56067c9d1428804368,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 11:07:04,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1003310206201504120058692567,`wx554f0b3e56067c9d1428808013,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 11:27:07,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058735881,`wx554f0b3e56067c9d1428809215,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 16:24:48,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1003310206201504120059131508,`wx554f0b3e56067c9d1428827074,`oMfX0jk-zqqeyv7yZYEc4W1lWPVg,`NATIVE,`SUCCESS,`CFT,`CNY,`15.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.09480,`0.60% `2015-04-12 14:56:41,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1005430206201504120058999894,`wx554f0b3e56067c9d1428821791,`oMfX0jnw_NpAlwgSuJsyR8ocGSjI,`NATIVE,`SUCCESS,`CCB_DEBIT,`CNY,`42.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.25200,`0.60% `2015-04-12 13:00:00,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1006120206201504120058836372,`wx554f0b3e56067c9d1428814787,`oMfX0jnVvUaoR84XV8cP4ugcd9dk,`NATIVE,`SUCCESS,`PAB_CREDIT,`CNY,`16.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.10080,`0.60% `2015-04-12 16:13:48,`wx554f0b3e56067c9d,`10024142,`0,`WJ4,`1007560206201504120059119673,`wx554f0b3e56067c9d1428826408,`oMfX0jlf4aVHBY1nel1XuNvb2m1A,`NATIVE,`SUCCESS,`ABC_DEBIT,`CNY,`120.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.72000,`0.60% `2015-04-12 09:49:04,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1009550206201504120058567546,`wx554f0b3e56067c9d1428803335,`oMfX0juZ58OdofLgirvkqK0FPq-w,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% 总交易单数,总交易额,总退款金额,总企业红包退款金额,手续费总金额 `17,`571.40,`0.00,`0.00,`3.42840

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

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. 默认了微信返回的格式是固化的,其实可以根据微信返回的字符串头和尾进行动态的匹配。

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

时间: 2024-10-28 22:03:03

php 处理微信账单的相关文章

微信支付开发(3) 对账单

关键字:微信支付 微信支付v3  prepay_id 对账单作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3-bill.html 本文介绍微信支付下的对账单的开发实现流程. 注意 微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数.v2的相关介绍请参考方倍工作室的其他文章.本文介绍的为微信支付v3. 一.对账单数据接口 微信支付v3提供了对账单的数据接口,

摘录各组意见

1.one team: 3.扬梦之舟:界面较为简陋,功能少,可以连接支付软件检测支出. 4.盈风战队: 5.天码行空:怎么说呢,最厉害的地方是把功能都通过按钮化实现了,只不过没有和微信支付宝打通 6.逐梦人:作为好几个队都在做的记账类小软件,竞争相当之大,第一阶段实现了基本记账功能,包括主要的记账展示界面,只是界面有点不美观,这一点有望改进,实现了删除记录的基本功能,并且实现了微信支付功能.(事实上,我们还未实现提取微信支付账单) 7.口袋小组: 8.凯域软创: 9.灭霸小分队:界面设计简陋,基

Java+微信支付(下预购单+回调+退款+查询账单)

前言: 现在的APP的离不开微信支付, 现在项目里接入微信支付 , 微信支付的官方文档是:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1 . 也很明了,这里是我的示例. 作为客户端, 需要接入的功能大概四个: 1  下预购单, 这里生成签名去请求微信, 返回预购单交易号. 再拼接客户端需要的对象,让客户端发起支付. 2  回调接口, 当APP完成支付, 微信会调用商户的回调接口, 告诉回调结果. 3  退款, 发起的支

微信支付之下载账单

应用场景 商户可以通过该接口下载历史交易清单.比如掉单.系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态. 官方在线文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_6 注意: 1.微信侧未成功下单的交易不会出现在对账单中.支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED: 2.微信在次日9点启动生成前一天的对账单,建议商户10点后再获取: 3.对账单中涉及

微信第三方开发行业解决方案

服饰 微信订购:随时随地通过手机购买服装: 手机支付:支持支付宝/银联信用卡.储蓄卡: 广告促销:商品广告促销策略管理: 分享推广:朋友圈分享推广商品: 高清商品:支持滑屏高清商品图片展示: 商品评论:已购买会员对商品的评价. 餐饮 会员系统:关注微信公众平台即生成会员卡: 会员折扣:支持会员自动升级与分组折扣: 天天特价:每天展示一周内的特价商品: 在线预订:支持在线预订包厢服务: 电子菜牌:了解餐厅所有商品,推荐热卖等: LBS 位置:发送位置,自动获取最近餐厅. 新闻媒体 新闻对接:支持对

微信支付与支付宝钱包的竞争分析

NO1: 十九世纪七十年代起,“物竞天择,适者生存,优胜劣汰”已逐渐成为现代生物学的口号.而今,不知不觉中,它似乎也成了当代社会学的口号.罗素说:“竞争一直是,甚至从人类起源起就是对大部分激烈活动的剌激物.”所谓“长江后浪推前浪”,在人类资讯的迅速积累之下,如果不能追上时代,自然就要被淘汰了.竞争,已经成了当代社会政治经济发展的重要基础与必然趋势. 从远古时期的以物换物,到后来货币的出现,直到宋朝时第一张纸币“交子”问世,随着经济的不断发展,货币的形式也在不断地变化着. 2003年10月18日,

微信支付 接口

controler <?php /** * @name WxPayController * @author pangee * @desc 微信支付功能封装 */ $qrcodeLibPath = dirname(__FILE__).'/../library/ThirdParty/Qrcode/'; include_once( $qrcodeLibPath.'Qrcode.php' ); class WxpayController extends Yaf_Controller_Abstract {

官方教程:教你用好微信JS-SDK接口

微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在,小编就通过大量实战案例为大家逐一讲解,争取让大家都会用.且用好JS-SDK接口,赶紧往下看吧! 1.分享类接口:支持获取“分享到朋友圈”.“发送给朋友”.“分享到QQ”和“分享到微博”按钮的用户点击状态,同时支持自定义分享内容. 小编解读:说起分享接口应用,最常见的莫过于公众号文章分享.通过分享按钮

界面交互之支付宝生活圈pk微信朋友圈

作为一个优秀的设计师,不仅要知道自己的ui设计作品的优势和特色,也必须要看看一些大企业的app交互设计是怎样做的,因为流行的app交互设计很多时候都是反映着时代用户使用app的习惯,他们有大量的客户数据,有一个专业的消费着行为分析团结,因此大企业的APP是很有参照价值的. 下面我就来说一说微信朋友圈和支付宝生活圈的交互设计探讨. 前几天支付宝提示更新9.2版本,点开一看,果然不出所料,增加了朋友圈功能,叫做“生活圈”. 虽然名字不相同,内容却一样.支付宝又向微信再靠近了一步,这对爱恨缠绵的CP终