申请二级商户资金账单API

最新更新时间:2020.08.10 版本说明


微信支付按天提供微信支付账户的资金流水账单文件,电商平台可以通过该接口获取二级商户账单文件的下载地址。文件内包含电商平台二级商户资金操作相关的业务单号、收支金额、记账时间等信息,供电商平台进行核对。

注意:

• 调用该接口前,电商平台需提前开通“下载二级商户资金账单”产品权限。

• 资金账单中的数据反映的是电商平台二级商户微信支付账户资金变动情况;

• 当日账单在次日上午9点开始生成,建议商户在上午10点以后获取;

• 资金账单中涉及金额的字段单位为“元”;

• 该接口只能下载三个月以内的资金流水账单。

接口说明

适用对象:电商平台

请求URL:https://api.mch.weixin.qq.com/v3/ecommerce/bill/fundflowbill

请求方式:GET

接口规则:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay-1.shtml


path 指该参数为路径参数

query 指该参数为URL参数

body 指该参数需在请求JSON传参


请求参数

参数名 变量 类型[长度限制] 必填 描述
账单日期 bill_date string[1,10] query格式YYYY-MM-DD
示例值:2019-06-11
资金账户类型 account_type string[1,32] query 枚举值:
ALL:所有账户
示例值:ALL
压缩类型 tar_type string[1,32] query不填则以不压缩的方式返回数据流,枚举值:
GZIP:GZIP格式压缩
示例值:GZIP
加密算法 algorithm string[1,32] query 枚举值:
AEAD_AES_256_GCM:AEAD_AES_256_GCM加密算法
示例值:AEAD_AES_256_GCM

请求示例


https://api.mch.weixin.qq.com/v3/ecommerce/bill/fundflowbill?bill_date=2019-06-11&account_type=BASIC&tar_type=GZIP&algorithm=AEAD_AES_256_GCM

{
JAVA示例代码
}

返回参数

参数名 变量 类型[长度限制] 必填 描述
下载信息总数 download_bill_count int 下载信息总数
示例值:1
+下载信息明细 download_bill_list array 下载信息明细
参数名 变量 类型[长度限制] 必填 描述
账单文件序号 bill_sequence int 商户将多个文件按账单文件序号的顺序合并为完整的资金账单文件,起始值为1
示例值:1
哈希类型 hash_type string[1,32] 枚举值:
SHA1:SHA1值
示例值:SHA1
哈希值 hash_value string[1,1024] 原始账单(gzip需要解压缩)的摘要值,用于校验文件的完整性
示例值:79bb0f45fc4c42234a918000b2668d689e2bde04
账单下载地址 download_url string[1,2048] 供下一步请求账单文件的下载地址,该地址5min内有效。
示例值:https://api.mch.weixin.qq.com/v3/bill/downloadurl?token=xxx
加密密钥 encrypt_key string[1,512] 加密账单文件使用的加密密钥。密钥用商户证书的公钥进行加密,然后进行Base64编码
示例值:YpkbxSne+mDwyXq//xYPmtr9eQ5LsH7zLMZSs+GSEcY4wjhlsfioS4n9X6q1ZBL0wM1v5qd7KhWuj0rFJ4N1FidP7Q8KDy25QDTt46wiKnsPKSCAXWRFNw1D2JmJBqZsc9y5g0DupONWKYB2GfRigRDEBVszj67uOIILPdxOKX1w3N4jvu0U9IFanJa7ldm70KVvYrMWVgQFDPbgjh1gVDbuTAjmPN88AobLdkiegnBUS2woDZW+PfhPo13kweOiR3h1gXIKRlnKnN3Jkkwpna/AFFijXrFphO3voSuiV0CfptfzTtcae4X3DYG3RSroKqmpa+5tuy2aU2VJUSIuFQ==
随机字符串 nonce string[1,16] 加密账单文件使用的随机字符串
示例值:a8607ef79034c49c

返回示例


{
  "download_bill_count": 1,
  "download_bill_list": [
    {
      "bill_sequence": 1,
      "hash_type": "SHA1",
      "hash_value": "79bb0f45fc4c42234a918000b2668d689e2bde04",
      "download_url": "https://api.mch.weixin.qq.com/v3/bill/downloadurl?token=xxx",
      "encrypt_key": "YpkbxSne+mDwyXq//xYPmtr9eQ5LsH7zLMZSs+GSEcY4wjhlsfioS4n9X6q1ZBL0wM1v5qd7KhWuj0rFJ4N1FidP7Q8KDy25QDTt46wiKnsPKSCAXWRFNw1D2JmJBqZsc9y5g0DupONWKYB2GfRigRDEBVszj67uOIILPdxOKX1w3N4jvu0U9IFanJa7ldm70KVvYrMWVgQFDPbgjh1gVDbuTAjmPN88AobLdkiegnBUS2woDZW+PfhPo13kweOiR3h1gXIKRlnKnN3Jkkwpna/AFFijXrFphO3voSuiV0CfptfzTtcae4X3DYG3RSroKqmpa+5tuy2aU2VJUSIuFQ==",
      "nonce": "a8607ef79034c49c"
    }
  ]
}
                    

