微信小程序> 如何处理微信小程序支付下载下来的对账单以及证书读取

如何处理微信小程序支付下载下来的对账单以及证书读取

浏览量:2380 时间: 来源:weixin_41103806

在网上稍微搜了一下,有一篇介绍了如何处理,但那时候的对账单数据与我现在下载下来的似乎有点误差,在这里我不谈论对方的方法对错,我只写下自己的处理过程.

首先,先看下获取的对账单数据:

2019-03-13 17:20:09,wx10796e586721729e,1526775301,0,,4200000257201903132495667456,555439938150072320,o-YLy5CNWR2_tR-pzvgs5kzU-82g,JSAPI,SUCCESS,COMM_CREDIT,CNY,1.00,0.00,0,0,0.00,0.00,,,天虹基金管理会,PAYMENT_EXPERIENCE_FEE,0.01000,0.60%,1.00,0.00,\r2019-03-13 17:33:55,wx10796e586721729e,1526775301,0,,4200000257201903132495667456,555439938150072320,o-YLy5CNWR2_tR-pzvgs5kzU-82g,JSAPI,REFUND,COMM_CREDIT,CNY,0.00,0.00,50000010172019031308710710739,1038374382019031324956674561552469612,1.00,0.00,ORIGINAL,SUCCESS,天虹基金管理会,PAYMENT_EXPERIENCE_FEE,-0.01000,0.60%,0.00,1.00,\r

如上,这是稍加处理的数据,把文字头去掉以及后面汇总数据还有单点`符号(后面会贴处理代码).

拿到这样的一份数据,其实大家应该都能看出来只需要截取\r就可以取出两份字符串数组了,但是今天在截取这个"回车换行"符的时候着实折腾了半天,算是与大家分享一下自己踩得坑吧.我在网上搜了半天,找到说用"r?"或者"\r?"代替的,但是最终都没有实现.最终,我还是在群里问了一下,说是先用replace方法把"\r"替换掉,再去用替换的字符分割,还有就是千万不要用string的replaceAll方法,而是用replace方法...

@Scheduled(cron = "0 0 10 * * ?")public void doDownloadBill() throws Exception {WXPay wxpay = new WXPay(WXPayConfigImpl.getInstance());HashMapString, String data = new HashMapString, String();data.put("bill_date", DateTimeUtil.getTimeShortString(DateUtils.addDateDays(new Date(), -1)));data.put("bill_type", "ALL");try {MapString, String r = wxpay.downloadBill(data);String result = JsonMapper.obj2String(r);String tradeMsg = result.substring(result.indexOf("`"));String tradeInfo = tradeMsg.substring(0, tradeMsg.indexOf("总")).replace("`", "");// 去掉汇总数据,并且去掉'`'String[] tradeArray = tradeInfo.replace("\r", " wc").split("wc"); // i wanna say nothingfor (String tradeDetailInfo : tradeArray) {String[] tradeDetailArray = tradeDetailInfo.split(",");BillEntity bill = BillEntity.builder().id(IdGenerator.nextId()).tradedate(DateUtils.stringToDate(tradeDetailArray[0])).commonid(tradeDetailArray[1]).businessno(tradeDetailArray[2]).specialbusinessno(tradeDetailArray[3]).deviceno(tradeDetailArray[4]).wxorderno(tradeDetailArray[5]).businessorderno(Long.valueOf(tradeDetailArray[6])).usertype(tradeDetailArray[7]).tradetype(tradeDetailArray[8]).tradestatus(tradeDetailArray[9]).paybank(tradeDetailArray[10]).moneytype(tradeDetailArray[11]).payordermoney(new BigDecimal(tradeDetailArray[12])).paperreplacemoney(new BigDecimal(tradeDetailArray[13])).wxrefundno(tradeDetailArray[14]).businessrefundno(tradeDetailArray[15]).refundamount(new BigDecimal(tradeDetailArray[16])).rechargerefundamount(new BigDecimal(tradeDetailArray[17])).refundtype(tradeDetailArray[18]).refundstatus(tradeDetailArray[19]).businessname(tradeDetailArray[20]).businessdata(tradeDetailArray[21]).fee(new BigDecimal(tradeDetailArray[22])).feerate(tradeDetailArray[23]).orderamount(new BigDecimal(tradeDetailArray[24])).applyrefundamount(new BigDecimal(tradeDetailArray[25])).feeratenote(tradeDetailArray[26]).createdate(new Date()).build();billMapper.insert(bill);}} catch (Exception e) {e.printStackTrace();}}

微信小程序支付sdk二次封装(开箱即用)

最近,做微信退款时遇到点小问题,就直接在这下面更新:由于拉取对账单不需要证书,因此我就项目中初始化了一下并没有注意,现在退款需要读取证书内容转化为字节数组.之前,我是将证书放在服务器上固定路径,代码中直接读取文件,后来由于线上环境麻烦,因此就讲证书放在了项目下的resource文件中,因而遇到了读取不到的问题

这里有一篇介绍读取springboot中resource下文件的介绍

下面贴出我在微信支付sdk中初始化证书时的操作:

private WXPayConfigImpl() throws Exception {        String certPath = WXPayConstants.APICLIENT_CERT;        // File file = new File( certPath );        ClassPathResource resource = new ClassPathResource( certPath );        // File file = ResourceUtils.getFile( certPath );        // InputStream certStream = new FileInputStream( file );        InputStream certStream = resource.getInputStream();        byte[] buffer = new byte[1024];        int len = 0;        ByteArrayOutputStream bos = new ByteArrayOutputStream();        while( ( len = certStream.read( buffer ) ) != -1 ) {            bos.write( buffer, 0, len );        }        bos.flush();        // this.certData = new byte[(int) file.length()];        // certStream.read( this.certData );        this.certData = bos.toByteArray();        certStream.close();    }

希望对大家有用^_^

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