微信对账单功能开发(V2)

news2025/7/26 14:14:48

下载交易账单接口开发

应用场景:

商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。

注意:

1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致;

2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;

3、对账单中涉及金额的字段单位为“元”。

4、对账单接口只能下载三个月以内的账单。

5、对账单是以商户号维度来生成的,如一个商户号与多个appid有绑定关系,则使用其中任何一个appid都可以请求下载对账单。对账单中的appid取自交易时候提交的appid,与请求下载对账单时使用的appid无关。

6、自2018年起入驻的商户默认是开通免充值券后的结算对账单,且汇总数据为总交易单数,应结订单总金额,退款总金额,充值券退款总金额,手续费总金额,订单总金额,申请退款总金额。

接口链接

https://api.mch.weixin.qq.com/pay/downloadbill

1.传入的参数:

 

基本代码如下:

 String nonceStr = sdf.format(date).toString();
        wx.setAppid(wechatAPIConstant.APP_ID);// APPid
        wx.setMch_id(wechatAPIConstant.MCH_ID);// 商户id
        //加密类型
        wx.setSign_type("MD5");
        wx.setNonce_str(nonceStr);
        //查询日期
        wx.setBill_date(qDate.replace("-", ""));
        wx.setBill_type("ALL");
        //MD5加密
        String MD5 = getEncryptionMD5(wx);//加密签名
        //设置签名
        wx.setSign(MD5);
        //转换为xml类型
        String xml = changeToXML(wx);
        log.info("debug对账单xml: xml={}", xml);

        //向微信平台发送xml数据
        StringBuffer buffer = HttpUtil.httpsRequest(wechatAPIConstant.WX_API_CHECK_ACCOUNT, "POST", xml);

        //微信平台账单数据
        String s = buffer.toString();

        // 去掉汇总数据,并且去掉'`'
        String tradeInfo = s.substring(0, s.indexOf("总")).replace("`", "");
        //以27个数据为一组
        int rowNum = 27;
        //以日期来分割数据
        List<String> splitGroup = Arrays.asList(tradeInfo.split(qDate));
        List<WechatBillAcount> billGroup =new ArrayList<>();

        for (int i = 0; i < splitGroup.size(); i++) {
            //把第一行表头去掉
            if (i == 0) {
                continue;
            }
            //取到微信账单数据
            List<String> tempSplit = Arrays.asList(splitGroup.get(i).split(","));
            WechatBillAcount bill = new WechatBillAcount();
            bill.setDate(qDate + tempSplit.get(0));
            bill.setAppId(tempSplit.get(1));
            bill.setMch_id(tempSplit.get(2));
            bill.setSubMch_id(tempSplit.get(3));
            bill.setDevice_info(tempSplit.get(4));
            bill.setWeiXinOrderNo(tempSplit.get(5));
            bill.setMchOrderNo(tempSplit.get(6));
            bill.setUserId(tempSplit.get(7));
            bill.setType(tempSplit.get(8));
            bill.setStatus(tempSplit.get(9));
            bill.setBank(tempSplit.get(10));
            bill.setCurrency(tempSplit.get(11));
            bill.setAmount(tempSplit.get(12));
            bill.setEnvelopeAmount(tempSplit.get(13));
            bill.setWxRefundNo(tempSplit.get(14));
            bill.setBusinessRefundNo(tempSplit.get(15));
            bill.setRefundAmount(tempSplit.get(16));
            bill.setRedEnvelopesRefundAmount(tempSplit.get(17));
            bill.setRefundType(tempSplit.get(18));
            bill.setRefundStatus(tempSplit.get(19));
            bill.setName(tempSplit.get(20));
            bill.setPacket(tempSplit.get(21));
            BigDecimal poundage = new BigDecimal(tempSplit.get(22));
            bill.setPoundage(poundage);
            bill.setRate(tempSplit.get(23));
            BigDecimal orderAmount = new BigDecimal(tempSplit.get(24));
            bill.setOrderAmount(orderAmount);
            bill.setAskRefundAmount(tempSplit.get(25));
            billGroup.add(bill);
        }
        addVOToEntity(billGroup);
    }

以xml形式传给微信对账单接口而后接口会返回值:

