文章目录

  • 账单下载
  • 数据解析
    • 数据解析方法实现
    • 行标题与行数据对比
    • 数据对象TO
  • 与自有支付业务订单核对

账单下载

参考官网API

数据解析

数据解析方法实现
/*** 解析微信账单字符串数据为对象* Ps: 仅支持单天数据** @param result 微信账单字符串数据* @param date   账单日期 例: 2020-09-07* @return list* @author zhengshangjin* created on 2020-09-08*/
private List<WxPayBill> wxPayBillAnalysis(String result, String date) {List<WxPayBill> billList = new ArrayList<>();// 获取第一行列标题(仅演示 提交删除)String title = result.substring(0, result.indexOf("`"));List<String> titleArr = Arrays.stream(title.split(",")).collect(Collectors.toList());System.out.println("表格行标题:" + JsonUtils.toJson(titleArr));// 去除表格数据列标题result = result.substring(result.indexOf("`"));// 去除表格数据底部汇总String finalData = result.substring(0, result.indexOf("总")).replaceFirst(date, "").replaceAll("`", "");// 通过交易时间分割订单数String[] tradeArray = finalData.split(date);for (String trade : tradeArray) {String[] order = trade.split(",");// 获取表格行数据(仅演示 提交删除)List<String> orderArr = Arrays.stream(trade.split(",")).collect(Collectors.toList());System.out.println("表格行数据:" + JsonUtils.toJson(orderArr));WxPayBill bill = new WxPayBill();bill = bill.attach(order);bill.setCreateDate(date + order[0]);billList.add(bill);}return billList;
}
行标题与行数据对比

数据对象TO
/*** <p>* 微信账单对象* 注意:字段顺序为表格顺序* </p>** @author zhengshangjin* @version 1.0.0* @since 1.0.0* created on 2020-09-08*/
@Data
public class WxPayBill implements Serializable {private static final long serialVersionUID = 1L;/*** [0] 交易时间*/private String createDate;/*** [1] 公众账号ID*/private String appId;/*** [2] 商户号*/private String mchId;/*** [3] 特约商户号、子商户号*/private String subMchId;/*** [4] 设备号*/private String deviceInfo;/*** [5] 微信订单号*/private String wxOrderNo;/*** [6] 商户订单号*/private String mchOrderNo;/*** [7] 用户标识*/private String openId;/*** [8] 交易类型*/private String type;/*** [9] 交易状态*/private String status;/*** [10] 付款银行*/private String bank;/*** [11] 货币种类*/private String currency;/*** [12] 应结订单金额*/private String amount;/*** [13] 代金券金额*/private String envelopeAmount;/*** [14] 退款微信订单号*/private String refundWxOrderNo;/*** [15] 退款商户订单号*/private String refundMchOrderNo;/*** [16] 退款金额*/private String refundAmount;/*** [17] 充值券退款金额*/private String refundRechargeAmount;/*** [18] 退款类型*/private String refundType;/*** [19] 退款状态*/private String refundStatus;/*** [20] 商品名称*/private String goodsName;/*** [21] 商户数据包*/private String packet;/*** [22] 手续费*/private String poundage;/*** [23] 费率*/private String rate;/*** [24] 订单金额*/private String orderAmount;/*** [25] 申请退款金额*/private String applyRefundAmount;/*** 数据转换提取** @param order 订单数组* @return bill* @author zhengshangjin* created on 2020-09-08*/public WxPayBill attach(String[] order) {if (order == null || order.length < 1) {return null;}WxPayBill bill = new WxPayBill();bill.setAppId(order[1]);bill.setMchId(order[2]);bill.setSubMchId(order[3]);bill.setDeviceInfo(order[4]);bill.setWxOrderNo(order[5]);bill.setMchOrderNo(order[6]);bill.setOpenId(order[7]);bill.setType(order[8]);bill.setStatus(order[9]);bill.setBank(order[10]);bill.setCurrency(order[11]);bill.setAmount(order[12]);bill.setEnvelopeAmount(order[13]);bill.setRefundWxOrderNo(order[14]);bill.setRefundMchOrderNo(order[15]);bill.setRefundAmount(order[16]);bill.setRefundRechargeAmount(order[17]);bill.setRefundType(order[18]);bill.setRefundStatus(order[19]);bill.setGoodsName(order[20]);bill.setPacket(order[21]);bill.setPoundage(order[22]);bill.setRate(order[23]);bill.setOrderAmount(order[24]);bill.setApplyRefundAmount(order[25]);return bill;}
}

与自有支付业务订单核对

