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