支付宝与微信对账文件解析
一,对账文件解析
1)在支付中会涉及到对账问题,那么对账文件解析就是个较为棘手的事情,那今天就来看下常见的对账文件格式与解析;
二,常见对账文件格式
1)支付宝与微信的对账文件都是.csv格式,这样的对账文件可以使用exceld打开,也可以使用文本编辑器打开,
其他类型对账文件大多是XML文件,下面来看下是什么样子的文件
支付宝文件
1.样式
2.exceld打开样式
3.编辑器打开样式
微信文件
1.文本打开样式
XML文件
1.XML类型文件是我们常常遇到的类型,解析方式要根据内容情况来进行
三,解析
1)根据不同的内容设置不同的解析方法
2)微信csv文件解析示例(支付宝同理)
//读取文件File file = new File("F:/test/wexin.csv");//解决中文乱码InputStreamReader isr=null;BufferedReader buff =null;try {isr = new InputStreamReader(new FileInputStream(file), "UTF-8");buff = new BufferedReader(isr);String line=null;//数据容器List<WwXin> wxinlist=new ArrayList<WwXin>();WwXin wXin =null;while ((line=buff.readLine())!=null) {//去除`String replace = line.replace("`", "");String[] split = replace.split(",");//去除后两行,第一行也是不需要存到数据库的,在后续操作中去掉第一条数据if(split.length==24) {//符合要求wXin=new WwXin();wXin.setTime(split[0]);wXin.setId(split[1]);wXin.setShh(split[2]);wXin.setZshh(split[3]);wXin.setSbh(split[4]);wXin.setWxddh(split[5]);wXin.setShddh(split[6]);wXin.setYhbs(split[7]);wXin.setJylx(split[8]);wXin.setJyzt(split[9]);wXin.setFkyh(split[10]);wXin.setHbzl(split[11]);wXin.setZje(split[12]);wXin.setDjjlj(split[13]);wXin.setWxtkdh(split[14]);wXin.setHztkdh(split[15]);wXin.setTkje(split[16]);wXin.setLjje(split[17]);wXin.setTklx(split[18]);wXin.setTkzt(split[19]);wXin.setSbmc(split[20]);wXin.setShsjb(split[21]);wXin.setSxf(split[22]);wXin.setFl(split[23]);//添加 wxinlist.add(wXin);}}} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {if(isr!=null) {isr.close();}} catch (IOException e) {e.printStackTrace();}try {if(buff!=null) {buff.close(); }} catch (IOException e) {e.printStackTrace();}}
3)XMl文件解析(要根据具体格式具体解析)
List<AccountQueryAccountLogVO> list = new ArrayList<AccountQueryAccountLogVO>();try {//创建SAXReader对象读取proudct4.xml文件SAXReader reader = new SAXReader();//从本地读取文件,读取xmlFile file = new File("F:/test/2017-12-26.xml");Document document = reader.read(file);//读取根节点Element rootElement = document.getRootElement();//获取全部节点Iterator<Element> it1 = rootElement.elementIterator();//遍历子节点while(it1.hasNext()){//判断是否有下一个子元素//子节点Element productEle = it1.next();Iterator<Element> it2 = productEle.elementIterator();//遍历product标签的子元素while(it2.hasNext()){//获取每个子元素Element eles = it2.next();Iterator<Element> it3 = eles.elementIterator();while(it3.hasNext()){//获取每个子元素Element next = it3.next();Iterator<Element> it4 = next.elementIterator();AccountQueryAccountLogVO accountQueryAccountLogVO =null;while (it4.hasNext()) {Element next2 = it4.next();Iterator<Element> it5 = next2.elementIterator();accountQueryAccountLogVO= new AccountQueryAccountLogVO();while (it5.hasNext()) {Element next3 = it5.next();String name = next3.getName();switch (name) {case "balance":String data = (String)next3.getData();accountQueryAccountLogVO.setBalance(data);break;case "buyer_account":String buyerAccount = (String)next3.getData();accountQueryAccountLogVO.setBuyerAccount(buyerAccount);break;case "currency":String currency = (String)next3.getData();accountQueryAccountLogVO.setCurrency(currency);break;case "deposit_bank_no":String depositBankNo = (String)next3.getData();accountQueryAccountLogVO.setDepositBankNo(depositBankNo);break;case "goods_title":String goodsTitle = (String)next3.getData();accountQueryAccountLogVO.setGoodsTitle(goodsTitle);break;case "income":String income = (String)next3.getData();accountQueryAccountLogVO.setIncome(income);break;case "iw_account_log_id":String iwAccountLogId = (String)next3.getData();accountQueryAccountLogVO.setIwAccountLogId(iwAccountLogId);break;case "merchant_out_order_no":String merchantOutOrderNo = (String)next3.getData();accountQueryAccountLogVO.setMerchantOutOrderNo(merchantOutOrderNo);break;case "outcome":String outcome = (String)next3.getData();accountQueryAccountLogVO.setOutcome(outcome);break;case "partner_id":String partnerId = (String)next3.getData();accountQueryAccountLogVO.setPartnerId(partnerId);break;case "rate":String rate = (String)next3.getData();accountQueryAccountLogVO.setRate(rate);break;case "seller_account":String sellerAccount = (String)next3.getData();accountQueryAccountLogVO.setSellerAccount(sellerAccount);break;case "seller_fullname":String seller = (String)next3.getData();accountQueryAccountLogVO.setSellerAccount(seller);break;case "service_fee":String serviceFee = (String)next3.getData();accountQueryAccountLogVO.setServiceFee(serviceFee);break;case "sign_product_name":String signProductName = (String)next3.getData();accountQueryAccountLogVO.setSignProductName(signProductName);break;case "sub_trans_code_msg":String subTransCodeMsg = (String)next3.getData();accountQueryAccountLogVO.setSubTransCodeMsg(subTransCodeMsg);break;case "total_fee":String totalFee = (String)next3.getData();accountQueryAccountLogVO.setTotalFee(totalFee);break;case "trade_no":String tradeNo = (String)next3.getData();accountQueryAccountLogVO.setTradeNo(tradeNo);break;case "trade_refund_amount":String tradeRefundAmount = (String)next3.getData();accountQueryAccountLogVO.setTradeRefundAmount(tradeRefundAmount);break;case "trans_code_msg":String transCodeMsg = (String)next3.getData();accountQueryAccountLogVO.setTransCodeMsg(transCodeMsg);;break;case "trans_date":String transDate = (String)next3.getData();accountQueryAccountLogVO.setTransDate(transDate);break;default:break;}}list.add(accountQueryAccountLogVO);}}}}} catch (DocumentException e) {e.printStackTrace();}}
转载于:https://www.cnblogs.com/hi-feng/p/8124641.html
支付宝与微信对账文件解析相关推荐
- 电商线上支付 -- --支付宝, 微信和账期支付等 以及 线下支付(转账,汇票,货到付款)流程梳理
线上 --支付宝 微信-账期 1,订单和钱 生成支付单 -成功 , 2,(输入密码后)生成支付流水单号(如果是账期支付)- 支付结果查询(在线支付) 3, =-调起微信支付- // 将该app注册到微 ...
- python 支付宝个人账单_解析2018年度三大用户数据报告——网易云音乐、支付宝、微信...
文章分别给大家简单的解析一下2018年度网易云音乐.支付宝.微信的用户数据报告. 继网易云音乐.支付宝相继发布2018年用户数据报告后,微信也悄悄发布自己的数据报告,截止目前大家期待的三大产品数据报告 ...
- Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入
目录 实现初衷 下载账单流水 微信账单 支付宝账单 处理数据 账单文件命名及存放 执行Python脚本 随手记导入数据 查看账单 代码实现 实现初衷 每天通过手动记账太麻烦,而且要精细到每一项支付的内 ...
- 聚合支付:将支付宝、微信、qq钱包三码收款码合而为一
很急很关键,代码先睹为快,请点我 项目搭建基于ssm框架,本博客略过搭建过程,记得引入文件上传.zxing.mybatis.mysql依赖包 <!-- https://mvnrepository ...
- Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整支付宝,微信代码)
前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关 ...
- ios 支付宝、微信、银联支付集成
一 .支付宝集成 支付宝官方集成文档 1.下载支付宝官方demo,将AlipaySDK.bundle.AlipaySDK.framework两个框架导入到项目中,如下图: 2.选择工程中 Build ...
- 寻找隐形冠军 支付宝、微信用得那么溜,可谁知道背后有一名“上海功臣
下午三点半,离晚饭时间还有一段时间,可新沪路上的熟食店"尚老居"门口已经人头攒动. "阿姨你来啦,今天要点什么?" "老样子,称点烧鹅和蹄髈,阿拉孙子 ...
- java实现沙箱测试环境支付宝支付(demo)和整合微信支付和支付宝支付到springmvc+spring+mybatis环境全过程(支付宝和微信支付)
一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse readme. ...
- Cordova打包的Vue项目在IOS无法拉起支付宝和微信支付
背景 在用Cordova打包Vue项目并添加IOS平台时,在服务器后台没有报异常,且支付宝以及微信的调用的链接在 浏览器中能正常调用时,此时查看Cordova项目下的config.xml文件. 解决 ...
最新文章
- VMware宋家瑜:U2VL要趁早
- linux ll命令时间,linux ll显示时间格式
- 微信小程序wx.getUserProfile
- 《Linux编程》上机作业 ·004【文件I/O操作】
- 算法笔记_面试题_6.二进制/位运算相关
- 圈圈教你玩usb第一版件软件使用说明
- 【Git分布式版本控制系统一】你还不会用Git进行项目管理?
- 设计模式-模板方法模式-以简历模板为例
- 《数据最重要的成员--算法》
- 秋风,唱给田野动听的歌
- redis底层数据结构之跳跃表
- Linux配置桥接网络模式
- 2022年湖南省临床执业医师考试二单元随机真题
- 2011届移动开发者大会
- JAVA的简单数据类型和复合数据类型
- Python中一些与word模板文件操作相关的库
- 快手老司机与抖音小姐姐 ,终有一战?
- 饥荒机器人升级上限多少_饥荒机器人升级需要几个齿轮
- Kubernetes Pod冗余策略
- Unity--shadergraph--UV dissolve
热门文章
- 园区网组网(一)OSPF+PAT上网
- 数据库-音乐网站-sql
- 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图
- 人脸识别、二维码电子签到,让会议会展入场更加智能!
- 怎么批量设置EDIUS中的图片持续时间
- “PaaS+云管”双剑合璧,BoCloud博云的进阶之路
- php 2038年,php如何取2038年后的时间戳|php时间日期处理到2038年之后该怎么办 - PS下...
- Mezzanine入门
- worksheet怎么读_worksheet是什么意思_worksheet的翻译_音标_读音_用法_例句_爱词霸在线词典...
- 如何使用Element-UI?