视频一区二区三区自拍_千金肉奴隷1985未删减版在线观看_国产成人黄色视频在线播放_少女免费播放片高清在线观看_国产精品v欧美精品v

商戶(hù)進(jìn)件
特約商戶(hù)進(jìn)件
基礎(chǔ)支付
JSAPI支付
APP支付
H5支付
Native支付
小程序支付
合單支付
付款碼支付
經(jīng)營(yíng)能力
支付即服務(wù)
點(diǎn)金計(jì)劃
行業(yè)方案
平臺(tái)收付通(商戶(hù)進(jìn)件)
平臺(tái)收付通(普通支付)
平臺(tái)收付通(合單支付)
平臺(tái)收付通(分賬)
平臺(tái)收付通(補(bǔ)差)
平臺(tái)收付通(退款)
平臺(tái)收付通(余額查詢(xún))
平臺(tái)收付通(商戶(hù)提現(xiàn))
平臺(tái)收付通(注銷(xiāo)申請(qǐng))
平臺(tái)收付通(注銷(xiāo)后提現(xiàn))
平臺(tái)收付通(跨境付款)
平臺(tái)收付通(下載賬單)
智慧商圈
微信支付分停車(chē)服務(wù)
電子發(fā)票
營(yíng)銷(xiāo)工具
代金券
商家券
委托營(yíng)銷(xiāo)
支付有禮
小程序發(fā)券插件
H5發(fā)券
圖片上傳(營(yíng)銷(xiāo)專(zhuān)用)
現(xiàn)金紅包
資金應(yīng)用
分賬
連鎖品牌分賬
風(fēng)險(xiǎn)合規(guī)
商戶(hù)開(kāi)戶(hù)意愿確認(rèn)
消費(fèi)者投訴2.0
商戶(hù)違規(guī)通知回調(diào)
其他能力
圖片上傳
視頻上傳
微信支付平臺(tái)證書(shū)

申請(qǐng)單個(gè)子商戶(hù)資金賬單API

最新更新時(shí)間:2021.12.10 版本說(shuō)明


微信支付按天提供微信支付賬戶(hù)的資金流水賬單文件,服務(wù)商可以通過(guò)該接口獲取子商戶(hù)賬單文件的下載地址。文件內(nèi)包含子商戶(hù)資金操作相關(guān)的業(yè)務(wù)單號(hào)、收支金額、記賬時(shí)間等信息,供商戶(hù)進(jìn)行核對(duì)。


注意:

? 資金賬單中的數(shù)據(jù)反映的是子商戶(hù)微信賬戶(hù)資金變動(dòng)情況;

? 當(dāng)日賬單在次日上午9點(diǎn)開(kāi)始生成,建議商戶(hù)在上午10點(diǎn)以后獲取;

? 資金賬單中涉及金額的字段單位為“元”;

? 該接口只能下載三個(gè)月以?xún)?nèi)的資金流水賬單。

? 需提前在【服務(wù)商平臺(tái) -> 產(chǎn)品中心】開(kāi)通“下載二級(jí)商戶(hù)資金賬單”產(chǎn)品權(quán)限。

接口說(shuō)明

適用對(duì)象:服務(wù)商 電商平臺(tái)

請(qǐng)求URL:https://api.mch.weixin.qq.com/v3/bill/sub-merchant-fundflowbill

請(qǐng)求方式:GET


path指該參數(shù)為路徑參數(shù)

query指該參數(shù)需在請(qǐng)求URL傳參

body指該參數(shù)需在請(qǐng)求JSON傳參


請(qǐng)求參數(shù)

參數(shù)名 變量 類(lèi)型[長(zhǎng)度限制] 必填 描述
子商戶(hù)號(hào) sub_mchid string[1, 32] query下載指定子商戶(hù)的賬單。
示例值:19000000001
賬單日期 bill_date string[10, 10] query格式y(tǒng)yyy-MM-dd
示例值:2019-06-11
資金賬戶(hù)類(lèi)型 account_type string[1, 16] query枚舉值:
BASIC:基本賬戶(hù)
OPERATION:運(yùn)營(yíng)賬戶(hù)
FEES:手續(xù)費(fèi)賬戶(hù)
示例值:BASIC
加密算法 algorithm string[1, 31] query枚舉值:
AEAD_AES_256_GCM:AEAD_AES_256_GCM加密算法
SM4_GCM:SM4_GCM加密算法,密鑰長(zhǎng)度128bit
示例值:AEAD_AES_256_GCM
壓縮格式 tar_type string[1, 8] query不填則以不壓縮的方式返回?cái)?shù)據(jù)流
枚舉值:
GZIP:返回格式為.gzip的壓縮包賬單
示例值:GZIP

