最新更新時間:2021.11.17 版本說明
當子商戶被平臺風險處置時,推送子商戶違規(guī)處理記錄和交易攔截記錄給相應的服務商、渠道商、從業(yè)機構(gòu)。
? 同樣的通知可能會多次發(fā)送給商戶系統(tǒng)。商戶系統(tǒng)必須能夠正確處理重復的通知。 推薦的做法是,當商戶系統(tǒng)收到通知進行處理時,先檢查對應業(yè)務數(shù)據(jù)的狀態(tài),并判斷該通知是否已經(jīng)處理。如果未處理,則再進行處理;如果已處理,則直接返回結(jié)果成功。在對業(yè)務數(shù)據(jù)進行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
特別提醒:商戶系統(tǒng)對于開啟結(jié)果通知的內(nèi)容一定要做簽名驗證,并校驗通知的信息是否與商戶側(cè)的信息一致,防止數(shù)據(jù)泄露導致出現(xiàn)“假通知”。
適用對象:服務商 渠道商 從業(yè)機構(gòu)
請求URL:該鏈接是通過【創(chuàng)建商戶違規(guī)通知回調(diào)地址】中提交的參數(shù)url設置,如果鏈接無法訪問,商戶將無法接收到微信通知。
當子商戶被平臺風險處置時,微信后臺會把子商戶違規(guī)處理記錄和交易攔截記錄推送給相應的服務商、渠道商、從業(yè)機構(gòu),商戶需要接收處理該消息,并返回應答。
對后臺通知交互時,如果微信收到應答不是成功或超時,微信認為通知失敗,微信會通過一定的策略定期重新發(fā)起通知,盡可能提高通知的成功率,但微信不保證通知最終能成功。(通知頻率為1s/15s/15s/30s/180s/600s/1200s/1800s,按照這個頻率通知,之后的間隔都是1800s,最多重試48個小時)
商戶平臺處置記錄通知是以POST 方法訪問商戶設置的通知url,通知的數(shù)據(jù)以JSON 格式通過請求主體(BODY)傳輸。通知的數(shù)據(jù)包括了加密的支付結(jié)果詳情。
下面詳細描述對通知數(shù)據(jù)進行解密的流程:
注: AEAD_AES_256_GCM算法的接口細節(jié),請參考rfc5116。微信支付使用的密鑰key長度為32個字節(jié),隨機串nonce長度12個字節(jié),associated_data長度小于16個字節(jié)并可能為空。
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
通知ID | id | string[1,32] | 是 | 通知的唯一ID 示例值:EV-2018022511223320873 |
通知創(chuàng)建時間 | create_time | string[1,32] | 是 | 通知創(chuàng)建的時間,遵循rfc3339標準格式,格式為yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出現(xiàn)在字符串中,表示time元素的開頭,HH:mm:ss表示時分秒,TIMEZONE表示時區(qū)(+08:00表示東八區(qū)時間,領(lǐng)先UTC 8小時,即北京時間)。例如:2015-05-20T13:29:35+08:00表示北京時間2015年05月20日13點29分35秒。 示例值:2015-05-20T13:29:35+08:00 |
通知類型 | event_type | string[1,32] | 是 | 通知的類型,投訴事件通知的類型,具體如
下: VIOLATION.PUNISH:處罰 VIOLATION.INTERCEPT:攔截 VIOLATION.APPEAL:申訴 示例值:VIOLATION.PUNISH |
通知數(shù)據(jù)類型 | resource_type | string[1,32] | 是 | 通知的資源數(shù)據(jù)類型,支付成功通知為encrypt-resource 示例值:encrypt-resource |
回調(diào)摘要 | summary | string[1,64] | 是 | 回調(diào)摘要 示例值:產(chǎn)生新投訴 |
+通知數(shù)據(jù) | resource | object | 是 | 通知資源數(shù)據(jù) json格式,見示例 |
加密不能保證通知請求來自微信。微信會對發(fā)送給商戶的通知進行簽名,并將簽名值放在通知的HTTP頭Wechatpay-Signature。商戶應當驗證簽名,以確認請求來自微信,而不是其他的第三方。簽名驗證的算法請參考 《微信支付API v3簽名驗證》。
{
"id":"EV-2018022511223320873",
"create_time":"20180225112233",
"resource_type":"encrypt-resource",
"event_type":"VIOLATION.PUNISH",
"summary":"產(chǎn)生新投訴",
"resource" : {
"algorithm":"AEAD_AES_256_GCM",
"original_type": "violation",
"ciphertext": "...",
"nonce": "...",
"associated_data": ""
}
}
{
"sub_mchid": "1900009231",
"company_name":"財付通支付科技有限公司",
"record_id":"200201820200101080076610000",
"punish_plan":"關(guān)閉支付權(quán)限",
"punish_time":"2015-05-20T13:29:35+08:00",
"punish_description":"利用特殊行業(yè)違規(guī)經(jīng)營,加重處罰",
"risk_type":"ONE_YUAN_PURCHASES",
"risk_description ":"涉嫌一元購"
}
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
子商戶號 | sub_mchid | string[1, 32] | 是 | 該商戶平臺處置記錄對應的商戶號 示例值:1900009231 |
子商戶公司名稱 | company_name | string[1, 64] | 是 | 子商戶公司名稱 示例值:財付通支付科技有限公司 |
商戶違約處理通知ID | record_id | string[1, 128] | 是 | 微信支付對違約商戶處理通知的唯一標識,可用于去重 示例值:200201820200101080076610000 |
處罰方案 | punish_plan | string[1, 2048] | 是 | 微信支付對違約商戶的具體處罰方案,可根據(jù)具體的處罰方案指引商戶登錄商戶平臺/商家助手小程序進行申訴/相關(guān)操作,使用時請留意該值為處罰方法的文本內(nèi)容,并非枚舉值。 示例值:關(guān)閉支付權(quán)限 |
處罰時間 | punish_time | string[1, 64] | 是 | 微信支付對違約商戶的處置時間,遵循rfc3339標準格式,格式為yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出現(xiàn)在字符串中,表示time元素的開頭,HH:mm:ss表示時分秒,TIMEZONE表示時區(qū)(+08:00表示東八區(qū)時間,領(lǐng)先UTC 8小時,即北京時間)。例如:2015-05-20T13:29:35+08:00表示北京時間2015年05月20日13點29分35秒。 示例值:2015-05-20T13:29:35+08:00 |
處罰方案描述信息 | punish_description | string[1, 2048] | 是 | 微信支付對違約商戶處罰方案的詳細描述信息,補充處罰方案的相關(guān)影響。 示例值:利用特殊行業(yè)違規(guī)經(jīng)營,加重處罰 |
風險類型 | risk_type | string[1, 128] | 是 | 微信支付對違約商戶定義的風險類型,枚舉值: ONE_YUAN_PURCHASES:涉嫌一元購 MULTI_LEVEL_DISTRIBUTION_REBATE:涉嫌多級分銷返利 PROHIBITED_BUSINESS_CATEGORIES:涉嫌我司未開放類目 CASH_ADVANCE_VIA_CREDIT_CARD:涉嫌信用卡套現(xiàn) INDUCING_USERS_TO_MAKE_PAYMENTS:涉嫌誘導支付 FRAUD:涉嫌欺詐 MALICIOUS_FAN_COUNT_BOOSTING:涉嫌惡意吸粉 CROSS_CATEGORY_ACTIVITIES:涉嫌跨類目 CROSS_CATEGORY_BUSINESS:涉嫌跨類目經(jīng)營 GAMBLING:涉嫌賭博 LEWD_CONTENT:涉嫌色情 UNLICENSED_PAYMENT_AND_SETTLEMENT_BUSINESS:涉嫌無證經(jīng)營支付結(jié)算業(yè)務 INVESTMENT:涉嫌投資理財 TRANSACTION_DISPUTE:涉嫌交易糾紛 CROSS_BORDER_USE_OF_DOMESTIC_PAYMENT_API:涉嫌境內(nèi)支付接口跨境使用 OVERSEAS_ACTIVITIES_OUTSIDE_THE_BUSINESS_SCOPE_APPROVED_BY_REGULATORY_AUTHORITIES:涉嫌境外超監(jiān)管批復范圍經(jīng)營 UNUSUAL_TRANSACTION:涉嫌交易異常 UNLICENSED_BUSINESS:涉嫌無資質(zhì)經(jīng)營 WEALTH_INVESTMENT:涉嫌投資理財 AFFILIATED_TO_A_VIOLATING_ENTITY:涉嫌關(guān)聯(lián)違規(guī)主體等異常風險 INVOLVED_IN_A_JUDICIAL_CASE:涉嫌司法案件 INCORRECT_INFORMATION_SUBMITTED:涉嫌資料異常 APPEAL_SUCCESSFUL:申訴成功 REPORTED_BY_OTHERS:涉嫌他人投訴舉報 VIOLATING_SMART_CATERING_ACTIVITIES:涉嫌智慧餐飲活動違規(guī) MORE_THAN_ONE_MERCHANT_UNDER_A_SINGLE_MERCHANT_ID:涉嫌同一商戶號下掛多個商戶 CROSS_REGION_USE_OF_INTERNATIONAL_PAYMENT_API:涉嫌境外支付接口跨區(qū)域 UNUSUAL_REAL_TIME_TRANSACTION:涉嫌實時交易異常 UNACCEPTABLE_DOCUMENTS:涉嫌資料不合格 LARGE_AMOUNT_TRANSACTION:涉嫌大額交易 ALL_MERCHANTS_HAVE_CONFIRMED_THE_WILLINGNESS_TO_OPEN_AN_ACCOUNT:無交易商戶未確認開戶意愿 UNCONFIRMED_WILLINGNESS_TO_OPEN_AN_ACCOUNT:未確認開戶意愿 INACTIVE_TRANSACTION:交易停滯 OTHER_UNUSUAL_ACTIVITIES:涉嫌其它異常 示例值:ONE_YUAN_PURCHASES |
風險描述 | risk_description | string[1, 2048] | 是 | 微信支付對違約商戶定義的風險類型枚舉值對應的中文描述 示例值:涉嫌一元購 |
接收成功:HTTP應答狀態(tài)碼需返回200或204,無需返回應答報文。
接收失敗:HTTP應答狀態(tài)碼需返回5XX或4XX,同時需返回應答報文,格式如下:
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | code | string[1,32] | 是 | 錯誤碼,SUCCESS為接收成功,其他錯誤碼為失敗。 示例值:FAIL |
返回信息 | message | string[1,64] | 是 | 返回信息,如非空,為錯誤原因。 示例值:失敗 |
{
"code": "FAIL",
"message": "失敗"
}