下载交易账单
更新时间:2025.03.21商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
|
接口说明
适用对象: 直连模式 机构模式
请求URL: https://apihk.mch.weixin.qq.com/pay/downloadbill
请求方式: POST
是否需要证书: 否
请求参数
参数名 | 变量 | 类型 | 必填 | 描述 |
|---|---|---|---|---|
公众账号ID | appid | string(32) | 是 | 微信分配的公众账号ID |
商户号 | mch_id | string(32) | 是 | 微信支付分配的商户号 |
随机字符串 | nonce_str | string(32) | 是 | 随机字符串,不长于32位。推荐随机数生成算法 |
签名 | sign | string(64) | 是 | 签名,详见签名生成算法 |
签名类型 | sign_type | string(32) | 否 | 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5 |
对账单日期 | bill_date | string(8) | 是 | 下载对账单的日期,格式:20140603 |
账单类型 | bill_type | string(8) | 否 | ALL:(默认值),返回当日所有订单信息(不含充值退款订单) |
压缩账单 | tar_type | string(8) | 否 | 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。 |
请求示例:
返回结果
字段名 | 变量 | 类型 | 必填 | 描述 |
|---|---|---|---|---|
返回状态码 | return_code | string(16) | 是 | SUCCESS/FAIL |
返回信息 | return_msg | string(128) | 是 | 返回信息,如非空,为错误原因,签名失败,参数格式校验错误 |
请求成功后,返回的数据将包含一行表头,其中列出了后续各行数据的字段。
第一行即为表头行,其具体内容取决于商户请求的账单类型(由 bill_type 参数指定),并包含了后续数据行所包含的各项字段。
参数名 | 变量 | 字段释义 | 支付示例 | 退款示例 |
交易时间 | Transaction time | 指该笔交易的支付成功时间或发起退款成功时间(注:不是退款成功时间),格式为yyyy-MM-dd HH:MM:SS | `2024-03-09 19:15:48 | `2024-03-09 19:46:27 |
公众账号ID | Official account ID(appid) | 发起该笔交易时使用的appid,appid是由微信给公众号或app等分配的唯一标识 | `wx87b0b4160031234 | `wx87b0b4160031234 |
商户号 | Vendor ID(mch_id) | 发起该笔交易下单的微信支付商户号 | `123450000 | `123450000 |
子商户号 | Sub vendor ID(sub_mch_id) | 发起该笔交易下单的子商户号 | `600000001 | `600000001 |
设备号 | Device ID(Device_info) | 对应在下单时传入的device_info字段,没填写则留空 | `013467007045764 | `013467007045764 |
微信订单号 | Wechat order number(transaction_id) | 微信支付为该笔订单(或该笔退款对应的订单)分配的订单号 | `4200002193202403093640737027 | `4200002193202403093640737027 |
商户订单号 | Vendor order number(out_trade_no) | 商户传入的该笔订单(或该笔退款对应的订单)的商户订单号,对应下单接口里的out_trade_no字段 | `20240309458890656874661888 | `20240309458890656874661888 |
用户标识 | User tag(openid) | 微信为支付用户在公众账号ID(appid)下分配的唯一标识(openid) | `oc-J25YZ8cfVl0pBgwQfjIjkgAB1 | `oc-J25YZ8cfVl0pBgwQfjIjkgAB1 |
交易类型 | Transaction type(trade_type) | 该笔订单(或该笔退款单对应的订单)的类型,使用英文缩写展示,包括但不限于(后续可能新增): | `JSAPI | `JSAPI |
MICROPAY,付款码支付 | ||||
JSAPI,JSAPI支付、小程序支付 | ||||
NATIVE,Native支付 | ||||
APP,APP支付 | ||||
FACE,刷脸支付 | ||||
AUTH,代扣支付 | ||||
交易状态 | Transaction status(trade_state) | 标识该笔明细数据的类型: | `SUCCESS | `REFUND |
SUCCESS,支付成功,说明该行数据为一笔支付成功的订单 | ||||
REFUND,转入退款,说明该行数据为一笔发起退款成功的退款单 | ||||
付款银行 | Payment bank(bank_type) | 用户支付时使用的付款方式,包括但不限于(后续可能新增): | `CCB_DEBIT | `CCB_DEBIT |
XXX_CREDIT,用户使用了XXX银行的一张信用卡付款 | ||||
XXX_DEBIT,用户使用了XXX银行的一张储蓄卡付款 | ||||
WPHK,用户使用了香港钱包付款 | ||||
OTHERS,用户使用了中国钱包零钱/零钱通等其他付款方式 | ||||
货币种类 | Currency type(fee_type) | 订单货币类型,符合ISO 4217标准的三位字母代码 | `CNY | `CNY |
总金额 | Total amount(total_fee) | 支付金额(参与计费的金额,标价币种) | `499.00 | `0.00 |
如果该行数据为退款则展示0.00 | ||||
单位元,保留到小数点后2位 | ||||
代金券或立减优惠金额 | Coupon amount | 该笔订单中使用的微信支付代金券金额 | `0.00 | `0.00 |
如果未使用代金券、或该行数据为退款、则展示0.00 | ||||
单位元,保留到小数点后2位 | ||||
微信退款单号 | Wechat refund number(refund_id) | 微信支付为该笔退款分配的退款单号,如果该行数据为支付(交易状态SUCCESS)则展示0 | `0 | `50201309022024030935709090246 |
商户退款单号 | Vendor refund number(out_refund_no) | 商户发起退款时填入的商户退款单号,如果该行数据为支付(交易状态SUCCESS)则展示0 | `0 | `20240309458898381658624512 |
退款金额 | Refund amount(refund_fee) | 退款金额(参与计费的金额) | `0.00 | `499.00 |
如果该行数据为支付则展示0.00 | ||||
单位元,保留到小数点后2位 | ||||
代金券或立减优惠退款金额 | Coupon refund amount | 退款金额中包含的充值券退款金额,如果该行数据为订单或没有充值券退款则展示为0.00,非负数、单位元,保留到小数点后2位 | `0.00 | `0.00 |
退款类型 | Refund type | ORIGINAL—原路退款 | ` | `ORIGINAL |
退款状态 | Refund status(refund_status) | 生成账单文件时该笔退款的状态、出账后不会更新,如果该行数据为支付(交易状态SUCCESS),则留空 | ` | `SUCCESS |
SUCCESS,退款成功 | ||||
PROCESSING,退款处理中 | ||||
商品名称 | Product name | 商户传入的该笔支付(或该笔退款对应的订单)的商品名称,对应下单接口里的body字段 | `80695507873 | `80695507873 |
商户数据包 | Vendor's data package(attach) | 商户传入的该笔支付(或该笔退款对应的订单)的商户数据包,对应下单接口里的attach字段,不传时留空 | ` | ` |
手续费 | Fee | 该笔支付/退款对应的手续费金额(结算币种),支付对应正数、退款对应负数,单位元,保留小数点后2位 | `2.69000 | `-2.69000 |
费率 | Rate | 该笔交易计费所使用的费率,百分数 | `0.50% | `0.50% |
用户支付币种 | Payment Currency type(Cash_fee_type) | 用户支付币种 | `CNY | `CNY |
用户支付金额 | Cash payment amount(Cash_fee) | 用户支付金额 | `499.00 | `0.00 |
结算币种 | Settlement currency type | 结算币种 | `HKD | `HKD |
结算币种金额 | Settlement currency amount | 结算币种金额 | `538.95 | `0.00 |
汇率 | Exchange rate | 汇率 | `92585931 | `0 |
退款汇率 | Refund exchange rate | 退款汇率 | `0 | `92585931 |
用户退款金额 | Payer’s Refund amount | 用户退款金额 | `0 | `499.00 |
用户退款金额 | Payer’s Refund currency type | 用户退款金额 | ` | `CNY |
退款币种 | Refund currency type | 退款币种 | ` | `CNY |
退款结算币种 | Refund settlement currency type | 退款结算币种 | ` | `HKD |
结算币种退款金额 | Refund settlement amount | 结算币种退款金额 | `0.00 | `538.95 |
分账类型(新版本展示) | Fund type | `是否分账订单,包括: SplittingOrder分账订单 NonSplittingOrder非分账订单 | `NonSplittingOrder | `NonSplittingOrder |
手续费RMB(新版本展示) | Fee RMB | 该笔支付/退款对应的手续费金额(人民币),支付对应正数、退款对应负数,单位元,保留小数点后2位 | `2.50000 | `2.50000 |
退款出资账户(新版本展示) | Refund account | `退款出资账户,包括: UnsettledFund未结算余额 RechargeFund充值余额 | `UnsettledFund | `UnsettledFund |
交易记录从第二行开始;各交易字段以逗号分隔,并以“`”字符(位于标准键盘“1”键右侧)开头,排列顺序与返回数据首行(表头行)中的字段顺序一致。
对账文件的最后两行显示了所有交易的汇总信息,具体字段如下:
交易总笔数、交易总金额、退款总金额、优惠券退款总金额、佣金总金额。
Total transaction count | Total transaction amount | Total refund amount | Total coupon refund amount | Total commission amount |
|---|---|---|---|---|
`110 | `6096.73 | `0.00 | `0.00 | `152.45000 |
错误码
错误码 | 名称 | 描述 | 原因 | 解决方案 |
|---|---|---|---|---|
100 | SYSTEM_ERROR | 下载失败 | 系统超时 | 请尝试再次查询 |
100 | Network_Traffic_Limit | 网络流量限制 | 当前系统请求繁忙 | 请尝试再次查询 |
20003 | SYSTEM_ERROR | 下载失败 | 系统超时 | 请尝试再次查询 |
20001 | sign error | 签名错误 | 请求参数未按要求进行填写 | 签名错误,请重新检查参数和签名密钥是否正确 |
nonce_str too long | 参数nonce_str错误 | 请求参数未按要求填写 | 参数nonce_str长度超长 | |
invalid tar_type, Only GZIP supported | 参数tar_type错误 | 请求参数未按指引进行填写 | 请重新检查参数invalid tar_typ是否正确 | |
invalid bill_type | 参数bill_type错误 | 请求参数未按指引进行填写 | 请重新检查参数bill_type是否正确 | |
invalid bill_date | 参数bill_date错误 | 请求参数未按指引进行填写 | 请重新检查参数bill_date是否符合要求 | |
require POST method | 请求方式错误 | 请求方式不符合要求 | 请求检查参数请求方式是否为post | |
empty post data | 请求报文错误 | 请求报文为空 | 请重新检查请求报文是否正确 | |
data format error | 参数格式错误 | 请求参数要求为xml格式 | 请重新检查请求参数格式是否为xml | |
missing parameter | 缺少参数 | 有必传的参数未上传 | 请重新检查是否所有必传参数都上传了,且不为空 | |
invalid appid | appid错误 | 请求参数appid有误 | 请重新检查参数appid是否正确 | |
invalid parameter | 参数错误 | 有未知的请求参数 | 请重新检查是否所有参数都与文档相符 | |
20002 | NO Bill Exist | 账单不存在 | 当前商户号没有已成交的订单,不生成对账单 | 请检查当前商户号在指定日期内是否有成功的交易。 |
Bill Creating | 账单未生成 | 当前商户号没有已成交的订单或对账单尚未生成 | 请先检查当前商户号在指定日期内是否有成功的交易,如指定日期有交易则表示账单正在生成中,请在上午10点以后再下载。 | |
20007 | 当前商户号账单API权限已经关闭 | 当前商户号账单API权限已经关闭 | 当前商户号账单API权限已经关闭 | 当前商户号账单API权限已经关闭,请联系微信支付解决 |
20008 | Frequency Limited | 请求频率超过限制 | 当前IP或商户号的请求过于频繁,超过了频率限制 | 请放慢请求速度,稍后再次查询 |
20100 | SYSTEM_ERROR | 下载失败 | 系统超时 | 请尝试再次查询 |

