微信对账单:

1 导入所需JAR包

 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>3.3.7.B</version><exclusions><exclusion><groupId>com.github.binarywang</groupId><artifactId>qrcode-utils</artifactId></exclusion></exclusions></dependency>

2  读取配置文件中配置的微信支付信息

@Data
@ConfigurationProperties(prefix = "wx.pay")
@Component
public class WxPayProperties {/*** 设置微信公众号或者小程序等的appid*/private String appId;/*** 微信支付商户号*/private String mchId;/*** 微信支付商户密钥*/private String mchKey;/*** 微信支付交易类型*/private String tradeType;/*** 证书位置*/private String keyPath;
}

3 注入配置

@Component
public class WeChatPayConfig {@Autowiredprivate WxPayProperties properties;@Bean@ConditionalOnMissingBeanpublic WxPayConfig payConfig() {WxPayConfig payConfig = new WxPayConfig();payConfig.setAppId(this.properties.getAppId());payConfig.setMchId(this.properties.getMchId());payConfig.setMchKey(this.properties.getMchKey());payConfig.setKeyPath(this.properties.getKeyPath());payConfig.setTradeType(this.properties.getTradeType());return payConfig;}@Beanpublic WxPayService wxPayService(WxPayConfig payConfig) {WxPayService wxPayService = new WxPayServiceImpl();wxPayService.setConfig(payConfig);return wxPayService;}}

执行获取微信账单并且保存

     public R  downloadWxBill(WxPayDownloadBillRequest wxPayDownloadBillRequest){try {Map<String,Object> map = new HashMap<>();map.put("date",wxPayDownloadBillRequest.getBillDate());R r = customPayWxOrderBillService.queryTotal(map);if(!r.get("code").toString().equals("0")){log.error("获取微信对账单错误:{}","该日期数据核对异常");return R.error("该日期数据核对异常");}if(Long.parseLong(r.get("total").toString()) >= 1){log.error("获取微信对账单错误:{}","该日期的账单数据已经存在");return R.error("该日期的账单数据已经存在");}wxService.setConfig(weChatPayConfig.payConfig());wxPayDownloadBillRequest.setBillDate(wxPayDownloadBillRequest.getBillDate().replace("-",""));WxPayBillResult wxPayBillResult = wxService.downloadBill(wxPayDownloadBillRequest);List<WxPayBillInfo> wxPayBillInfos =  wxPayBillResult.getBillInfoList();List<PubPayWxOrderBillEntity> list = new ArrayList<>();for(int i =0 ; i < wxPayBillInfos.size() ; i++){WxPayBillInfo wxPayBillInfo = wxPayBillInfos.get(i);PubPayWxOrderBillEntity customPayWxOrderBillEntity = new PubPayWxOrderBillEntity();BeanUtils.copyProperties(wxPayBillInfo , customPayWxOrderBillEntity);list.add(customPayWxOrderBillEntity);}customPayWxOrderBillService.insertBatch(list);} catch (Exception e) {e.printStackTrace();log.error("获取微信对账单错误:{}",e.getMessage());}return R.ok();}

支付宝对账单(比较麻烦一点,需要先获取支付宝对账单下载地址,再从地址下载ZIP压缩包,解压压缩包之后读取并保存对账信息):

1 导入所需JAR包

 <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.10.0.ALL</version></dependency>

2 读取配置文件中配置的支付宝支付信息

@Data
@ConfigurationProperties(prefix = "alipay.pay")
@Component
public class AlipayPayProperties {/*** 支付宝支付商户appId*/private String appId;/*** 支付宝支付商户私钥*/private String appPrivateKey;/*** 支付宝支付商户公钥*/private String publicKey;/*** 支付宝商户生成签名字符串所使用的签名算法类*/private String signType;
}

3 注入配置