請(qǐng)求示例


https://api.mch.weixin.qq.com/v3/bill/sub-merchant-fundflowbill?sub_mchid=19000000001&bill_date=2019-06-11&account_type=BASIC&algorithm=AEAD_AES_256_GCM&tar_type=GZIP
    
{
JAVA示例代碼
}
    

返回參數(shù)

參數(shù)名 變量 類(lèi)型[長(zhǎng)度限制] 必填 描述
下載信息總數(shù) download_bill_count int 下載信息總數(shù)
示例值:1
+下載信息明細(xì) download_bill_list array 下載信息明細(xì)
參數(shù)名 變量 類(lèi)型[長(zhǎng)度限制] 必填 描述
賬單文件序號(hào) bill_sequence int 商戶(hù)將多個(gè)文件按賬單文件序號(hào)的順序合并為完整的資金賬單文件,起始值為1
示例值:1
下載地址 download_url string[1,2048] 下載地址30s內(nèi)有效
示例值:https://api.mch.weixin.qq.com/v3/bill/downloadurl?token=xxx
加密密鑰 encrypt_key string[1,512] 加密賬單文件使用的加密密鑰。密鑰用商戶(hù)證書(shū)的公鑰進(jìn)行加密,然后進(jìn)行Base64編碼
示例值:a0YK7p+9XaKzE9N4qtFfG/9za1oqKlLXXJWBkH+kX84onAs2Ol/E1fk+6S+FuBXczGDRU8I8D+6PfbwKYBGm0wANUTqHOSezzfbieIo2t51UIId7sP9SoN38W2+IcYDviIsu59KSdyiL3TY2xqZNT8UDcnMWzTNZdSv+CLsSgblB6OKGN9JONTadOFGfv1OKkTp86Li+X7S9bG62wsa572/5Rm4MmDCiKwY4bX2EynWQHBEOExD5URxT6/MX3F1D3BNYrE4fUu1F03k25xVlXnZDjksy6Rf3SCgadR+Cepc6mdfF9b2gTxNsJFMEdYXbqL0W1WQZ3UqSPQCguK6uLA==
哈希類(lèi)型 hash_type string[1,32] 原始賬單(gzip需要解壓縮)的摘要值,用于校驗(yàn)文件的完整性。
示例值:SHA1
哈希值 hash_value string[1,1024] 原始賬單(gzip需要解壓縮)的摘要值,用于校驗(yàn)文件的完整性
示例值:79bb0f45fc4c42234a918000b2668d689e2bde04
隨機(jī)字符串 nonce string[1,16] 加密賬單文件使用的隨機(jī)字符串
示例值:a8607ef79034c49c

返回示例


{
  "download_bill_count": 1,
  "download_bill_list": [
    {
      "bill_sequence": 1,
      "download_url": "https://api.mch.weixin.qq.com/v3/bill/downloadurl?token=xxx",
      "encrypt_key": "a0YK7p+9XaKzE9N4qtFfG/9za1oqKlLXXJWBkH+kX84onAs2Ol/E1fk+6S+FuBXczGDRU8I8D+6PfbwKYBGm0wANUTqHOSezzfbieIo2t51UIId7sP9SoN38W2+IcYDviIsu59KSdyiL3TY2xqZNT8UDcnMWzTNZdSv+CLsSgblB6OKGN9JONTadOFGfv1OKkTp86Li+X7S9bG62wsa572/5Rm4MmDCiKwY4bX2EynWQHBEOExD5URxT6/MX3F1D3BNYrE4fUu1F03k25xVlXnZDjksy6Rf3SCgadR+Cepc6mdfF9b2gTxNsJFMEdYXbqL0W1WQZ3UqSPQCguK6uLA==",
      "hash_type": "SHA1",
      "hash_value": "79bb0f45fc4c42234a918000b2668d689e2bde04",
      "nonce": "a8607ef79034c49c"
    }
  ]
}
                                

    http://2323weixin.qq.com
                                

