Login expired. Please log in again.

Feedback

0/300

Feedback

Submitted successfully

ok

Feedback

Network exception, please try again later

ok

下载对账单API

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

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

注意:

• 账单完整性校验:账单完整下载后,生成SHA1签名与微信返回HTTP头的Wechatpay-Statement-Sha1值做对比校验。

• 对账单接口只支持下载180天以内的账单。

1. 接口说明

适用对象:直连模式机构模式

请求URL:https://apihk.mch.weixin.qq.com/v3/global/statements

请求方式: GET


Path指该参数为路径参数
Query指该参数为URL参数
Body指该参数需在请求JSON传参

2. 请求参数

参数名 变量 类型[长度限制] 必填 描述
商户号 mchid string[1,32] Query 微信支付分配的商户号
注意:仅适用于直连模式
示例值:1900000109
机构商户号 sp_mchid string[1, 32] Query微信支付分配的机构商户号
注意:仅适用于机构模式
示例值:1900000100
子商户号 sub_mchid string[1, 32] Query微信支付分配的子商户号
示例值:1900000109
账单日期 date string[1,8] Query 账单日期,格式:20180103
对账单接口只支持下载180天以内的账单。
示例值:20180130

请求示例


		https://apihk.mch.weixin.qq.com/v3/global/statements?date=20180130&mchid=1900000109
  

https://apihk.mch.weixin.qq.com/v3/global/statements?date=20180130&sp_mchid=1900000109
https://apihk.mch.weixin.qq.com/v3/global/statements?date=20180130&sp_mchid=1900000109&sub_mchid=1900000102
  

3. 返回参数

正常返回

成功时,数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。

1)第一行为表头,目前有:交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,充值券币种,充值券金额,优惠券币种,优惠券金额,微信退款单号,商户退款单号,退款类型,退款状态,商品名称,商户数据包,手续费,费率,标价币种,订单金额(标价币种),用户支付币种,用户支付金额,结算币种,应结订单金额,支付汇率,退款汇率,申请退款金额,用户退款币种,用户退款金额,退款结算币种,退款应结订单金额,充值券退款金额,优惠券退款金额。

2)从第二行起,为数据记录,各参数以逗号分隔,参数前增加`符号,为标准键盘1左边键的字符,字段顺序与表头一致。

异常返回

参数名 变量 类型[长度限制] 必填 描述
返回状态码 code string[1, 32] 错误码,枚举值见错误码列表
示例值:INVALID_REQUEST
返回信息 message string[1, 256] 返回信息,如非空,为错误原因
示例值:参数格式校验错误
详细的错误描述 detail object 当code为PARAM_ERROR时返回,详细说明见下
参数名 变量 类型[长度限制] 必填 描述
指示错误参数的位置 field string[1, 256] 当错误参数位于请求body的JSON时,填写指向参数的JSON Pointer
当错误参数位于请求的url或者querystring时,填写参数的变量名
示例值:#/properties/payer
错误参数的值 value string[1, 256] 错误参数的值
示例值:1346177081915535577
具体错误原因 issue string[1, 256] 具体错误原因
示例值:与ALLOF schema不符
错误参数的位置 location string[1, 256] body:错误参数位于请求body的JSON中
url:错误参数位于请求url中
query:错误参数位于请求的querystring中
示例值:body

返回示例


{
	"code": "INVALID_REQUEST",
	"message": "Parameter format verification error",
	"detail": {
		"field": "#/properties/payer",
		"value": "1346177081915535577",
		"issue": "与ALLOF schema不符",
		"location": "body"
	}
}

{
	"code": "INVALID_REQUEST",
	"message": "Parameter format verification error",
	"detail": {
		"field": "#/properties/payer",
		"value": "1346177081915535577",
		"issue": "与ALLOF schema不符",
		"location": "body"
	}
}

4. 应答签名校验说明

4.1. 构造签名串

首先从应答中获取HTTP头Wechatpay-Nonce中的应答随机串,Wechatpay-Timestamp中的应答时间戳,Wechatpay-Statement-Sha1中取得账单SHA1值。

请按照以下规则构造应答的签名串。\n为换行符(ASCII编码值为0x0A)。

    应答时间戳\n
    应答随机串\n
    账单SHA1\n
    \n

则签名串为:

    1507709906
    5K8264ILTKch16CQ2502SI8ZNMTM67VS
    {"sha1" : "12345678999"}
    
注意
标红的sha1值特殊处理为json格式进行签名;签名串最后一行为空,即多一个换行符

4.2. 获取应答签名

微信支付应答签名通过HTTP头Wechat-Signature传递。(注意,示例因为排版可能存在换行,实际数据应在一行) Wechatpay-Signature: WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAl wmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=,对Wechatpay-Signature的字段值使用Base64进行解码,得到应答签名。

4.3. 验证签名

很多编程语言的签名验证函数支持对“签名数据”进行签名验证。建议商户调用该类函数,使用微信支付平台公钥对“签名串”进行SHA256 with RSA签名验证。

如果商户使用的编程语言或者库只支持对“摘要数据”进行签名验证,请按照以下步骤验证签名:

1.使用SHA256计算签名串的摘要,得到摘要信息

2.使用微信支付平台公钥对摘要信息进行RSA签名验证(签名类型为SHA256)。请参考OpenSSL的RSA_verify()

注意
微信支付证书序列号位于HTTP头`Wechatpay-Serial`,验证签名前请先检查序列号是否跟商户所持有的微信支付证书序列号一致。更新证书的说明,请参考《获取微信支付平台证书》。

4.4. 验证账单完整性

账单完整下载后,生成SHA1签名与微信Wechatpay-Statement-Sha1值做账单完整性的校验。

5. 错误码

错误码 描述 解决方案
SYSTEM_ERROR 微信支付内部错误 请稍后重试
PARAM_ERROR 参数错误 请对照文档的请求参数说明检查参数
NO_STATEMENT_EXIST 账单不存在 请检查当前商户号的微信账户在指定日期内是否有资金变动。
BILL_CREATING 账单生成中 请先检查当前商户号在指定日期内是否有成功的交易,如指定日期有交易则表示账单正在生成中,请在上午10点以后再下载。


    页面导航

About  WeChat  Pay

Powered By Tencent & Tenpay Copyright©

2005-2024 Tenpay All Rights Reserved.

Contact Us
Wechat Pay Global

WeChat Pay Global

置顶