微信对账单 java_微信支付对账,你是如何处理的?
支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。
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 个字段为账单的汇总信息。因此通过循环就可以遍历整个账单。
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[微信支付对账,你是如何处理的?]http://www.zyiz.net/tech/detail-140097.html
微信对账单 java_微信支付对账,你是如何处理的?相关推荐
- 微信红包 java_微信支付-微信红包Java版本
https://zb.oschina.net/market/opus/1325c0ab3ac1f4b6 代码链接,可根据需求出方案与代码. 需要有认证的公众号,且开通了微信支付,商户平台且开通了现金红 ...
- 微信useragent java_微信内置浏览器和小程序的 User Agent 区别及判断方法
通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,而对于微信开发和小程序也是同样的一个情况,我们可以通过微信内置浏览器 User Agent 信息来判断其具体类型或者设备. 所以子凡就通过徒 ...
- 微信卡券 java_微信小程序领取卡券(java)
最近做了个领取微信卡券的小程序,看了很多文档资料以及花了很多时间才算搞定的,不过也算是好事多磨,这边记录分享一下,也算给一点提升. 一.开发前准备 1:申请微信公众号 和 微信小程序,这是两个不同的东 ...
- 微信useragent java_微信内置浏览器UserAgent的判断
需求分析 现在微信火了,很多线上的APP都希望通过分享的URL或直接的URL进行产品宣传(写这篇博文的时候,听说微信下个版本将要屏蔽微信中的URL链接),这些链接都将通过微信内置的浏览器打开.PM希望 ...
- java 微信 下载对账单_java下载微信对账单,实现与微信实收对账和日清日结对账...
最近接手了一个棘手的工作:微信下载对账单. 刚接手完全懵逼,怎么和微信对接啊.然后就是百度.. 终于找到了组织: 微信支付|开发文档 :点击跳转 通过文档我们可以看到,首先是: 1.下载对账单开放接口 ...
- 分享一些微信支付/分账后端代码及问题收录
微信官方支付接口地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 导入WXPayUtil <dependency> <grou ...
- 微信统一下单 java_微信支付之统一下单--JAVA版
都说微信支付有些坑,都抱怨微信支付的文档太烂,一会APPId,一会商户id,还有appsecret,支付API秘钥让你傻傻分不清楚,还有这里大写那里小写,几种标准,让你眼花缭乱.没错,这就是很多技术团 ...
- python 微信数据_python 处理微信对账单数据的实例代码
下面一段代码给大家介绍python 处理微信对账单数据,具体代码如下所示: #下载对账单并存储到数据库 @app.route("/bill/",methods=["GET ...
- 【PHP+微信开发】实现微信对账单处理
最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...
最新文章
- python快速写入hbase_Python生成HBase 10w+ 条数据说明
- databricks使用
- 【自动驾驶】3. DDS 数据分发服务(Data Distribution Service)
- 浙江等高等学校计算机,2010年浙江省高等学校计算机等级考试
- 织梦联动类别-地区调用不显示第三级城市的解决方法
- Python私有变量的用法
- 给Execl样式添加配置文件.
- 20190914:(leetcode习题)验证二叉搜索树
- Datatable转实体 实体转换辅助类
- 我踩过的支付通道的“坑”(一)
- c语言mergesort 参数,求教关于归并排序MergeSort()的问题
- 国外一些DICOM资源下载网址
- 饮用水配送管理系统项目解决方案
- 微信小程序设置底部导航栏
- 如何让IE9或IE8打开多个网页时只保留一个IEXPLORE.EXE进程
- linux bind日志级别,Bind日志配置。
- vue 将echarts的图片导出成pdf文件
- 打字练习。。又退步了
- Windows10 LTSC 2021 64位下载使用
- linux学习的几个网站
热门文章
- list排序(Collections.sort())
- ElasticSearch的update_by_query使用
- Java获取登录用户IP地址
- JDBC中使用preparedStatement防止SQL注入
- 千牛怎么注销卖家店铺_新店铺怎么拥有亚马逊购物车?亚马逊小卖家如何尽快获得黄金购物车?...
- java单元测试内存数据库_基于内存数据库的单元测试
- php高中级程序员面试题,PHP 程序员面试笔试常考面试题精讲
- 基本农田卫星地图查询_发现谷歌地图替代网站,卫星地图街景功能都能用
- java俄文xml解析错误,XML解析出错处理
- 查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...