公眾號簽約
應(yīng)用場景
商戶可以通過請求此接口喚起微信委托代扣的頁面,頁面樣例見案例與規(guī)范。
用戶在微信的頁面中完成代扣簽約后,微信會同時將簽約信息通過異步通知的方式通知給商戶后臺。如果用戶放棄簽約或簽約失敗則不通知。
接口調(diào)用請求說明
請求Url | https://api.mch.weixin.qq.com/papay/partner/entrustweb |
---|---|
是否需要證書 | 否 |
請求方式 | GET |
請求參數(shù)
字段名 | 字段 | 必填 | 類型 | 示例值 | 說明 |
---|---|---|---|---|---|
請求appid | appid | 是 | String(32) | wxcbda96de0b165486 | 服務(wù)商商戶號綁定的APPID |
商戶號 | mch_id | 是 | String(32) | 1200009811 | 服務(wù)商商戶號 |
特約商戶公眾賬號ID | sub_appid | 否 | String(32) | wxcbda96de0b165489 | 子商戶號綁定的服務(wù)號的appid(非必填,如需操作,需要服務(wù)商在商戶平臺為子商戶綁定) |
特約商戶號 | sub_mch_id | 是 | String(32) | 1900000109 | 子商戶號 |
模板id | plan_id | 是 | String(28) | 12535 | 協(xié)議模板id,設(shè)置路徑見開發(fā)步驟。 |
簽約協(xié)議號 | contract_code | 是 | String(128) | 100000 | 商戶側(cè)的簽約協(xié)議號,由商戶生成 |
請求序列號 | request_serial | 是 | int64 | 1000 | 商戶請求簽約時的序列號,商戶側(cè)須唯一。序列號主要用于排序,不作為查詢條件,純數(shù)字。長度不超過12位 |
用戶賬戶展示名稱 | contract_display_account | 是 | String(128) | 微信代扣 | 簽約用戶的名稱,用于頁面展示,參數(shù)值不支持UTF8非3字節(jié)編碼的字符,例如表情符號,所以請勿傳微信昵稱到該字段 |
回調(diào)通知url | notify_url | 是 | String | https://weixin.qq.com | 用于接收簽約成功消息的回調(diào)通知地址,以http或https開頭。請對notify_url參數(shù)值進(jìn)行encode處理,注意是對參數(shù)值進(jìn)行encode,例如參數(shù)為notify_url=“https://weixin.qq.com”,則需要encode的內(nèi)容為https://weixin.qq.com |
版本號 | version | 是 | string | 1.0 | 固定值1.0 |
簽名 |
sign |
是 |
String(32) |
C380BEC2BFD727A4B6845133519F3AD6 |
詳見簽名生成算法 |
時間戳 | timestamp | 是 | String(10) | 1414488825 | 系統(tǒng)當(dāng)前時間,10位 |
以下字段為非必填項(xiàng),用來控制簽約頁面結(jié)束后的返回路徑(不傳此參數(shù),則簽約完成后停留在微信內(nèi)): |
|||||
返回web |
return_web |
否 |
int |
1 |
1表示返回簽約頁面的referrer url, 0 或不填或獲取不到referrer則不返回; 跳轉(zhuǎn)referrer url時會自動帶上參數(shù)from_wxpay=1 |
簽約請求數(shù)據(jù)示例:
返回參數(shù)(異步返回)
簽約成功后,微信會把相關(guān)簽約結(jié)果異步發(fā)送給商戶,返回的url為調(diào)用上述簽約接口時填寫的notify_url字段。商戶在收到簽約結(jié)果通知后,需進(jìn)行接收處理并返回應(yīng)答
對后臺通知交互時,如果微信收到商戶的應(yīng)答不是成功或超時,微信認(rèn)為通知失敗,微信會通過一定的策略定期重新發(fā)起通知,盡可能提高通知的成功率,但微信不保證通知最終能成功。
(通知頻率為15/15/30/180/1800/1800/1800/1800/3600,單位:秒)
由于存在重新發(fā)送后臺通知的情況,因此同樣的通知可能會多次發(fā)送給商戶系統(tǒng)。商戶系統(tǒng)必須能夠正確處理重復(fù)的通知。
推薦的做法是,當(dāng)收到通知進(jìn)行處理時,首先檢查對應(yīng)業(yè)務(wù)數(shù)據(jù)的狀態(tài),判斷該通知是否已經(jīng)處理過,如果沒有處理過再進(jìn)行處理,如果處理過直接返回結(jié)果成功。在對業(yè)務(wù)數(shù)據(jù)進(jìn)行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進(jìn)行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
字段名 | 變量名 | 必填 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
返回狀態(tài)碼 |
return_code |
是 |
SUCCESS |
String(16) |
SUCCESS/FAIL |
返回信息 |
return_msg |
否 |
簽名失敗 |
String(128) |
返回信息,如非空,為錯誤原因 |
以下字段在return_code為SUCCESS的時候返回 | |||||
業(yè)務(wù)結(jié)果 |
result_code |
是 |
SUCCESS |
String(16) |
SUCCESS/FAIL |
以下字段在return_code 和result_code都為SUCCESS的時候有返回 | |||||
商戶號 |
mch_id |
是 |
10000098 |
String(32) |
微信支付分配的商戶號 |
子商戶號 | sub_mch_id | 是 |
1900000109 | String(32) | 微信支付分配的子商戶號 |
簽約協(xié)議號 |
contract_code |
是 |
100001256 |
String(128) |
簽約協(xié)議號 |
模板id |
plan_id |
是 |
123 |
String |
協(xié)議模板id |
用戶標(biāo)識 |
openid |
是 |
onqOjjmM1tad-3ROpncN-yUfa6ua |
String(32) |
appid下,用戶的唯一標(biāo)識 |
用戶子標(biāo)識 | sub_openid | 否 |
oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | String(32) | sub_appid下,用戶的唯一標(biāo)識 |
簽名 |
sign |
是 |
C380BEC2BFD727A4B6845133519F3AD6 |
String(32) |
詳見簽名生成算法 |
變更類型 |
change_type |
是 |
ADD |
String(32) |
有兩個變更類型取值: |
操作時間 |
operate_time |
是 |
2015-07-01 10:00:00 |
String |
操作時間 |
委托代扣協(xié)議id |
contract_id |
是 |
Wx15463511252015071056489715 |
String(32) |
簽約成功后,微信返回的委托代扣協(xié)議id |
協(xié)議到期時間 |
contract_expired_time |
否 |
2016-07-01 10:00:00 |
String |
協(xié)議到期時間,當(dāng)change_type為ADD時有返回 |
協(xié)議解約方式 |
contract_termination_mode |
否 |
3 |
int |
當(dāng)change_type為DELETE時有返回 |
請求序列號 |
request_serial |
是 |
1695 |
String |
商戶請求簽約時的序列號,商戶側(cè)須唯一,純數(shù)字。長度不超過12位 |
示例:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<result_code><![CDATA[SUCCESS]]></result_code>
<sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>
<mch_id>10010404</mch_id>
<sub_mch_id>10010405</sub_mch_id>
<contract_code>100001256</contract_code>
<openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6ua]]></openid>
<plan_id><![CDATA[123]]></plan_id>
<change_type><![CDATA[ADD]]></change_type>
<operate_time><![CDATA[2015-07-01 10:00:00]]></operate_time>
<contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>
</xml>
商戶需返回參數(shù)
由于微信會多次通知商戶服務(wù)器關(guān)于用戶簽約的結(jié)果和相關(guān)信息,為了避免給商戶服務(wù)器造成過大的壓力,請?jiān)诘玫轿⑿藕灱s結(jié)果通知之后,返回以下內(nèi)容。(請求方式:post)
字段名 | 變量名 | 必填 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
返回狀態(tài)碼 |
return_code |
是 |
SUCCESS |
String(16) |
SUCCESS/FAIL |
返回信息 |
return_msg |
否 |
OK |
String(32) |
返回信息,如非空,為錯誤原因 |
商戶返回示例:
? <return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>
如果商戶側(cè)配置了防火墻,需要對商戶回調(diào)通知功能開通下面白名單網(wǎng)段:
101.226.233.128/25