@Component
public class AlipayPayConfig {@Autowiredprivate AlipayPayProperties properties;@Beanpublic AlipayClient alipayClient() throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",properties.getAppId(),properties.getAppPrivateKey(),"json",AlipayConstants.CHARSET_UTF8,properties.getPublicKey(),properties.getSignType());return alipayClient;}}

执行获取微信账单并且保存

 public R downloadAlipayBill( JSONObject json) throws Exception {try {// 将订单提交至支付宝Map<String,Object> map = new HashMap<>();map.put("date",json.get("bill_date"));R r = pubPayAlipayOrderBillService.queryTotal(map);if(!r.get("code").toString().equals("0")){log.error("获取支付宝对账单错误:{}","该日期数据核对异常");return R.error("该日期数据核对异常");}if(Long.parseLong(r.get("total").toString()) >= 1){log.error("获取支付宝对账单错误:{}","该日期的账单数据已经存在");return R.error("该日期的账单数据已经存在");}AlipayClient alipayClient = alipayPayConfig.alipayClient();AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();request.setBizContent(json.toString());AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);if(response.isSuccess()){// 设置下载后生成Zip目录URL url = new URL(response.getBillDownloadUrl());URLConnection urlconn = url.openConnection();ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(urlconn.getInputStream()), Charset.forName("GBK"));ZipEntry ze = null;//循环遍历while ((ze = zipInputStream.getNextEntry()) != null) {if(ze.getName().indexOf("汇总") <= -1){System.out.println("文件名:" + ze.getName() + " 文件大小:" + ze.getSize() + " bytes");System.out.println("文件内容:");BufferedReader br = new BufferedReader(new InputStreamReader(zipInputStream, Charset.forName("GBK")));String line;Long row = 0L;//内容不为空,输出List<PubPayAlipayOrderBillEntity> list = new ArrayList<>();while ((line = br.readLine()) != null) {System.out.println(line);String [] arr = line.split(",");if(arr.length > 20 && row >4){PubPayAlipayOrderBillEntity pubPayAlipayOrderBillEntity = new PubPayAlipayOrderBillEntity();pubPayAlipayOrderBillEntity.setTradeTime(arr[5].trim());pubPayAlipayOrderBillEntity.setTransactionId(arr[0].trim() );pubPayAlipayOrderBillEntity.setOutTradeNo(arr[1].trim() );pubPayAlipayOrderBillEntity.setTradeType(arr[2].trim() );pubPayAlipayOrderBillEntity.setBody(arr[3].trim() );pubPayAlipayOrderBillEntity.setStartOrderTime(arr[4].trim() );pubPayAlipayOrderBillEntity.setEndOrderTime(arr[5].trim() );pubPayAlipayOrderBillEntity.setOpenId(arr[10].trim() );pubPayAlipayOrderBillEntity.setTotalFee(arr[11].trim() );pubPayAlipayOrderBillEntity.setPayFee(arr[12].trim() );pubPayAlipayOrderBillEntity.setRefundId(arr[21].trim() );pubPayAlipayOrderBillEntity.setRefundPoundage(arr[22].trim() );pubPayAlipayOrderBillEntity.setRemark(arr.length > 24 ? arr[24].trim()  : "");list.add(pubPayAlipayOrderBillEntity);}row++;}System.out.println(list.size());pubPayAlipayOrderBillService.insertBatch(list);}}}else{log.error("获取支付宝对账单失败:{}",JSON.toJSON(response));}} catch (Exception e) {e.printStackTrace();log.error("获取支付宝对账单错误:{}",e.getMessage());}return R.ok();}

支付宝对账单和微信对账单下载保存数据库相关推荐

  1. 【苹果微信图片下载提示保存成功但相册中找不到图片】

    目 录 苹果微信图片下载保存失败 发现问题 尝试解决方法 方法一(未成功) 方法二(成功) 苹果微信图片下载保存失败 发现问题 题主应用的苹果13,在查看微信图片时发现,点击右下角的下载图标对图片进行 ...

  2. java 微信 下载对账单_java下载微信对账单,实现与微信实收对账和日清日结对账...

    最近接手了一个棘手的工作:微信下载对账单. 刚接手完全懵逼,怎么和微信对接啊.然后就是百度.. 终于找到了组织: 微信支付|开发文档 :点击跳转 通过文档我们可以看到,首先是: 1.下载对账单开放接口 ...

  3. 微信对账单 java_微信支付对账,你是如何处理的?

    支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致 ...

  4. python 微信数据_python 处理微信对账单数据的实例代码

    下面一段代码给大家介绍python 处理微信对账单数据,具体代码如下所示: #下载对账单并存储到数据库 @app.route("/bill/",methods=["GET ...

  5. 【PHP+微信开发】实现微信对账单处理

    最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...

  6. python微信转账记录_python处理微信对账单数据的实例代码

    [下载文档:  python处理微信对账单数据的实例代码.txt ] (友情提示:右键点上行txt文档名->目标另存为) python 处理微信对账单数据的实例代码下面一段代码给大家介绍pyth ...

  7. 微信对账单处理-PHP

    最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...

  8. 微信如何保存文件?企业微信如何下载文件?

    我们经常用微信传输文件,用企业微信办公时也需要经常保存和下载文件,如何操作和设置呢? 个人微信如何保存文件? 大家对个人微信传输文件应该非常熟悉了,用"文件传输助手"可以很方便的将 ...

  9. 微信对账单接口返回值解析

    最近在做微信支付相关的业务,在调用微信的对账单接口时,遇到一个当时感觉很头大的问题,为什么说当时很头大呢?因为现在这个问题已经被我解决了!嘿嘿... 好吧,言归正传.我遇到的问题就是在调用微信的对账单 ...

  10. 微信小程序或公众号音频下载保存

    需求背景 一些微信公众号的文章或小程序里会嵌入一些音频,有时我们需要把这些音频保存到手机或电脑里,在音频失效后或没有微信环境时也能随时听.下面就个人经验总结一下: 环境 手机微信版本:8.0.35 开 ...

最新文章

  1. MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
  2. 数据结构之平衡树:2-3查找树的介绍——16
  3. ide循环执行用例 selenium_使用Selenium测试Web界面时使用循环控制功能
  4. 【大规模图像检索的利器】Deep哈希算法介绍
  5. 数据挖掘概念与技术(第三版)课后答案——第三章
  6. 怎么用计算机弹出迪迦,迪迦奥特曼不常用的八大技能,迪迦可以瞬移
  7. 读《计算机网络》——深入浅出——以考研为目标学技术面试知识二刷计网——计算机网络体系结构
  8. 利用“微PE”自制PE可引导iso
  9. 【离散数学】陪集精讲
  10. 5G商用牌照发放,区块链与5G能擦出多大“火”
  11. Sick编码器CanOpen通信
  12. 解决电信光宽带WIFI下手机APP图片加载慢的问题
  13. 《大数据处理技术Spark》--林子雨
  14. wince模拟器上网_wince5.0模拟器下载
  15. 华为干部管理经典模型
  16. leetcode 545. Boundary of Binary Tree
  17. C++经典算法题-最大访客数
  18. php mysql 变量赋值_mysql存储过程中变量的定义赋值操作
  19. 第四届【强网杯】主动
  20. python使用密钥加密的表述_python 利用Crypto进行RSA解密加密文件

热门文章

  1. GB/T28181之国标编码一览表,需要自取
  2. 2021金融科技领域最具商业合作价值企业盘点
  3. 移动信息中心号码,移动短信中心号码速查
  4. 小米手机不能发短信的一种解决方法--重新设置短信中心号码
  5. 数据库原理 第四章作业
  6. 如何申请微信公众号及使用操作方法说明
  7. 2012年秋季,斯皮维大厅音乐会的亮点
  8. c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
  9. python热力图转灰度图_热力图(HeatMap)实现
  10. 虚拟机内下载速度慢解决方法汇总