文件格式說(shuō)明

賬單文件包括明細(xì)數(shù)據(jù)和匯總數(shù)據(jù)兩部分,每一部分都包含一行表頭和若干行具體數(shù)據(jù)。
明細(xì)數(shù)據(jù)每一行對(duì)應(yīng)一筆資金操作,同時(shí)每一個(gè)數(shù)據(jù)前加入了字符,以避免數(shù)據(jù)被Excel按科學(xué)計(jì)數(shù)法處理。如需匯總金額等數(shù)據(jù),可以批量替換掉該字符。


文件分割和合并

當(dāng)子商戶(hù)資金賬單文件太大(未壓縮情況下約大于16GB)時(shí),微信支付會(huì)對(duì)賬單文件進(jìn)行分割,此時(shí)接口會(huì)返回多個(gè)下載地址。商戶(hù)分別根據(jù)下載地址下載賬單文件并解密。解密后,將多個(gè)文件按賬單文件序號(hào)(變量名:bill_sequence)的順序合并為完整的資金賬單文件。
商戶(hù)需要注意,當(dāng)返回多個(gè)下載地址時(shí),商戶(hù)依然需要在下載地址有效時(shí)間內(nèi)發(fā)起下載請(qǐng)求。因此建議商戶(hù)獲取到下載地址后,并發(fā)請(qǐng)求下載。

文件解密

解密流程

子商戶(hù)資金賬單文件采用商戶(hù)指定的加密算法(支持AES-256-GCM算法和SM4-GCM算法)進(jìn)行加密,商戶(hù)需要進(jìn)行解密才能得到賬單明文。解密流程是:
步驟1 下載賬單文件,得到賬單文件密文ciphertext;
步驟2 使用商戶(hù)證書(shū)私鑰解密從接口獲取的加密密鑰(變量名:encrypt_key)得到密鑰明文key;
步驟3 利用步驟一、二中得到的賬單密文ciphertext,密鑰key和接口返回的隨機(jī)字符串nonce解密賬單,得到賬單明文。

完整性校驗(yàn)

GCM即可以進(jìn)行加密,又可以對(duì)信息的完整性進(jìn)行校驗(yàn),因此基于GCM加密的賬單,解密成功則表示賬單完整性校驗(yàn)通過(guò)。

代碼示例

基于AES-256-GCM算法加密的賬單文件解密代碼示例

賬單文件解密代碼示例請(qǐng)參考[WechatPay-API-v3 證書(shū)和回調(diào)報(bào)文解密],注意:返回的賬單文件是二進(jìn)制密文,需以字節(jié)數(shù)組形式處理,不需要進(jìn)行Base64解碼。

下面對(duì)解密代碼中使用的參數(shù)進(jìn)行說(shuō)明:


 {
        // 密文
        "ciphertext": "下載得到的賬單文件密文",
        // 加密使用的密鑰
        "key": "用商戶(hù)證書(shū)私鑰解密加密密鑰得到的明文",
        // 加密使用的隨機(jī)字符串
        "nonce": "接口返回的隨機(jī)字符串", 
        // 附加數(shù)據(jù)包(填空)
        "associated_data": "" 
   } 
                    

基于SM4算法加密的賬單文件解密代碼示例


with open(r"./ciphertext", 'rb') as f:
    ciphertext_tag_bytes = f.read()
ciphertext_tag_hex  = binascii.b2a_hex(ciphertext_tag_bytes)

# 賬單密文最后16字節(jié)是消息驗(yàn)證碼
ciphertext_bytes = binascii.unhexlify(ciphertext_tag_hex[:-32])
tag_bytes = binascii.unhexlify(ciphertext_tag_hex[-32:])
key="cbf063b0b33781c3"
key_bytes = str.encode(key)
iv="09ba90b74310"
iv_bytes = str.encode(iv)
aad = ''

# 賬單明文
decrypt_plain = SM4_GCM_Decrypt_NoPadding_NIST_SP800_38D(ciphertext_bytes, key_bytes, iv_bytes, aad, tag_bytes)
                    

基于商戶(hù)證書(shū)公鑰加密的密鑰解密代碼示例

RSA-2048加解密

