微信小程序API模板消息,模板推送位置模板下發(fā)條件模板跳轉(zhuǎn)能力
基于微信的通知渠道,我們?yōu)殚_(kāi)發(fā)者提供了可以高效觸達(dá)用戶(hù)的模板消息能力,以便實(shí)現(xiàn)服務(wù)的閉環(huán)并提供更佳的體驗(yàn)。
模板推送位置:服務(wù)通知
模板下發(fā)條件:用戶(hù)本人在微信體系內(nèi)與頁(yè)面有交互行為后觸發(fā),詳見(jiàn)下發(fā)條件說(shuō)明
模板跳轉(zhuǎn)能力:點(diǎn)擊查看詳情僅能跳轉(zhuǎn)下發(fā)模板的該帳號(hào)的各個(gè)頁(yè)面
使用說(shuō)明
步驟一:獲取模板ID
有兩個(gè)方法可以獲取模版ID
- 通過(guò)模版消息管理接口獲取模版ID(詳見(jiàn)模版消息管理)
- 在微信公眾平臺(tái)手動(dòng)配置獲取模版ID
?登錄https://mp.weixin.qq.com獲取模板,如果沒(méi)有合適的模板,可以申請(qǐng)?zhí)砑有履0?,審核通過(guò)后可使用,詳見(jiàn)模板審核說(shuō)明
步驟二:頁(yè)面的
<form/>
組件,屬性report-submit
為true
時(shí),可以聲明為需發(fā)模板消息,此時(shí)點(diǎn)擊按鈕提交表單可以獲取formId
,用于發(fā)送模板消息?;蛘弋?dāng)用戶(hù)完成支付行為,可以獲取prepay_id
用于發(fā)送模板消息。步驟三:調(diào)用接口下發(fā)模板消息(詳見(jiàn)發(fā)送模板消息)
模版消息管理
1.獲取小程序模板庫(kù)標(biāo)題列表
接口地址
https://api.weixin.qq.com/cgi-bin/wxopen/template/library/list?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
access_token | 是 | 接口調(diào)用憑證 |
offset | 是 | offset和count用于分頁(yè),表示從offset開(kāi)始,拉取count條記錄,offset從0開(kāi)始,count最大為20。 |
count | 是 | offset和count用于分頁(yè),表示從offset開(kāi)始,拉取count條記錄,offset從0開(kāi)始,count最大為20。 |
示例:
{
"offset":0,
"count":5
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode":0,
"errmsg":"ok",
"list":[
{"id":"AT0002","title":"購(gòu)買(mǎi)成功通知"},
{"id":"AT0003","title":"購(gòu)買(mǎi)失敗通知"},
{"id":"AT0004","title":"交易提醒"},
{"id":"AT0005","title":"付款成功通知"},
{"id":"AT0006","title":"付款失敗通知"}
],
"total_count":599
}
返回參數(shù)說(shuō)明:
參數(shù) | 說(shuō)明 |
---|---|
id | 模板標(biāo)題id(獲取模板標(biāo)題下的關(guān)鍵詞庫(kù)時(shí)需要) |
title | 模板標(biāo)題內(nèi)容 |
total_count | 模板庫(kù)標(biāo)題總數(shù) |
2.獲取模板庫(kù)某個(gè)模板標(biāo)題下關(guān)鍵詞庫(kù)
接口地址
https://api.weixin.qq.com/cgi-bin/wxopen/template/library/get?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
access_token | 是 | 接口調(diào)用憑證 |
id | 是 | 模板標(biāo)題id,可通過(guò)接口獲取,也可登錄小程序后臺(tái)查看獲取 |
示例:
{
"id":"AT0002"
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode": 0,
"errmsg": "ok",
"id": "AT0002",
"title": "購(gòu)買(mǎi)成功通知",
"keyword_list": [
{
"keyword_id": 3,
"name": "購(gòu)買(mǎi)地點(diǎn)",
"example": "TIT造艦廠"
},
{
"keyword_id": 4,
"name": "購(gòu)買(mǎi)時(shí)間",
"example": "2016年6月6日"
},
{
"keyword_id": 5,
"name": "物品名稱(chēng)",
"example": "咖啡"
}
]
}
返回參數(shù)說(shuō)明:
參數(shù) | 說(shuō)明 |
---|---|
keyword_id | 關(guān)鍵詞id,添加模板時(shí)需要 |
name | 關(guān)鍵詞內(nèi)容 |
example | 關(guān)鍵詞內(nèi)容對(duì)應(yīng)的示例 |
3.組合模板并添加至帳號(hào)下的個(gè)人模板庫(kù)
接口地址
https://api.weixin.qq.com/cgi-bin/wxopen/template/add?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
access_token | 是 | 接口調(diào)用憑證 |
id | 是 | 模板標(biāo)題id,可通過(guò)接口獲取,也可登錄小程序后臺(tái)查看獲取 |
keyword_id_list | 是 | 開(kāi)發(fā)者自行組合好的模板關(guān)鍵詞列表,關(guān)鍵詞順序可以自由搭配(例如[3,5,4]或[4,5,3]),最多支持10個(gè)關(guān)鍵詞組合 |
示例:
{
"id":"AT0002",
"keyword_id_list":[3,4,5]
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode": 0,
"errmsg": "ok",
"template_id": "wDYzYZVxobJivW9oMpSCpuvACOfJXQIoKUm0PY397Tc"
}
返回參數(shù)說(shuō)明:
參數(shù) | 說(shuō)明 |
---|---|
template_id | 添加至帳號(hào)下的模板id,發(fā)送小程序模板消息時(shí)所需 |
4.獲取帳號(hào)下已存在的模板列表
接口地址
https://api.weixin.qq.com/cgi-bin/wxopen/template/list?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
access_token | 是 | 接口調(diào)用憑證 |
offset | 是 | offset和count用于分頁(yè),表示從offset開(kāi)始,拉取count條記錄,offset從0開(kāi)始,count最大為20。最后一頁(yè)的list長(zhǎng)度可能小于請(qǐng)求的count |
count | 是 | offset和count用于分頁(yè),表示從offset開(kāi)始,拉取count條記錄,offset從0開(kāi)始,count最大為20。最后一頁(yè)的list長(zhǎng)度可能小于請(qǐng)求的count |
示例:
{
"offset":0,
"count":1
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode": 0,
"errmsg": "ok",
"list": [
{
"template_id": "wDYzYZVxobJivW9oMpSCpuvACOfJXQIoKUm0PY397Tc",
"title": "購(gòu)買(mǎi)成功通知",
"content": "購(gòu)買(mǎi)地點(diǎn){{keyword1.DATA}}\n購(gòu)買(mǎi)時(shí)間{{keyword2.DATA}}\n物品名稱(chēng){{keyword3.DATA}}\n",
"example": "購(gòu)買(mǎi)地點(diǎn):TIT造艦廠\n購(gòu)買(mǎi)時(shí)間:2016年6月6日\(chéng)n物品名稱(chēng):咖啡\n"
}
]
}
返回參數(shù)說(shuō)明:
參數(shù) | 說(shuō)明 |
---|---|
list | 帳號(hào)下的模板列表 |
template_id | 添加至帳號(hào)下的模板id,發(fā)送小程序模板消息時(shí)所需 |
title | 模板標(biāo)題 |
content | 模板內(nèi)容 |
example | 模板內(nèi)容示例 |
5.刪除帳號(hào)下的某個(gè)模板
接口地址
https://api.weixin.qq.com/cgi-bin/wxopen/template/del?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
access_token | 是 | 接口調(diào)用憑證 |
template_id | 是 | 要?jiǎng)h除的模板id |
示例:
{
"template_id":"wDYzYZVxobJivW9oMpSCpuvACOfJXQIoKUm0PY397Tc"
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode": 0,
"errmsg": "ok"
}
發(fā)送模板消息
1. 獲取access_token
access_token是全局唯一接口調(diào)用憑據(jù),開(kāi)發(fā)者調(diào)用各接口時(shí)都需使用access_token,請(qǐng)妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。
公眾平臺(tái)的API調(diào)用所需的access_token的使用及生成方式說(shuō)明:
- 為了保密appsecrect,第三方需要一個(gè)access_token獲取和刷新的中控服務(wù)器。而其他業(yè)務(wù)邏輯服務(wù)器所使用的access_token均來(lái)自于該中控服務(wù)器,不應(yīng)該各自去刷新,否則會(huì)造成access_token覆蓋而影響業(yè)務(wù);
- 目前access_token的有效期通過(guò)返回的expire_in來(lái)傳達(dá),目前是7200秒之內(nèi)的值。中控服務(wù)器需要根據(jù)這個(gè)有效時(shí)間提前去刷新新access_token。在刷新過(guò)程中,中控服務(wù)器對(duì)外輸出的依然是老access_token,此時(shí)公眾平臺(tái)后臺(tái)會(huì)保證在刷新短時(shí)間內(nèi),新老access_token都可用,這保證了第三方業(yè)務(wù)的平滑過(guò)渡;
- access_token的有效時(shí)間可能會(huì)在未來(lái)有調(diào)整,所以中控服務(wù)器不僅需要內(nèi)部定時(shí)主動(dòng)刷新,還需要提供被動(dòng)刷新access_token的接口,這樣便于業(yè)務(wù)服務(wù)器在API調(diào)用獲知access_token已超時(shí)的情況下,可以觸發(fā)access_token的刷新流程。
開(kāi)發(fā)者可以使用AppID和AppSecret調(diào)用本接口來(lái)獲取access_token。AppID和AppSecret可登錄微信公眾平臺(tái)官網(wǎng)-設(shè)置-開(kāi)發(fā)設(shè)置中獲得(需要已經(jīng)綁定成為開(kāi)發(fā)者,且?guī)ぬ?hào)沒(méi)有異常狀態(tài))。AppSecret生成后請(qǐng)自行保存,因?yàn)樵诠娖脚_(tái)每次生成查看都會(huì)導(dǎo)致AppSecret被重置。注意調(diào)用所有微信接口時(shí)均需使用https協(xié)議。如果第三方不使用中控服務(wù)器,而是選擇各個(gè)業(yè)務(wù)邏輯點(diǎn)各自去刷新access_token,那么就可能會(huì)產(chǎn)生沖突,導(dǎo)致服務(wù)不穩(wěn)定。
接口地址:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
HTTP請(qǐng)求方式:
GET
參數(shù)說(shuō)明 :
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
grant_type | 是 | 獲取access_token填寫(xiě)client_credential |
appid | 是 | 第三方用戶(hù)唯一憑證 |
secret | 是 | 第三方用戶(hù)唯一憑證密鑰,即appsecret |
返回參數(shù)說(shuō)明:
正常情況下,微信會(huì)返回下述JSON數(shù)據(jù)包給開(kāi)發(fā)者:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
參數(shù) | 說(shuō)明 |
---|---|
access_token | 獲取到的憑證 |
expires_in | 憑證有效時(shí)間,單位:秒 |
錯(cuò)誤時(shí)微信會(huì)返回錯(cuò)誤碼等信息,JSON數(shù)據(jù)包示例如下(該示例為AppID無(wú)效錯(cuò)誤):
{"errcode":40013,"errmsg":"invalid appid"}
2. 發(fā)送模板消息
接口地址:(ACCESS_TOKEN需換成上文獲取到的access_token)
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
HTTP請(qǐng)求方式:
POST
POST參數(shù)說(shuō)明:
參數(shù) | 必填 | 說(shuō)明 |
---|---|---|
touser | 是 | 接收者(用戶(hù))的openid |
template_id | 是 | 所需下發(fā)的模板消息的id |
page | 否 | 點(diǎn)擊模板查看詳情跳轉(zhuǎn)頁(yè)面,不填則模板無(wú)跳轉(zhuǎn) |
form_id | 是 | 表單提交場(chǎng)景下,為submit事件帶上的formId;支付場(chǎng)景下,為本次支付的prepay_id |
value | 是 | 模板內(nèi)容,不填則下發(fā)空模板 |
color | 否 | 模板內(nèi)容字體的顏色,不填默認(rèn)黑色 |
emphasis_keyword | 否 | 模板需要放大的關(guān)鍵詞,不填則默認(rèn)無(wú)放大 |
示例:
{
"touser": "OPENID",
"template_id": "TEMPLATE_ID",
"page": "index",
"form_id": "FORMID",
"data": {
"keyword1": {
"value": "339208499",
"color": "#173177"
},
"keyword2": {
"value": "2015年01月05日 12:30",
"color": "#173177"
},
"keyword3": {
"value": "粵海喜來(lái)登酒店",
"color": "#173177"
} ,
"keyword4": {
"value": "廣州市天河區(qū)天河路208號(hào)",
"color": "#173177"
}
},
"emphasis_keyword": "keyword1.DATA"
}
返回碼說(shuō)明:
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。
正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode":0,
"errmsg":"ok",
}
錯(cuò)誤時(shí)會(huì)返回錯(cuò)誤碼信息,說(shuō)明如下:
返回碼 | 說(shuō)明 |
---|---|
40037 | template_id不正確 |
41028 | form_id不正確,或者過(guò)期 |
41029 | form_id已被使用 |
41030 | page不正確 |
45009 | 接口調(diào)用超過(guò)限額(目前默認(rèn)每個(gè)帳號(hào)日調(diào)用限額為100萬(wàn)) |
使用效果:
下發(fā)條件說(shuō)明
-
支付
當(dāng)用戶(hù)在小程序內(nèi)完成過(guò)支付行為,可允許開(kāi)發(fā)者向用戶(hù)在7天內(nèi)推送有限條數(shù)的模板消息(1次支付可下發(fā)3條,多次支付下發(fā)條數(shù)獨(dú)立,互相不影響)
-
提交表單
當(dāng)用戶(hù)在小程序內(nèi)發(fā)生過(guò)提交表單行為且該表單聲明為要發(fā)模板消息的,開(kāi)發(fā)者需要向用戶(hù)提供服務(wù)時(shí),可允許開(kāi)發(fā)者向用戶(hù)在7天內(nèi)推送有限條數(shù)的模板消息(1次提交表單可下發(fā)1條,多次提交下發(fā)條數(shù)獨(dú)立,相互不影響)
審核說(shuō)明
1.標(biāo)題
1.1標(biāo)題不能存在相同
1.2標(biāo)題意思不能存在過(guò)度相似
1.3標(biāo)題必須以“提醒”或“通知”結(jié)尾
1.4標(biāo)題不能帶特殊符號(hào)、個(gè)性化字詞等沒(méi)有行業(yè)通用性的內(nèi)容
1.5標(biāo)題必須能體現(xiàn)具體服務(wù)場(chǎng)景
1.6標(biāo)題不能涉及營(yíng)銷(xiāo)相關(guān)內(nèi)容,包括不限于:
消費(fèi)優(yōu)惠類(lèi)、購(gòu)物返利類(lèi)、商品更新類(lèi)、優(yōu)惠券類(lèi)、代金券類(lèi)、紅包類(lèi)、會(huì)員卡類(lèi)、積分類(lèi)、活動(dòng)類(lèi)等營(yíng)銷(xiāo)傾向通知
2.關(guān)鍵詞
2.1同一標(biāo)題下,關(guān)鍵詞不能存在相同
2.2同一標(biāo)題下,關(guān)鍵詞不能存在過(guò)度相似
2.3關(guān)鍵詞不能帶特殊符號(hào)、個(gè)性化字詞等沒(méi)有行業(yè)通用性的內(nèi)容
2.4關(guān)鍵詞內(nèi)容示例必須與關(guān)鍵詞對(duì)應(yīng)匹配
2.5關(guān)鍵詞不能太過(guò)寬泛,需要具有限制性,例如:“內(nèi)容”這個(gè)就太寬泛,不能審核通過(guò)
違規(guī)說(shuō)明
除不能違反運(yùn)營(yíng)規(guī)范外,還不能違反以下規(guī)則,包括但不限于:
- 不允許惡意誘導(dǎo)用戶(hù)進(jìn)行觸發(fā)操作,以達(dá)到可向用戶(hù)下發(fā)模板目的
- 不允許惡意騷擾,下發(fā)對(duì)用戶(hù)造成騷擾的模板
- 不允許惡意營(yíng)銷(xiāo),下發(fā)營(yíng)銷(xiāo)目的模板
處罰說(shuō)明
根據(jù)違規(guī)情況給予相應(yīng)梯度的處罰,一般處罰規(guī)則如下:
第一次違規(guī),刪除違規(guī)模板以示警告,
第二次違規(guī),封禁接口7天,
第三次違規(guī),封禁接口30天,
第四次違規(guī),永久封禁接口
處罰結(jié)果及原因以站內(nèi)信形式告知
Bug & Tip
-
tip
: 微信6.5.2及以上版本支持模板功能。低于該版本將無(wú)法收到模板消息。
更多微信小程序開(kāi)發(fā)教程,可以關(guān)注hi小程序。
第二部分:如何開(kāi)通一個(gè)小商店