微信支付系统与自有业务系统对账实现相关推荐

  1. 【HBZ分享】突破微信支付系统--单秒600QPS这个上限

    突破微信支付系统–单秒600QPS这个上限 介绍需求 在秒杀环境下,可能出现一瞬间高达几千次的支付请求,但是微信官网明确规定,最高QPS只有600,那么要如何 突破这个600QPS的界限呢? 解决方案 ...

  2. oracle导出辅助账明细,AO2011导入国库集中支付系统3.0的辅助账

    AO2011导入国库集中支付系统3.0的辅助账 目前我省财政系统总预算软件已经升级至3.0,笔者在此分享一下导入该软件辅助账的过程,和大家共同研究. 该系统的收支明细使用了辅助核算,所以如果只导入科目 ...

  3. oracle导出辅助账明细,AO2011导入国库集中支付系统3.0的辅助账资料.doc

    AO2011导入国库集中支付系统3.0的辅助账 目前我省财政系统总预算软件已经升级至3.0,笔者在此分享一下导入该软件辅助账的过程,和大家共同研究. 该系统的收支明细使用了辅助核算,所以如果只导入科目 ...

  4. 停车场微信支付系统 本地服务器,一种基于微信支付的停车自动收费系统

    停车收费系统从最初的人工进出刷卡计费,到后来的摄像头监控计费,一直在进步中.随着移动支付系统的发展,如微信支付等,我想到了一种依靠电子支付方式的全自动停车收费系统. 车辆自动识别 首先,前提条件是收费 ...

  5. 微信技术专家:10亿人在用的微信支付系统架构实践!20页ppt详解

    点击"技术领导力"关注∆  每天早上8:30推送 作者:微信高级工程师 方秋枋 背景 作为一个重要业务,微信支付在客户端上面临着各种问题.其中最核心问题就是分平台实现导致的问题: ...

  6. 微信智慧支付日系统服务器崩溃,微信支付大面积出现故障 微信支付系统繁忙怎么解决 微信支付崩溃原因是什么...

    10月29日晚间,微信支付突然大面积出现故障,支付时显示错误,商家扫码枪显示失败,美团外卖.京东商城.滴滴出行等支持微信支付的软件中,均显示暂不能使用微信支付.如果直接用微信支付扫码付款,也会出现&q ...

  7. 微信支付系统--前后端完全分离

    目录 1.流程图 2.微信支付需要的依赖 3.创建一个Httpclient工具类-使用默认浏览器进行远程调用 4.创建实体类 5.后端 5.1解决跨域问题的配置类 5.2Controller层 5.3 ...

  8. 微信支付商户(自有)接入前准备

    接入前准备: 微信支付商户号仅对有营业执照的商家开放. 所需资料: (1)营业执照彩色扫描件或数码照片: (2)法人身份证彩色扫描件或数码照片: (3)对公账户(企业)/法人对私账户(个体工商户):户 ...

  9. 推荐一个 SpringBoot 2.x + vue 实现的个人支付宝、微信支付系统

    点击▲关注 "爪哇笔记"   给公众号标星置顶 更多摄影技巧 第一时间直达 前言 基于 SpringBoot2.x + Shiro 实现了用户管理.个人微信.支付宝支付,内置扫码支 ...

最新文章

  1. 王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
  2. 干掉 FastJson
  3. [BSidesSF2020]haystack
  4. 熟读《阿里巴巴java开发手册》(六、工程结构,七、 设计规约,专有名词解释)
  5. 解决mysql报错Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock
  6. IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹。如果重复不拷贝,可续拷
  7. 【codevs1078】最小生成树,prim算法
  8. Intellij IDEA 2019中Tomcat的部署
  9. 高光谱地物识别练习-从ENVI标准波普库中选择端元进行物质识别
  10. git SSH 公钥拉取代码(使用及配置)
  11. leapmotion 运行出错,看不到手势
  12. xml笔记(马士兵)
  13. 对DSP的基本了解(一)--DSP是什么?
  14. 多组两两比较用什么检验方法_方差分析中两两多重比较方法的含义及如何正确选择...
  15. 如何申请注册微软邮箱(支持海外apple ID注册)亲测
  16. linux cp指令报错:cp: -r not specified; cp: omitting directory ‘xxx‘(需要加-r递归拷贝)
  17. python计算2的平方代码_Python练习实例46 | 求输入数字的平方,如果平方运算后小于 50 则退出。...
  18. Linux 系统中成功恢复已删除的文件
  19. 可视化展示炫酷3D图表
  20. 南昌航空大学计算机专业好吗,南昌航空大学王牌专业是什么

热门文章

  1. Android中的二维码生成与扫描
  2. IL2CPP是什么?
  3. 2022-2027年中国车载移动电视行业发展监测及投资战略研究报告
  4. postgresql设置自动更新时间方法
  5. Stay Hungry Stay Foolish的真正含义
  6. 深度学习的坎坷六十年
  7. C语言 输入成绩按成绩输出等级
  8. 20162316刘诚昊 10月9日“查找课堂测试”
  9. 比尔及梅琳达·盖茨基金会承诺将投入最高1.2亿美元帮助低收入国家获取新冠药物...
  10. 古希腊数学家毕达哥拉斯数学题