<xml>
  <appid>wx2421b1c4370ec43b</appid>
  <bill_date>20141110</bill_date>
  <bill_type>ALL</bill_type>
  <mch_id>10000100</mch_id>
  <nonce_str>21df7dc9cd8616b56919f20d9f679233</nonce_str>
  <sign>332F17B766FC787203EBE9D6E40457A1</sign>
</xml>

失败示例:

<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[require POST method]]></return_msg>
<error_code><![CDATA[20001]]></error_code></xml>

成功示例:

交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,代金券或立减优惠金额,微信退款单号,商户退款单号,退款金额,代金券或立减优惠退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率
`2014-11-1016:33:45,`wx2421b1c4370ec43b,`10000100,`0,`1000,`1001690740201411100005734289,`1415640626,`085e9858e3ba5186aafcbaed1,`MICROPAY,`SUCCESS,`CFT,`CNY,`0.01,`0.0,`0,`0,`0,`0,`,`,`被扫支付测试,`订单额外描述,`0,`0.60%
`2014-11-1016:46:14,`wx2421b1c4370ec43b,`10000100,`0,`1000,`1002780740201411100005729794,`1415635270,`085e9858e90ca40c0b5aee463,`MICROPAY,`SUCCESS,`CFT,`CNY,`0.01,`0.0,`0,`0,`0,`0,`,`,`被扫支付测试,`订单额外描述,`0,`0.60%
总交易单数,总交易额,总退款金额,总代金券或立减优惠退款金额,手续费总金额
`2,`0.02,`0.0,`0.0,`0

最后解析响应的数据即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Azure Integrator Delphi版

Azure Integrator Delphi版 Azure Integrator包括表、队列和Blob等标准Windows Azure结构的实现&#xff0c;使开发人员能够快速轻松地将基于云的数据存储、队列管理、表配置等添加到任何桌面、Web或移动应用程序中。 Azure Integrator功能 用于访问Windows Azure表、Blob和队列…

python folium 实现地图平台制作

python实现泸定地震点观测平台制作 数据来自[走天涯徐小洋地理数据科学]&#xff0c;原始数据来自微博中国地震台网 的正式测定数据。 以下是地震点的数据&#xff1a; MagnitudeDateTimeLongitudeLatitudeDepth6.82022-9-512:52102.0829.59163.12022-9-65:28102.0729.64113…

[附源码]java毕业设计览宏公司会议管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

01. 信息搜集:Web 1~10

Web 1~10web1知识点题解web2知识点题解web3知识点题解web4知识点题解web5知识点题解web6知识点题解web7知识点题解web8知识点题解web9知识点题解web10知识点题解web1 知识点 查看网页源码&#xff1a;ctrl u 或 F12 开发注释未及时删除 题解 查看网页源码即可。 web2 知识…

学习UI设计,哪些软件是必学的

UI设计软件的学习并不重要。许多设计软件功能相似&#xff0c;操作相似&#xff0c;设计效果相似&#xff0c;此时我们只需要选择相同类型的软件进行深入学习&#xff0c;当我们掌握软件时&#xff0c;使用其他类型的软件基本上不会有太大的困难。 ​一、位图软件&#xff1a; …

spring-data-mongodb生成的Query语句order字段顺序错误

前言&#xff1a; 最近在实现一个需求的时候&#xff0c;需求要求查询的数据需要根据播放量倒叙、创建时间倒叙来排序&#xff0c;考虑到播放量、创建时间都有可能是相同的&#xff0c;就会出现排序不稳定的情况&#xff0c;于是就加入了"_id"作为第三个排序字段&am…

Unity程序在VR一体机(Android)上卡死(闪退)后怎么办?——用adb查看android上某Unity app的debug信息

一、之前面临的困境 Unity的程序build到android一体机后&#xff0c;仿佛进入了一个黑箱子&#xff0c;你既看不到脚本的debug报错信息&#xff0c;也看不到任务管理器里的内存和CPU使用情况&#xff1f;如果黑屏、闪屏、花屏怎么办&#xff1f; 最近面临的一个问题就是&…

【快速上手系列】使用七牛云+webuploader实现对象云存储(OSS)

【快速上手系列】使用七牛云webuploader实现对象云存储&#xff08;OSS&#xff09; 步骤 一、七牛云配置 1、新建存储空间 进入七牛云&#xff0c;注册登录&#xff0c;进入控制台&#xff0c;选择对象存储 Kodo 选择空间管理——新建空间&#xff08;免费30天&#xff0…

[附源码]java毕业设计企业人力资源管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Bio】基础生物学 - 基因 gene

文章目录1. DNA 脱氧核糖核酸、RNA 核糖核酸1.1 核苷酸1.2 脱氧核糖核酸1.3 核糖核酸2. 基因2.1 基因组2.2 染色体2.3 基因与脱氧核苷酸的牵连2.4 基因与DNA的牵连2.5 基因与染色体的牵连Ref1. DNA 脱氧核糖核酸、RNA 核糖核酸 1.1 核苷酸 核苷酸 (Nucleotide)\blue{\text{核苷…

如何使用家庭网络运行Aleo Prover

目前ALEO三测第二阶段太卷了&#xff0c;虽然现阶段没有激-励&#xff0c;但是仍然有不少人卷进去&#xff0c;导致现在8核的云服务器一天才只能跑出三四个scores&#xff0c;可见大家的热情还是非常高的&#xff0c;但是这对于之前购买云服务器的用户来说&#xff0c;就比较难…

全网营销如何落地?全网营销的途径有哪些?

随着移动互联网的遍及&#xff0c;如今企业的经营发展越来越离不开全网营销。有些小伙伴可能对全网营销的具体操作方法有些不解&#xff0c;这里小马识途营销顾问系统解读下全网营销。 一、 什么是全网营销&#xff1f; 全网营销是全网整合营销的简称&#xff0c;即从产品规划、…

同花顺_代码解析_技术指标_D

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 DBCD DDI DMAFS DMI DMI_QL DPO DBCD 异同离差乖离率 公式描述&#xff1a; 先计算乖离率BIAS&#xff0c;然后计算不同日的乖离率之间的离差&#xff0c; 最后对离差进行指数移…

ArcGIS pro求点线最短距离Near

ArcGIS pro求点线最短距离Near 如果是ArcGIS经典版&#xff0c;可以从以下路径找到&#xff1a; ArcGIS pro就更简单了&#xff0c;在Analysis面板&#xff1a; 打开之后来介绍一下各参数意义&#xff1a; 按照ArcGIS帮助&#xff0c;该工具可求点、线、面之间的最短距离。 其…

React-Mobx(入门)

目录 1. Mobx介绍 优势 社区评价 ​编辑 2.配置开发环境 3.基础使用 1&#xff09;初始化mobx 2&#xff09;React使用store 4.计算属性&#xff08;衍生状态&#xff09; 5.异步数据处理 6. 模块化 1&#xff09;定义task模块 2&#xff09;定义counterStore 3&am…

配置错误的smb共享

介绍 Windows 是当今最流行的操作系统&#xff0c;不仅由个人用户使用&#xff0c;而且在大公司中也广泛使用。由于其操作简单性以及使用图形界面&#xff0c;如今&#xff0c;大量实体的公司网络充满了运行Windows操作系统的主机和服务器。无论这些机器针对的是最终用户、我们…

XSS-labs靶场实战(一)——第1-3关

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是XSS-labs靶场实战。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

Linux安全--iptables详解

目录 1、iptables介绍 2、iptables四表五链详解 3、iptables基本语法 4、实际操作 4.1 增加规则 4.2 删除规则 4.3 修改规则 5、命令语法总结 6、基本匹配条件 7、iptables进阶用法 7.1 iprange扩展模块 7.2 string扩展模块 8、iptables进行端口转发 1、iptables介绍 …

【Python】面向Sqli-Labs Less15的布尔盲注二分法脚本

前言 其实写这个python脚本是为了完成我某节课的某个实验 代码里有一堆一堆的for循环&#xff0c;导致程序整个运行下来起码需要一个小时&#xff0c;而且还是基于二分法的qwq。本来想说去学一学python的多线程提升一下效率&#xff0c;但我发现我这代码一环扣一环&#xff0c…

基于PHP+MySQL的在线学习网站系统

随着我国教育体制的改革,我国大学生的数量越来越多。相对应的对我国的教育质量也提出了新的要求。如果仅仅是在课堂上学习那些有限的知识已经不能够再满足大学生对知识的渴望了。为了能够让大学生学习到更多的内容需要一个在线学习系统来辅助大学生进行学习。 PHP在线学习网站系…