http://2323weixin.qq.com
                    

文件格式说明

账单文件包括明细数据和汇总数据两部分,每一部分都包含一行表头和若干行具体数据。 明细数据每一行对应一笔资金操作,同时每一个数据前加入了字符`,以避免数据被Excel按科学计数法处理。如需汇总金额等数据,可以批量替换掉该字符。

示例:《解密后的账单示例


文件分割和合并

当电商平台的二级商户资金账单文件太大(未压缩情况下约大于16GB)时,微信支付会对账单文件进行分割,此时接口会返回多个下载地址。商户分别根据下载地址下载账单文件并解密。解密后,将多个文件按账单文件序号(变量名:bill_sequence)的顺序合并为完整的资金账单文件。
商户需要注意,当返回多个下载地址时,商户依然需要在下载地址有效时间内发起下载请求。因此建议商户获取到下载地址后,并发请求下载。

文件解密

解密流程

电商平台二级商户资金账单文件采用商户指定的加密算法(目前只支持AES-256-GCM算法)进行加密,商户需要进行解密才能得到账单明文。注意,使用GZIP格式获取资金账单后,先解密后解压缩。解密流程是:
步骤一:下载账单文件,得到账单文件密文ciphertext;
步骤二:使用商户证书私钥解密从接口获取的加密密钥(变量名:encrypt_key)得到密钥明文key;
步骤三:利用步骤一、二中得到的账单密文ciphertext,密钥key和接口返回的随机字符串nonce解密账单,得到账单明文。

代码示例

账单文件解密代码示例请参考[WechatPay-API-v3 证书和回调报文解密],注意:返回的账单文件是二进制密文,需以字节数组形式处理,不需要进行Base64解码。

下面对解密代码中使用的参数进行说明:



 {
        // 密文
        "ciphertext": "下载得到的账单文件密文",
        // 加密使用的密钥
        "key": "用商户证书私钥解密加密密钥得到的明文",
        // 加密使用的随机字符串
        "nonce": "接口返回的随机字符串", 
        // 附加数据包(填空)
        "associated_data": "" 
   } 
                    

http://2323weixin.qq.com
                    

下面对如何用商户证书私钥解密加密密钥进行说明:
商户从接口获取的加密密钥(变量名:encrypt_key)是使用商户证书公钥进行RSA加密返回的密文,商户解密后才能得到密钥原文。
解密流程如下:对encrypt_key先做Base64解码,然后对解码结果使用商户证书私钥进行RSA解密,指定填充方式为最优非对称加密填充(OAEP)。
下面我们使用命令行演示如何解密,更多的示例可以参考[WechatPay-API-v3 敏感信息加密]。 解密AES密钥得到key:



 $ echo -n { encrypt_key }  | openssl enc -A -base64 -d | openssl rsautl -decrypt -oaep -inkey {商户证书私钥文件} 
                    

http://2323weixin.qq.com
                    

错误码公共错误码

状态码 错误码 描述 解决方案
500 SYSTEM_ERROR 系统错误 系统异常,请使用相同参数稍后重新调用
403 NO_AUTH 权限异常 请检查mchid是否为电商平台
403 NO_AUTH 权限异常 请电商平台在产品中心开通下载二级商户资金账单产品权限
400 PARAM_ERROR 参数错误 请使用正确的参数重新调用
400 INVALID_REQUEST 参数错误 请检查bill_date,仅支持下载3个月以内的资金流水账单
400 NO_STATEMENT_EXIST 请求的账单文件不存在 请检查电商平台二级商户在指定日期是否有资金操作
400 STATEMENT_CREATING 账单生成中 请先检查电商平台二级商户在指定日期内是否有资金操作,若有,则在T+1日上午10点后再重新下载
429 FREQUENCY_LIMITED 请求过于频繁 请降低调用频率


版本说明

关闭
V1.0
2020年08月10
申请二级商户资金账单接口上线

技术咨询

文档反馈