如果HTTP頭的Authorization的認(rèn)證類(lèi)型采用WECHATPAY2-SHA256-RSA2048, 則從接口獲取的加密密鑰(變量名:encrypt_key)是使用商戶(hù)證書(shū)公鑰進(jìn)行RSA加密返回的密文,商戶(hù)需解密后才能得到密鑰原文。
解密流程如下:對(duì)encrypt_key先做Base64解碼,然后對(duì)解碼結(jié)果使用商戶(hù)證書(shū)私鑰進(jìn)行RSA解密,指定填充方式為最優(yōu)非對(duì)稱(chēng)加密填充(OAEP)。
下面我們使用命令行演示如何解密,更多的示例可以參考[WechatPay-API-v3 敏感信息加密]。 解密AES密鑰得到key:



# 解密AES密鑰得到key:
$ echo -n { encrypt_key } | openssl enc -A -base64 -d | openssl rsautl -decrypt -oaep -inkey {商戶(hù)證書(shū)私鑰文件}
                    

SM2加解密

如果HTTP頭的Authorization的認(rèn)證類(lèi)型采用WECHATPAY2-SM2-WITH-SM3, 則從接口獲取的加密密鑰(變量名:encrypt_key)是使用SM2橢圓曲線(xiàn)公鑰密碼算法加密返回的密文,商戶(hù)需解密后才能得到密鑰原文。
解密流程如下:對(duì)encrypt_key先做Base64解碼,然后對(duì)解碼結(jié)果使用商戶(hù)證書(shū)私鑰進(jìn)行SM2解密,密文格式是C1C3C2_ASN1。


# 解密AES密鑰得到key
SM2Init()
cipher = 'MIGKAiEA4FdfXZIG9oaS4v0CrCcFWAhQR0mR04cwZwFqP6lWwfACIQCGIdcc9PD9ZXmjvpyhbY0/lcww+UCp3+LP1yelYWpdbQQg5D4m4+JIyCyUwhwGuxMGPZR+bNmc2AVhlPQWj99WfT8EIOiAP7dYMFbc3HUHTt8F0RpGQns6zWhc3snUeMdkAWXF'
priv = "2f9f54d3a8793c50af8c61d10f88856cfcad6297f33b910b7f1093846083e835"
SM2CipherMode_C1C3C2_ASN1 = 0
decrypt_plain = SM2DecryptWithMode(base64.b64decode(cipher), priv, SM2CipherMode_C1C3C2_ASN1)
# 預(yù)期返回 SM2 Decrypt binary data, Plain is -------c6fafbae361863c146f0a1c27ff9c1a2
print("SM2 Decrypt binary data, Plain is -------"+decrypt_plain.decode('utf-8'))
                    

錯(cuò)誤碼公共錯(cuò)誤碼

狀態(tài)碼 錯(cuò)誤碼 描述 解決方案
500 SYSTEM_ERROR 系統(tǒng)錯(cuò)誤 系統(tǒng)異常,請(qǐng)使用相同參數(shù)稍后重新調(diào)用
403 NO_AUTH 權(quán)限異常 請(qǐng)檢查sub_mchid是否為服務(wù)商的子商戶(hù)
403 NO_AUTH 權(quán)限異常 請(qǐng)電商平臺(tái)在產(chǎn)品中心開(kāi)通下載二級(jí)商戶(hù)資金賬單產(chǎn)品權(quán)限
400 PARAM_ERROR 參數(shù)錯(cuò)誤 請(qǐng)使用正確的參數(shù)重新調(diào)用
400 INVALID_REQUEST 參數(shù)錯(cuò)誤 請(qǐng)檢查bill_date,僅支持下載3個(gè)月以?xún)?nèi)的資金流水賬單
400 NO_STATEMENT_EXIST 請(qǐng)求的賬單文件不存在 請(qǐng)檢查二級(jí)商戶(hù)在指定日期是否有資金操作
400 STATEMENT_CREATING 賬單生成中 請(qǐng)先檢查二級(jí)商戶(hù)在指定日期內(nèi)是否有資金操作,若有,則在T+1日上午10點(diǎn)后再重新下載
429 FREQUENCY_LIMITED 請(qǐng)求過(guò)于頻繁 請(qǐng)降低調(diào)用頻率


技術(shù)咨詢(xún)

文檔反饋