功能說明
搖一搖周邊紅包接口是為線下商戶提供的發(fā)紅包功能。用戶可以在商家門店等線下場(chǎng)所通過搖一搖周邊領(lǐng)取商家發(fā)放的紅包,在線上轉(zhuǎn)發(fā)分享無(wú)效。
開發(fā)者可通過接口開發(fā)搖一搖紅包功能,特點(diǎn)包括:
用戶側(cè)交互流程
紅包組件接口調(diào)用流程
說明: 紅包提供商戶:紅包預(yù)下單接口傳入的參數(shù)wxappid所代表的商戶 紅包發(fā)放商戶:調(diào)用紅包接口創(chuàng)建紅包活動(dòng)、錄入紅包信息、發(fā)放紅包的商戶公眾號(hào)
接口說明
設(shè)置單個(gè)紅包的金額,類型等,生成紅包信息。預(yù)下單完成后,需要在72小時(shí)內(nèi)調(diào)用jsapi完成抽紅包的操作。(紅包過期失效后,資金會(huì)退回到商戶財(cái)付通帳號(hào)。)
接口調(diào)用說明
服務(wù)器端調(diào)用 http請(qǐng)求方式: POST https://api.mch.weixin.qq.com/mmpaymkttransfers/hbpreorder POST數(shù)據(jù)格式:XML 需要商戶證書
請(qǐng)求參數(shù)說明
參數(shù) | 字段 | 是否必須 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
隨機(jī)字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8Z NMTM67VS | String(32) | 隨機(jī)字符串,不長(zhǎng)于32位 |
簽名 | sign | 是 | C380BEC2BFD727A4B68451335 19F3AD6 | String(32) | 生成簽名方式查看簽名算法 |
商戶訂單號(hào) | mch_billno | 是 | 10000098201411111234567890 | String(28) | 商戶訂單號(hào)(每個(gè)訂單號(hào)必須唯一)組成: mch_id+yyyymmdd+10位一天內(nèi)不能重復(fù)的數(shù)字。接口根據(jù)商戶訂單號(hào)支持重入, 如出現(xiàn)超時(shí)可再調(diào)用。 |
商戶號(hào) | mch_id | 是 | 10000098 | String(32) | 紅包提供者的商戶號(hào)(微信支付分配的商戶號(hào)) |
公眾賬號(hào)appid | wxappid | 是 | wx8888888888888888 | String(32) | 紅包提供者公眾號(hào)的appid,對(duì)應(yīng)頭像展示在紅包頁(yè)面 |
商戶名稱 | send_name | 是 | 天虹百貨 | String(32) | 紅包提供者名稱,展示在紅包頁(yè)面 |
紅包類型 | hb_type | 是 | NORMAL | String(16) | NORMAL-普通紅包;GROUP-裂變紅包(可分享紅包給好友,無(wú)關(guān)注公眾號(hào)能力)。 |
總金額 | total_amount | 是 | 1000 | int | 總付款金額,單位分 |
紅包發(fā)放總?cè)藬?shù) | total_num | 是 | 1 | int | 紅包發(fā)放總?cè)藬?shù),即總共有多少人可以領(lǐng)到該組紅包(包括分享者)。普通紅包填1,裂變紅包必須大于1。 |
紅包金額設(shè)置方式 | amt_type | 是 | ALL_RAND | String(32) | 紅包金額設(shè)置方式,只對(duì)裂變紅包生效。ALL_RAND—全部隨機(jī) |
紅包祝福語(yǔ) | wishing | 是 | 感謝您參加猜燈謎活動(dòng),祝您元宵節(jié)快樂 | String(16) | 紅包祝福語(yǔ),展示在紅包頁(yè)面 |
活動(dòng)名稱 | act_name | 是 | 猜燈謎搶紅包活動(dòng) | String(32) | 活動(dòng)名稱,在不支持原生紅包的微信版本中展示在紅包消息 |
備注 | remark | 是 | 猜越多得越多,快來?yè)專?/td> | String(32) | 備注信息,在不支持原生紅包的微信版本中展示在紅包消息 |
授權(quán)商戶號(hào) | auth_mchid | 是 | 1000052601 | String(32) | 用于發(fā)紅包時(shí)微信支付識(shí)別搖周邊紅包,所有開發(fā)者統(tǒng)一填寫搖周邊平臺(tái)的商戶號(hào):1000052601 |
授權(quán)商戶APPID | auth_appid | 是 | wxbf42bd79c4391863 | String(32) | 用于發(fā)紅包時(shí)微信支付識(shí)別搖周邊紅包,所有開發(fā)者統(tǒng)一填寫搖周邊平臺(tái)的appid:wxbf42bd79c4391863 |
風(fēng)控設(shè)置 | risk_cntl | 是 | NORMAL | String(32) | 用于管控接口風(fēng)險(xiǎn)。具體值如下:NORMAL—正常情況;IGN_FREQ_LMT—忽略防刷限制,強(qiáng)制發(fā)放;IGN_DAY_LMT—忽略單用戶日限額限制,強(qiáng)制發(fā)放;IGN_FREQ_DAY_LMT—忽略防刷和單用戶日限額限制,強(qiáng)制發(fā)放;如無(wú)特殊要求,請(qǐng)?jiān)O(shè)為NORMAL。若忽略某項(xiàng)風(fēng)險(xiǎn)控制,可能造成資金損失,請(qǐng)謹(jǐn)慎使用。 |
請(qǐng)求示例
<xml> <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign> <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> <mch_id><![CDATA[10000097]]></mch_id> <wxappid><![CDATA[wxcbda96de0b165486]]></wxappid> <send_name><![CDATA[send_name]]></send_name> <hb_type><![CDATA[NORMAL]]></hb_type> <auth_mchid><![CDATA[10000098]]></auth_mchid> <auth_appid><![CDATA[wx7777777]]></auth_appid> <total_amount><![CDATA[200]]></total_amount> <amt_type><![CDATA[ALL_RAND]]></amt_type> <total_num><![CDATA[3]]></total_num> <wishing><![CDATA[恭喜發(fā)財(cái) ]]></wishing> <act_name><![CDATA[ 新年紅包 ]]></act_name> <remark><![CDATA[新年紅包 ]]></remark> <risk_cntl><![CDATA[NORMAL]]></risk_cntl> <nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str> </xml>
返回?cái)?shù)據(jù)說明
返回格式為xml
參數(shù) | 字段 | 是否必須 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
返回狀態(tài)碼 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL;此字段是通信標(biāo)識(shí),非交易標(biāo)識(shí),交易是否成功需要查看result_code來判斷 |
返回信息 | return_msg | 否 | 簽名失敗 | String(128) | 返回信息,如非空,為錯(cuò)誤原因 簽名失敗 參數(shù)格式校驗(yàn)錯(cuò)誤 |
以下字段在return_code為SUCCESS的時(shí)候有返回
參數(shù) | 字段 | 是否必須 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
簽名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | String(32) | 生成簽名方式查看 簽名算法 |
業(yè)務(wù)結(jié)果 | result_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL |
錯(cuò)誤代碼 | err_code | 否 | SUCCESS | String(32) | 錯(cuò)誤碼信息 |
錯(cuò)誤代碼描述 | err_code_des | 否 | 系統(tǒng)錯(cuò)誤 | String(128) | 結(jié)果信息描述 |
以下字段在return_code 和result_code都為SUCCESS的時(shí)候有返回
參數(shù) | 字段 | 是否必須 | 示例值 | 類型 | 說明 |
---|---|---|---|---|---|
商戶訂單號(hào) | mch_billno | 是 | 10000098201411111234567890 | String(28) | 商戶訂單號(hào)(每個(gè)訂單號(hào)必須唯一)組成: mch_id+yyyymmdd+10位一天內(nèi)不能重復(fù)的數(shù)字。 |
商戶號(hào) | mch_id | 是 | 10000098 | String(32) | 微信支付分配的商戶號(hào) |
公眾賬號(hào)appid | wxappid | 是 | wx8888888888888888 | String(32) | 商戶appid |
總金額 | total_amount | 是 | 1000 | int | 總付款金額,單位分 |
ticket | sp_ticket | 是 | 2J6MtR+SlbZ8Ga4EDi64X5 vC4Xv01ofX4uWOqqTc9kGJYhkq5st5ucrXKxkjnC/UuvLeuhdIfiYgi4hJuJ95qjt9mwxqSBEmjGbZlL+sqM9upoWsEjup28KPvaVrdao/Hg6WqyqUL5E2zPHfM1sb1w== | String | sp_ticket,一個(gè)普通紅包對(duì)應(yīng)一個(gè)ticket |
紅包訂單號(hào) | detail_id | 是 | 0000000666201504290000042120 | 紅包內(nèi)部訂單號(hào) | |
發(fā)送時(shí)間 | 是 | 20150429203444 | 紅包發(fā)放時(shí)間 |
成功示例
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[發(fā)放成功.]]></return_msg> <result_code><![CDATA[SUCCESS]]></result_code> <err_code><![CDATA[0]]></err_code> <err_code_des><![CDATA[發(fā)放成功.]]></err_code_des> <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> <mch_id>10010404</mch_id> <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> <sp_ticket><![CDATA[0cca98c8c8e814883]]></sp_ticket> <total_amount>3</total_amount> <detail_id><![CDATA[001001040420141117000004888]]></detail_id> <send_time><![CDATA[20150101080000]]></send_time> </xml>
失敗示例
<xml> <return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[系統(tǒng)繁忙,請(qǐng)稍后再試.]]></return_msg> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[268458547]]></err_code> <err_code_des><![CDATA[系統(tǒng)繁忙,請(qǐng)稍后再試.]]></err_code_des> <mch_billno><![CDATA[0010010404201411170000046542]]></mch_billno> <mch_id>10010404</mch_id> <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> <total_amount>3</total_amount> </xml>
錯(cuò)誤碼
錯(cuò)誤代碼 | 描述 | 解決方案 |
---|---|---|
CA_ERROR | 請(qǐng)求未攜帶證書,或請(qǐng)求攜帶的證書出錯(cuò) | 到商戶平臺(tái)下載證書,請(qǐng)求帶上證書后重試。 |
SIGN_ERROR | 商戶簽名錯(cuò)誤 | 按文檔要求重新生成簽名后再重試。 |
NO_AUTH | 沒有權(quán)限 | 請(qǐng)聯(lián)系微信支付開通api權(quán)限。 |
FREQ_LIMIT | 受頻率限制 | 請(qǐng)對(duì)請(qǐng)求做頻率控制 |
XML_ERROR | 請(qǐng)求的xml格式錯(cuò)誤,或者post的數(shù)據(jù)為空 | 檢查請(qǐng)求串,確認(rèn)無(wú)誤后重試 |
PARAM_ERROR | 參數(shù)錯(cuò)誤 | 請(qǐng)查看err_code_des,修改設(shè)置錯(cuò)誤的參數(shù) |
OPENID_ERROR | Openid錯(cuò)誤 | 根據(jù)用戶在商家公眾賬號(hào)上的openid,獲取用戶在紅包公眾賬號(hào)上的openid 錯(cuò)誤。請(qǐng)核對(duì)商戶自身公眾號(hào)appid和用戶在此公眾號(hào)下的openid。 |
NOTENOUGH | 余額不足 | 商戶賬號(hào)余額不足,請(qǐng)登錄微信支付商戶平臺(tái)充值 |
FATAL_ERROR | 重復(fù)請(qǐng)求時(shí),參數(shù)與原單不一致 | 使用相同商戶單號(hào)進(jìn)行重復(fù)請(qǐng)求時(shí),參數(shù)與第一次請(qǐng)求時(shí)不一致,請(qǐng)檢查并修改參數(shù)后再重試。 |
TIME _LIMITED | 企業(yè)紅包的發(fā)送時(shí)間受限 | 請(qǐng)北京時(shí)間0:00-8:00時(shí)間之外觸發(fā)紅包贈(zèng)送 |
SECOND_OVER_LIMITED | 企業(yè)紅包的按分鐘發(fā)放受限 | 每分鐘發(fā)送紅包數(shù)量不得超過1800個(gè);(可聯(lián)系微信支付wxhongbao@tencent.com調(diào)高額度) |
DAY_ OVER_LIMITED | 企業(yè)紅包的按天日發(fā)放受限 | 單個(gè)商戶日發(fā)送紅包數(shù)量不大于10000個(gè);(可聯(lián)系微信支付wxhongbao@tencent.com調(diào)高額度) |
MONEY_LIMIT | 紅包金額發(fā)放限制 | 每個(gè)紅包金額必須大于1元,小于1000元(可聯(lián)系微信支付wxhongbao@tencent.com調(diào)高額度至4999元) |
SEND_FAILED | 紅包發(fā)放失敗,請(qǐng)更換單號(hào)再重試。 | 原商戶單號(hào)已經(jīng)失敗,如果還要對(duì)同一個(gè)用戶發(fā)放紅包, 需要更換新的商戶單號(hào)再試。 |
SYSTEMERROR | 系統(tǒng)繁忙,請(qǐng)?jiān)僭嚒?/td> | 可用同一商戶單號(hào)再次調(diào)用,只會(huì)發(fā)放一個(gè)紅包。 |
簽名算法
第一步,設(shè)所有發(fā)送或者接收到的數(shù)據(jù)為集合M,將集合M內(nèi)非空參數(shù)值的參數(shù)按照參數(shù)名ASCII碼從小到大排序(字典序),使用URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特別注意以下重要規(guī)則: 參數(shù)名ASCII碼從小到大排序(字典序); 如果參數(shù)的值為空不參與簽名; 參數(shù)名區(qū)分大小寫; 驗(yàn)證調(diào)用返回或微信主動(dòng)通知簽名時(shí),傳送的sign參數(shù)不參與簽名,將生成的簽名與該sign值作校驗(yàn)。
第二步,在stringA最后拼接上key=商戶支付密鑰得到stringSignTemp字符串,并對(duì)stringSignTemp進(jìn)行MD5運(yùn)算,再將得到的字符串所有字符轉(zhuǎn)換為大寫,得到sign值signValue。
舉例: 假設(shè)傳送的參數(shù)如下: appid: wxd930ea5d5a258f4f mch_id: 10000100 device_info: 1000 Body: test nonce_str: ibuaiVcKdpRxkhJA 第一步:對(duì)參數(shù)按照key=value的格式,并按照參數(shù)名ASCII字典序排序如下:stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; 第二步:拼接支付密鑰: stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" 最終得到最終發(fā)送的數(shù)據(jù): <xml> <appid>wxd930ea5d5a258f4f</appid> <mch_id>10000100</mch_id> <device_info>1000</device_info> <body>test</body> <nonce_str>ibuaiVcKdpRxkhJA</nonce_str> <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> </xml>
生成隨機(jī)數(shù)算法
微信支付API接口協(xié)議中包含固定nonce_str,主要保證簽名不可預(yù)測(cè)。我們推薦生成隨機(jī)數(shù)算法如下:
調(diào)用隨機(jī)數(shù)生成函數(shù),將得到的值轉(zhuǎn)換為字符串。
商戶證書
1. 獲取商戶證書
微信支付接口中,涉及資金回滾的接口會(huì)使用到商戶證書,包括退款、撤銷接口。商家在申請(qǐng)微信支付成功后,收到的相應(yīng)郵件通知中,附件會(huì)包含接口需要用到的證書文件,有四個(gè)證書文件,分別說明如下。
證書文件說明:
證書附件 | 描述 | 使用場(chǎng)景 | 備注 |
---|---|---|---|
pkcs12格式(apiclient_cert.p12) | 包含了私鑰信息的證書文件,為p12(pfx)格式,由微信支付簽發(fā)給您用來標(biāo)識(shí)和界定您的身份 | 撤銷、退款申請(qǐng)API中調(diào)用 | windows上可以直接雙擊導(dǎo)入系統(tǒng),導(dǎo)入過程中會(huì)提示輸入證書密碼,證書密碼默認(rèn)為您的商戶ID(如:10010000) |
證書pem格式(apiclient_cert.pem) | 從apiclient_cert.p12中導(dǎo)出證書部分的文件,為pem格式,請(qǐng)妥善保管不要泄漏和被他人復(fù)制 | PHP等不能直接使用p12文件,而需要使用pem,為了方便您使用,已為您直接提供 | 您也可以使用openssl命令來自己導(dǎo)出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem |
證書密鑰pem格式(apiclient_key.pem) | 從apiclient_cert.p12中導(dǎo)出密鑰部分的文件,為pem格式 | PHP等不能直接使用p12文件,而需要使用pem,為了方便您使用,已為您直接提供 | 您也可以使用openssl命令來自己導(dǎo)出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem |
CA證書(rootca.pem) | 微信支付api服務(wù)器上也部署了證明微信支付身份的服務(wù)器證書,您在使用api進(jìn)行調(diào)用時(shí)也需要驗(yàn)證所調(diào)用服務(wù)器及域名的真實(shí)性 | 該文件為簽署微信支付證書的權(quán)威機(jī)構(gòu)的根證書,可以用來驗(yàn)證微信支付服務(wù)器證書的真實(shí)性 | 部分工具已經(jīng)內(nèi)置了若干權(quán)威機(jī)構(gòu)的根證書,無(wú)需引用該證書也可以正常進(jìn)行驗(yàn)證,這里提供給您在未內(nèi)置所必須根證書的環(huán)境中載入使用 |
2. 使用商戶證書
apiclient_cert.p12是商戶證書文件,除PHP外的開發(fā)均使用此證書文件。 商戶如果使用.NET環(huán)境開發(fā),請(qǐng)確認(rèn)Framework版本大于2.0,必須在操作系統(tǒng)上雙擊安裝證書apiclient_cert.p12后才能被正常調(diào)用。 商戶證書調(diào)用或安裝都需要使用到密碼,該密碼的值為微信商戶號(hào)(mchid) PHP開發(fā)環(huán)境請(qǐng)使用商戶證書文件apiclient_cert.pem和apiclient_key.pem ,rootca.pem是CA證書。
3. 商戶證書安全
證書文件放在非web服務(wù)器虛擬目錄的文件夾下,防止被他人下載。商戶服務(wù)器要做好病毒和木馬防護(hù)工作,不被非法侵入者竊取證書文件。
接口說明
創(chuàng)建紅包活動(dòng),設(shè)置紅包活動(dòng)有效期,紅包活動(dòng)開關(guān)等基本信息,返回活動(dòng)id
接口調(diào)用說明
服務(wù)器端調(diào)用 http請(qǐng)求方式: POST URL: https://api.weixin.qq.com/shakearound/lottery/addlotteryinfo?access_token=ACCESSTOKEN&use_template=1&logo_url=LOGO_URL
請(qǐng)求參數(shù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
access_token | string | accesstoken,以參數(shù)的形式拼裝在url后 |
use_template | int | 是否使用模板,1:使用,2:不使用,以參數(shù)的形式拼裝在url后。(模版即交互流程圖中的紅包加載頁(yè),使用模板用戶不需要點(diǎn)擊可自動(dòng)打開紅包;不使用模版需自行開發(fā)HTML5頁(yè)面,并在頁(yè)面調(diào)用紅包jsapi) |
logo_url | string | 使用模板頁(yè)面的logo_url,不使用模板時(shí)可不加。展示在搖一搖界面的消息圖標(biāo)。圖片尺寸為120x120。 |
POST BODY:JSON格式的結(jié)構(gòu)體
參數(shù) | 類型 | 說明 |
---|---|---|
title | string | 抽獎(jiǎng)活動(dòng)名稱(選擇使用模板時(shí),也作為搖一搖消息主標(biāo)題),最長(zhǎng)6個(gè)漢字,12個(gè)英文字母。 |
desc | string | 抽獎(jiǎng)活動(dòng)描述(選擇使用模板時(shí),也作為搖一搖消息副標(biāo)題),最長(zhǎng)7個(gè)漢字,14個(gè)英文字母。 |
onoff | int | 抽獎(jiǎng)開關(guān)。0關(guān)閉,1開啟,默認(rèn)為1 |
begin_time | long | 抽獎(jiǎng)活動(dòng)開始時(shí)間,unix時(shí)間戳,單位秒 |
expire_time | long | 抽獎(jiǎng)活動(dòng)結(jié)束時(shí)間,unix時(shí)間戳,單位秒,紅包活動(dòng)有效期最長(zhǎng)為91天 |
sponsor_appid | string | 紅包提供商戶公眾號(hào)的appid,需與預(yù)下單中的公眾賬號(hào)appid(wxappid)一致 |
total | long | 紅包總數(shù),紅包總數(shù)是錄入紅包ticket總數(shù)的上限,因此紅包總數(shù)應(yīng)該大于等于預(yù)下單時(shí)紅包ticket總數(shù)。 |
jump_url | string | 紅包關(guān)注界面后可以跳轉(zhuǎn)到第三方自定義的頁(yè)面 |
key | string | 開發(fā)者自定義的key,用來生成活動(dòng)抽獎(jiǎng)接口的簽名參數(shù),長(zhǎng)度32位。使用方式見sign生成規(guī)則 |
請(qǐng)求示例
Content-Type: application/json Post Body: { "title": "title", "desc": "desc", "onoff": 1, "begin_time": 1428854400, "expire_time": 1428940800, "sponsor_appid": "wxxxxxxxxxxxxxx", "total": 10, "jump_url": JUMP_URL, "key": "keyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" }
返回?cái)?shù)據(jù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
errcode | int | 錯(cuò)誤碼。0為成功,其他為失敗。詳細(xì)請(qǐng)參考錯(cuò)誤碼表 |
errmsg | string | 錯(cuò)誤信息 |
lottery_id | string | 生成的紅包活動(dòng)id |
page_id | int | 生成的模板頁(yè)面ID |
示例
{ "errcode":0, "errmsg":"", "lottery_id":"xxxxxxllllll", "page_id":1, }
接口說明
在調(diào)用"創(chuàng)建紅包活動(dòng)"接口之后,調(diào)用此接口錄入紅包信息。注意,此接口每次調(diào)用,都會(huì)向某個(gè)活動(dòng)新增一批紅包信息,如果紅包數(shù)少于100個(gè),請(qǐng)通過一次調(diào)用添加所有紅包信息。如果紅包數(shù)大于100,可以多次調(diào)用接口添加。請(qǐng)注意確保多次錄入的紅包ticket總的數(shù)目不大于創(chuàng)建該紅包活動(dòng)時(shí)設(shè)置的total值。
接口調(diào)用說明
服務(wù)器端調(diào)用 http請(qǐng)求方式: POST URL:https://api.weixin.qq.com/shakearound/lottery/setprizebucket?access_token=ACCESSTOKEN
請(qǐng)求參數(shù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
access_token | string | accesstoken,以參數(shù)的形式拼裝在url后 |
POST BODY:JSON格式的結(jié)構(gòu)體
參數(shù) | 類型 | 說明 |
---|---|---|
lottery_id | string | 紅包抽獎(jiǎng)id,來自addlotteryinfo返回的lottery_id |
mchid | string | 紅包提供者的商戶號(hào),,需與預(yù)下單中的商戶號(hào)mch_id一致 |
sponsor_appid | string | 紅包提供商戶公眾號(hào)的appid,需與預(yù)下單中的公眾賬號(hào)appid(wxappid)一致 |
prize_info_list | json數(shù)組 | 紅包ticket列表,如果紅包數(shù)較多,可以一次傳入多個(gè)紅包,批量調(diào)用該接口設(shè)置紅包信息。每次請(qǐng)求傳入的紅包個(gè)數(shù)上限為100 |
ticket | string | 預(yù)下單時(shí)返回的紅包ticket,單個(gè)活動(dòng)紅包ticket數(shù)量上限為100000個(gè),可添加多次。 |
請(qǐng)求示例
Content-Type: application/json Post Body: { "lottery_id": "xxxxxxllllll", "mchid": "10000098", "sponsor_appid": "wx8888888888888888", "prize_info_list": [ { "ticket": "v1|ZiPs2l0hpMBp3uwGI1rwp45vOdz/V/zQ/00jP9MeWT+e47/q1FJjwCIP34frSjzOxAEzJ7k2CtAg1pmcShvkChBWqbThxPm6MBuzceoHtj79iHuHaEn0WAO+j4sXnXnbGswFOlDYWg1ngvrRYnCY3g==" }, { "ticket": "v1|fOhNUTap1oepSm5ap0hx1gmATM\/QX\/xn3sZWL7K+5Z10sbV5\/mZ4SwxwxbK2SPV32eLRvjd4ww1G3H5a+ypqRrySi+4oo97y63KoEQbRCPjbkyQBY8AYVyvD40V2b9slTQCm2igGY98mPe+VxZiayQ==" } ] }
返回?cái)?shù)據(jù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
errcode | int | 錯(cuò)誤碼。0為成功,其他為失敗。詳細(xì)請(qǐng)參考錯(cuò)誤碼表 |
errmsg | string | 錯(cuò)誤信息 |
repeat_ticket_list | array | 重復(fù)使用的ticket列表,如為空,將不返回 |
expire_ticket_list | array | 過期的ticket列表,如為空,將不返回 |
invalid_amount_ticket_list | array | 金額不在大于1元,小于1000元的ticket列表,如為空,將不返回 |
success_num | int | 成功錄入的紅包數(shù)量 |
wrong_authmchid_ticket_list | array | 原因:生成紅包的時(shí)候,授權(quán)商戶號(hào)auth_mchid和auth_appid沒有寫搖周邊的商戶號(hào) |
invalid_ticket_list | array | ticket解析失敗,可能有錯(cuò)別字符或不完整 |
示例
{ "errcode":0, "errmsg":"", "repeat_ticket_list":[ { "ticket": "v1|ZiPs2l0hpMBp3uwGI1rwp45vOdz/V/zQ/00jP9MeWT+e47/q1FJjwCIP34frSjzOxAEzJ7k2CtAg1pmcShvkChBWqbThxPm6MBuzceoHtj79iHuHaEn0WAO+j4sXnXnbGswFOlDYWg1ngvrRYnCY3g==" }, { "ticket":"v1|ZiPs2l0zzXCsdfwe45dxCdHiukOdz/V/zQ/89xcnC5XnT+e47/q1FJjwCO4frSjzOxAEzJ7k2CtAg1pmcShvkChBWzc45dDGC32Dcxx4DGxczjDCGsdjowe9iHuaEn0WAO+GswFOlDYWg1ngvrRYnCY3g==" } } ], "success_num":100 }
接口說明
開發(fā)者實(shí)時(shí)控制紅包活動(dòng)抽獎(jiǎng)的開啟和關(guān)閉。注意活動(dòng)抽獎(jiǎng)開關(guān)只在紅包活動(dòng)有效期之內(nèi)才能生效,如果不能確定紅包活動(dòng)有效期,請(qǐng)盡量將紅包活動(dòng)有效期的范圍設(shè)置大。
接口調(diào)用說明
服務(wù)器端調(diào)用 http請(qǐng)求方式: Get URL:https://api.weixin.qq.com/shakearound/lottery/setlotteryswitch?access_token=ACCESSTOKEN&lottery_id=LOTTERYID&onoff=1
請(qǐng)求參數(shù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
access_token | string | accesstoken,以參數(shù)的形式拼裝在url后 |
lottery_id | string | 紅包抽獎(jiǎng)id,來自addlotteryinfo返回的lottery_id |
onoff | int | 活動(dòng)抽獎(jiǎng)開關(guān),0:關(guān)閉,1:開啟 |
返回?cái)?shù)據(jù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
errcode | int | 錯(cuò)誤碼。0為成功,其他為失敗。詳細(xì)請(qǐng)參考錯(cuò)誤碼表 |
errmsg | string | 錯(cuò)誤信息 |
示例
{ "errcode":0, "errmsg":"" }
接口說明
在第三方頁(yè)面中,通過調(diào)用JSAPI來觸發(fā)用戶抽紅包的操作,如果抽到紅包,會(huì)呼出微信的原生紅包頁(yè)面。用戶只有通過搖周邊的入口才能抽中紅包。每個(gè)用戶在一個(gè)活動(dòng)抽獎(jiǎng)id下最多只能中一個(gè)紅包。創(chuàng)建紅包活動(dòng)時(shí),選擇使用模板頁(yè)面的開發(fā)者不需要調(diào)用該接口
引入BeaconShakehbJsBridge'
<scripttype="text/javascript"src="http://zb.weixin.qq.com/app/shakehb/BeaconShakehbJsBridge.js"> </script>
API詳細(xì)說明
抽紅包JS API調(diào)用與微信的JS API調(diào)用格式一致,如下:
函數(shù):invoke 用途:主動(dòng)調(diào)用指定API 通用形式:BeaconShakehbJsBridge.invoke("API名稱", {調(diào)用參數(shù)}); API 名稱:jumpHongbao 參數(shù):openid、lottery_id、noncestr、sign 回調(diào)函數(shù):無(wú)
調(diào)用參數(shù)說明
參數(shù) | 說明 |
---|---|
openid | 用戶openid。必填 |
lottery_id | 紅包抽獎(jiǎng)id,必填,來自addlotteryinfo返回的lottery_id |
noncestr | 隨機(jī)字符串,不長(zhǎng)于32位。必填 |
sign | 簽名,詳見下面的簽名生成規(guī)則 |
Sign生成規(guī)則
1.除sign字段外,所有參數(shù)按照字段名的ASCII碼從小到大排序后(字典序),使用URL鍵值對(duì)的格式(即Param1=value1&Param2=value2…)拼接而成簽名原始串,空值不參與簽名組串。 2.簽名原始串中,字段名和字段值都采用原始值,不進(jìn)行URL轉(zhuǎn)義。 3.簽名原始串末尾補(bǔ)上key參數(shù)(通過“創(chuàng)建紅包活動(dòng)”接口設(shè)置的key),如 Param1=value1&Param2=value2…&key=keyvalue 4.得到的字符串進(jìn)行MD5,并轉(zhuǎn)換為大寫。即 sign=ToUpperCase(MD5(Param1=value1&Param2=value2…&key=keyvalue)) 5.出于安全考慮,開發(fā)者必須在服務(wù)器端實(shí)現(xiàn)生成簽名的邏輯。
請(qǐng)求示例
BeaconShakehbJsBridge.ready(function(){ //跳轉(zhuǎn)到抽紅包頁(yè)面 BeaconShakehbJsBridge.invoke('jumpHongbao',{ lottery_id:'LOTTERY_ID ', noncestr:'378507853820041854759013507217', openid:'OPENID', sign:'SIGN' }); });
用戶側(cè)錯(cuò)誤碼說明
提示文案 | 錯(cuò)誤碼 | 錯(cuò)誤信息 | 解決方案 |
---|---|---|---|
出錯(cuò)了 | 5 | 搖周邊ticket過期 | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 11002 | 搖一搖ticket不存在 | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 11003 | 無(wú)效的搖一搖ticket | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 11004 | 獲取商戶appid失敗 | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 11005 | 搖周邊頻率檢查失敗 | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 11009 | 系統(tǒng)異常 | 請(qǐng)重試 |
出錯(cuò)了 | 11010 | 隨機(jī)字符串長(zhǎng)度過長(zhǎng) | 對(duì)自定義頁(yè)面時(shí)調(diào)jsapi參數(shù)校驗(yàn)出錯(cuò),請(qǐng)檢查 |
出錯(cuò)了 | 11011 | LotteryID解析失敗 | 對(duì)自定義頁(yè)面時(shí)調(diào)jsapi參數(shù)校驗(yàn)出錯(cuò),請(qǐng)檢查 |
出錯(cuò)了 | 11012 | 簽名校驗(yàn)失敗 | 對(duì)自定義頁(yè)面時(shí)調(diào)jsapi參數(shù)校驗(yàn)出錯(cuò),請(qǐng)檢查 |
出錯(cuò)了 | 11013 | openid無(wú)效 | 對(duì)自定義頁(yè)面時(shí)調(diào)jsapi參數(shù)校驗(yàn)出錯(cuò),請(qǐng)檢查 |
出錯(cuò)了 | 11014 | pass_ticket無(wú)效 | 檢查是不是從微信搖一搖進(jìn)入 |
出錯(cuò)了 | 12013 | 綁定用戶和紅包失敗 | 抽到紅包ticket后,微信支付返回的錯(cuò)誤 |
出錯(cuò)了 | 12014 | 微信支付查詢紅包ticket失敗 | 抽到紅包ticket后,微信支付返回的錯(cuò)誤 |
出錯(cuò)了 | 12015 | 抽獎(jiǎng)操作頻率過高 | 請(qǐng)重試 |
出錯(cuò)了 | 12019 | page_id無(wú)效 | 使用模版時(shí)校驗(yàn)出錯(cuò) |
接口說明
用戶進(jìn)入紅包頁(yè)面時(shí),后臺(tái)會(huì)將一個(gè)紅包ticket和用戶openid綁定,微信會(huì)把這個(gè)事件推送到開發(fā)者填寫的URL(登錄公眾平臺(tái)進(jìn)入開發(fā)者中心設(shè)置)。推送內(nèi)容包含用戶openid,紅包活動(dòng)id,紅包ticket、金額以及紅包綁定時(shí)間。
注:紅包綁定用戶不等同于用戶領(lǐng)取紅包。用戶進(jìn)入紅包頁(yè)面后,有可能不拆紅包,但該紅包ticket已被綁定,不能再被其他用戶綁定,過期后會(huì)退回商戶財(cái)付通賬戶。
推送XML數(shù)據(jù)包示例
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1442824314</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[ShakearoundLotteryBind]]></Event> <LotteryId><![CDATA[lotteryid]]></LotteryId> <Ticket><![CDATA[ticket]]></Ticket> <Money>88</Money> <BindTime>1442824313</BindTime> </xml>
調(diào)用參數(shù)說明
字段 | 說明 |
---|---|
ToUserName | 開發(fā)者微信號(hào)。 |
FromUserName | 紅包綁定用戶(一個(gè)OpenID)。 |
CreateTime | 消息創(chuàng)建時(shí)間 (整型)。 |
MsgType | 消息類型,event |
Event | 事件類型,ShakearoundLotteryBind |
LotteryId | 紅包活動(dòng)id |
ticket | 紅包ticket |
money | 紅包金額 |
BindTime | 紅包綁定時(shí)間 |
接口說明
查詢紅包活動(dòng)信息。
接口調(diào)用說明
服務(wù)器端調(diào)用 http請(qǐng)求方式: Get URL:https://api.weixin.qq.com/shakearound/lottery/querylottery?access_token=ACCESSTOKEN&lottery_id=LOTTERYID
請(qǐng)求參數(shù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
access_token | string | accesstoken,以參數(shù)的形式拼裝在url后 |
lottery_id | string | 紅包抽獎(jiǎng)id,來自addlotteryinfo返回的lottery_id |
返回?cái)?shù)據(jù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
errcode | int | 錯(cuò)誤碼。0為成功,其他為失敗。詳細(xì)請(qǐng)參考錯(cuò)誤碼表 |
errmsg | string | 錯(cuò)誤信息 |
title | string | 抽獎(jiǎng)活動(dòng)名稱(選擇使用模板時(shí),也作為搖一搖消息主標(biāo)題),最長(zhǎng)6個(gè)漢字,12個(gè)英文字母。 |
desc | string | 抽獎(jiǎng)活動(dòng)描述(選擇使用模板時(shí),也作為搖一搖消息副標(biāo)題),最長(zhǎng)7個(gè)漢字,14個(gè)英文字母。 |
onoff | int | 抽獎(jiǎng)開關(guān)。0關(guān)閉,1開啟,默認(rèn)為1 |
begin_time | long | 抽獎(jiǎng)活動(dòng)開始時(shí)間,unix時(shí)間戳,單位秒 |
expire_time | long | 抽獎(jiǎng)活動(dòng)結(jié)束時(shí)間,unix時(shí)間戳,單位秒,紅包活動(dòng)有效期最長(zhǎng)為91天 |
sponsor_appid | string | 紅包提供商戶公眾號(hào)的appid |
appid | string | 創(chuàng)建活動(dòng)的開發(fā)者appid |
prize_count | long | 已錄入的紅包總數(shù) |
prize_count_limit | long | 創(chuàng)建活動(dòng)時(shí)預(yù)設(shè)的錄入紅包ticket數(shù)量上限 |
jump_url | string | 紅包關(guān)注界面后可以跳轉(zhuǎn)到第三方自定義的頁(yè)面 |
expired_prizes | long | 過期紅包ticket數(shù)量 |
drawed_prizes | long | 已發(fā)放的紅包ticket數(shù)量 |
available_prizes | long | 可用的紅包ticket數(shù)量 |
expired_value | long | 已過期的紅包金額總和 |
drawed_value | long | 已發(fā)放的紅包金額總和 |
available_value | long | 可用的紅包金額總和 |
注意:調(diào)用SetPrizeBucket錄入紅包次數(shù)超過3000次的,或紅包總數(shù)超過1萬(wàn)個(gè)的活動(dòng),目前暫不支持expired_prizes, drawed_prizes, available_prizes, expired_value, drawed_value, available_value這6個(gè)字段的查詢。需要查詢時(shí),可以通過郵箱zhoubian@tencent.com聯(lián)系我們,也可加入開發(fā)者QQ交流群390582489。
示例
{ "errcode":0, "errmsg":"" result:{ lottery_id:” 9sQqUrmdFaY6v9z8TartOA”, title:”活動(dòng)標(biāo)題”, desc:”活動(dòng)描述”, onoff:”1”, begin_time:” 1446360417”, expire_time:” 1446400000”, sponsor_appid:” wxf5b5e87a6a0fde94”, appid:”wx4428b5f51c53a582”, prize_count_limit:1000, prize_count: 810, jump_url:”http://www.qq.com/”, expired_prizes: 100, drawed_prizes:200, available_prizes:510, expired_value: 10000, drawed_value:20000, available_value: 51000 } }
更多建議: