一,对账文件解析

  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. 电商线上支付 -- --支付宝, 微信和账期支付等 以及 线下支付(转账,汇票,货到付款)流程梳理

    线上 --支付宝 微信-账期 1,订单和钱 生成支付单 -成功 , 2,(输入密码后)生成支付流水单号(如果是账期支付)- 支付结果查询(在线支付) 3, =-调起微信支付- // 将该app注册到微 ...

  2. python 支付宝个人账单_解析2018年度三大用户数据报告——网易云音乐、支付宝、微信...

    文章分别给大家简单的解析一下2018年度网易云音乐.支付宝.微信的用户数据报告. 继网易云音乐.支付宝相继发布2018年用户数据报告后,微信也悄悄发布自己的数据报告,截止目前大家期待的三大产品数据报告 ...

  3. Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入

    目录 实现初衷 下载账单流水 微信账单 支付宝账单 处理数据 账单文件命名及存放 执行Python脚本 随手记导入数据 查看账单 代码实现 实现初衷 每天通过手动记账太麻烦,而且要精细到每一项支付的内 ...

  4. 聚合支付:将支付宝、微信、qq钱包三码收款码合而为一

    很急很关键,代码先睹为快,请点我 项目搭建基于ssm框架,本博客略过搭建过程,记得引入文件上传.zxing.mybatis.mysql依赖包 <!-- https://mvnrepository ...

  5. Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整支付宝,微信代码)

    前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关 ...

  6. ios 支付宝、微信、银联支付集成

    一 .支付宝集成 支付宝官方集成文档 1.下载支付宝官方demo,将AlipaySDK.bundle.AlipaySDK.framework两个框架导入到项目中,如下图: 2.选择工程中 Build ...

  7. 寻找隐形冠军 支付宝、微信用得那么溜,可谁知道背后有一名“上海功臣

    下午三点半,离晚饭时间还有一段时间,可新沪路上的熟食店"尚老居"门口已经人头攒动. "阿姨你来啦,今天要点什么?" "老样子,称点烧鹅和蹄髈,阿拉孙子 ...

  8. java实现沙箱测试环境支付宝支付(demo)和整合微信支付和支付宝支付到springmvc+spring+mybatis环境全过程(支付宝和微信支付)

    一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse readme. ...

  9. Cordova打包的Vue项目在IOS无法拉起支付宝和微信支付

    背景 在用Cordova打包Vue项目并添加IOS平台时,在服务器后台没有报异常,且支付宝以及微信的调用的链接在 浏览器中能正常调用时,此时查看Cordova项目下的config.xml文件. 解决 ...

最新文章

  1. VMware宋家瑜:U2VL要趁早
  2. linux ll命令时间,linux ll显示时间格式
  3. 微信小程序wx.getUserProfile
  4. 《Linux编程》上机作业 ·004【文件I/O操作】
  5. 算法笔记_面试题_6.二进制/位运算相关
  6. 圈圈教你玩usb第一版件软件使用说明
  7. 【Git分布式版本控制系统一】你还不会用Git进行项目管理?
  8. 设计模式-模板方法模式-以简历模板为例
  9. 《数据最重要的成员--算法》
  10. 秋风,唱给田野动听的歌
  11. redis底层数据结构之跳跃表
  12. Linux配置桥接网络模式
  13. 2022年湖南省临床执业医师考试二单元随机真题
  14. 2011届移动开发者大会
  15. JAVA的简单数据类型和复合数据类型
  16. Python中一些与word模板文件操作相关的库
  17. 快手老司机与抖音小姐姐 ,终有一战?
  18. 饥荒机器人升级上限多少_饥荒机器人升级需要几个齿轮
  19. Kubernetes Pod冗余策略
  20. Unity--shadergraph--UV dissolve

热门文章

  1. 园区网组网(一)OSPF+PAT上网
  2. 数据库-音乐网站-sql
  3. 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图
  4. 人脸识别、二维码电子签到,让会议会展入场更加智能!
  5. 怎么批量设置EDIUS中的图片持续时间
  6. “PaaS+云管”双剑合璧,BoCloud博云的进阶之路
  7. php 2038年,php如何取2038年后的时间戳|php时间日期处理到2038年之后该怎么办 - PS下...
  8. Mezzanine入门
  9. worksheet怎么读_worksheet是什么意思_worksheet的翻译_音标_读音_用法_例句_爱词霸在线词典...
  10. 如何使用Element-UI?