下載對賬單API
商戶可以通過該接口下載歷史交易清單。比如掉單、系統(tǒng)錯誤等導致商戶側和微信側數(shù)據(jù)不一致,通過對賬單核對后可校正支付狀態(tài)。
? 賬單完整性校驗:賬單完整下載后,生成SHA1簽名與微信返回HTTP頭的Wechatpay-Statement-Sha1值做對比校驗。
? 對賬單接口只支持下載180天以內(nèi)的賬單。
商戶可以通過該接口下載歷史交易清單。比如掉單、系統(tǒng)錯誤等導致商戶側和微信側數(shù)據(jù)不一致,通過對賬單核對后可校正支付狀態(tài)。
? 賬單完整性校驗:賬單完整下載后,生成SHA1簽名與微信返回HTTP頭的Wechatpay-Statement-Sha1值做對比校驗。
? 對賬單接口只支持下載180天以內(nèi)的賬單。
適用對象:直連模式機構模式
請求URL:https://apihk.mch.weixin.qq.com/v3/global/statements
請求方式: GET
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
商戶號 | 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天以內(nèi)的賬單。 示例值:20180130 |
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
成功時,數(shù)據(jù)以文本表格的方式返回,第一行為表頭,后面各行為對應的字段內(nèi)容,字段內(nèi)容跟查詢訂單或退款結果一致,具體字段說明可查閱相應接口。
1)第一行為表頭,目前有:交易時間,公眾賬號ID,商戶號,子商戶號,設備號,微信訂單號,商戶訂單號,用戶標識,交易類型,交易狀態(tài),付款銀行,充值券幣種,充值券金額,優(yōu)惠券幣種,優(yōu)惠券金額,微信退款單號,商戶退款單號,退款類型,退款狀態(tài),商品名稱,商戶數(shù)據(jù)包,手續(xù)費,費率,標價幣種,訂單金額(標價幣種),用戶支付幣種,用戶支付金額,結算幣種,應結訂單金額,支付匯率,退款匯率,申請退款金額,用戶退款幣種,用戶退款金額,退款結算幣種,退款應結訂單金額,充值券退款金額,優(yōu)惠券退款金額。
2)從第二行起,為數(shù)據(jù)記錄,各參數(shù)以逗號分隔,參數(shù)前增加`符號,為標準鍵盤1左邊鍵的字符,字段順序與表頭一致。
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | code | string[1, 32] | 是 | 錯誤碼,枚舉值見錯誤碼列表 示例值:INVALID_REQUEST |
返回信息 | message | string[1, 256] | 是 | 返回信息,如非空,為錯誤原因 示例值:參數(shù)格式校驗錯誤 |
詳細的錯誤描述 | detail | object | 否 | 當code為PARAM_ERROR時返回,詳細說明見下 |
{
"code": "INVALID_REQUEST",
"message": "Parameter format verification error",
"detail": {
"field": "#/properties/payer",
"value": "1346177081915535577",
"issue": "與ALLOF schema不符",
"location": "body"
}
}
首先從應答中獲取HTTP頭Wechatpay-Nonce中的應答隨機串,Wechatpay-Timestamp中的應答時間戳,Wechatpay-Statement-Sha1中取得賬單SHA1值。
請按照以下規(guī)則構造應答的簽名串。\n為換行符(ASCII編碼值為0x0A)。
應答時間戳\n
應答隨機串\n
賬單SHA1\n
\n
則簽名串為:
1507709906
5K8264ILTKch16CQ2502SI8ZNMTM67VS
{"sha1" : "12345678999"}
微信支付應答簽名通過HTTP頭Wechat-Signature傳遞。(注意,示例因為排版可能存在換行,實際數(shù)據(jù)應在一行) Wechatpay-Signature: WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAl wmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=,對Wechatpay-Signature的字段值使用Base64進行解碼,得到應答簽名。
很多編程語言的簽名驗證函數(shù)支持對“簽名數(shù)據(jù)”進行簽名驗證。建議商戶調用該類函數(shù),使用微信支付平臺公鑰對“簽名串”進行SHA256 with RSA簽名驗證。
如果商戶使用的編程語言或者庫只支持對“摘要數(shù)據(jù)”進行簽名驗證,請按照以下步驟驗證簽名:
1.使用SHA256計算簽名串的摘要,得到摘要信息
2.使用微信支付平臺公鑰對摘要信息進行RSA簽名驗證(簽名類型為SHA256)。請參考OpenSSL的RSA_verify()
賬單完整下載后,生成SHA1簽名與微信Wechatpay-Statement-Sha1值做賬單完整性的校驗。
錯誤碼 | 描述 | 解決方案 |
---|---|---|
SYSTEM_ERROR | 微信支付內(nèi)部錯誤 | 請稍后重試 |
PARAM_ERROR | 參數(shù)錯誤 | 請對照文檔的請求參數(shù)說明檢查參數(shù) |
NO_STATEMENT_EXIST | 賬單不存在 | 請檢查當前商戶號的微信賬戶在指定日期內(nèi)是否有資金變動。 |
BILL_CREATING | 賬單生成中 | 請先檢查當前商戶號在指定日期內(nèi)是否有成功的交易,如指定日期有交易則表示賬單正在生成中,請在上午10點以后再下載。 |
Customer Service Tel
Business Development
9:00-18:00
Monday-Friday GMT+8
Technical Support
WeChat Pay Global
ICP證