支付寶小程序:模板消息(升級版)
小編:啊南 219閱讀 2020.12.28
開發者可通過消息高效觸達用戶,通知用戶當前行為的結果及狀態等;同時可在消息中配置跳轉小程序指定頁面地址,當用戶查看消息時,在消息中點擊 進入小程序查看?返回小程序,進入開發者配置的小程序指定頁面。
用戶端消息呈現效果模板消息功能適用于開發者高效觸達用戶的場景,比如:交易狀態、物流進度等。
用戶在小程序內產生頁面交互行為后,開發者可通過此能力給用戶發送消息,同時開發者可在消息中配置小程序地址或指定頁面地址,用戶收到消息后可通過消息點擊進入到小程序,目前僅支持文本消息。
支付寶消息入口:客戶端首頁?>?服務提醒(同步收到移動端的系統推送通知)。
高德消息入口:首頁?>?消息中心?>?小程序消息。
支付寶禁售類目 及以下服務主體不支持:?
-
部分金融服務:典當行、電匯和匯票服務、個人資金借貸、貴金屬投資、金融機構-自動現金服務、小貸公司、支付機構、融資擔保公司。
-
部分商業服務:債務催收機構。
-
部分生活服務:財務債務咨詢、售賣成人用品類。
-
部分數娛網游:彩票等博彩業務。
-
部分娛樂票務:歌舞廳/夜店。
-
部分專業服務:GCAS緊急服務(僅限Visa使用)、Visa信任服務、檔案、電子檔案、站內清算、測試實驗服務。
-
部分政府服務:保釋金、法庭費用、行政費用和罰款。
小程序需滿足所屬經營類目小程序準入標準,還需滿足 小程序經營類目及所需資質材料 要求,小程序商戶必須遵守?支付寶小程序運營規范。
小程序業務合規,用戶體驗良好:90?天內無違規處罰,頁面流程順暢,服務通道暢通有效,平臺投訴糾紛率低,無首屏/強制/過度授權,無外鏈引導,無品牌侵權等。
如果開發者需要通過 tradeNo 發送模板消息,則必須產生交易,從而生成交易號 tradeNo,如開通 小程序支付 和 資金授權 中的 凍結轉支付 功能等。消息類型為支付類型的只能通過 tradeNo 發送。
-
同個業務場景同類用戶行為的通知不能有重復關系,如有則需將相同的通知模板合并為一。
-
禁止內容違規:不得侵犯用戶隱私,不得有合規、公關、隱私相關風險。
-
禁止模板濫用:禁止通知消息的內容與用戶觸發場景不一致。禁止用多個消息模板對同一個觸發場景通知。
-
禁止消息騷擾:頻繁發送相同內容或性質的模板消息,有騷擾用戶傾向,引起用戶反感、退訂甚至引起用戶投訴。
-
禁止外鏈或推廣下載:非支付寶端內產品不予申請,且消息提醒的承接頁需落在支付寶端內。禁止以任何形式外鏈到其他網站/服務或推廣其他 APP 下載。
-
禁止涉及營銷相關內容,包括不限于:消費優惠類、購物返利類、商品更新類、價格更新類、優惠券類、代金券類、紅包類、會員卡類、積分類、活動類等營銷傾向通知。
-
禁止惡意誘導用戶進行觸發操作,以達到可向用戶下發模板目的。
-
禁止發送含有支付寶規定的禁售行業或需要特定資質行業的內容。
免費。
接入指引步驟一:選用模板,獲取模板 ID1. 入口-
登錄 支付寶開放平臺 > 業務中心 > 小程序 > 進入小程序 > 運營中心 > 留存工具 > 模板消息。
-
點擊?添加消息模板,在 模板庫 列表頁可選擇對應的模板消息,若沒有合適的消息母版或者消息關鍵詞,可以申請新增母版或關鍵詞,審核通過后即可使用。
-
商戶需要組裝模板內容、消息投遞端、發送規則,形成消息子板并獲得模板 ID。
-
當選擇模板消息后,可在 我的模板 列表頁可獲取模板 ID。
-
小程序模板消息提供支持多場景的消息母版,消息母版約定消息標題、消息候選關鍵詞集合。開發者可以選擇適合其場景的消息母版,從中選擇消息關鍵詞并排定優先級。
(1)從公共消息母版庫選擇母版(必選)
-
如果選定的母版中沒有合適的關鍵詞,可以基于此母版申請新消息關鍵詞。
formId??:頁面的<form/>組件,屬性report-submit為true時,可以聲明為需發模板消息,此時用戶點擊按鈕提交表單可以獲取?formId,用于發送表單類模板消息。
示例代碼:
<!--.axml--><form onReset="onReset" onSubmit="onSubmit" report-submit="true"> <view class="form-row-label">Input</view> <view class="form-row-content"> <input name="input" class="input" placeholder="input something" /> </view> <view><button type="ghost" formType="reset">重置</button></view> <view><button type="primary" formType="submit">提交</button></view></form>
注意:使用 button 時請添加 formType屬性。
//.js onReset(){},onSubmit(e){ console.log(JSON.stringify(e));//打印表單提交信息 },
tradeNo :當用戶完成支付行為時,可以獲取 tradeNo(即支付交易號) 用于發送交易類模板消息,如 小程序支付資金授權 中的 alipay.trade.pay 接口。消息類型為支付類型的只能通過 tradeNo 發送。
步驟三:調用接口下發模板消息1. 集成并配置 SDK服務端 SDK 需要開發者集成在自己的服務端系統中,用于后續的服務端接口調用。
(1)下載服務端 SDK為了幫助開發者調用開放接口,我們提供了 開放平臺服務端 SDK,包含 JAVA、PHP、NodeJS、Python 和 .NET 五種語言,封裝了簽名 & 驗簽、HTTP 接口請求等基礎功能。請先下載對應語言版本的 SDK 并引入您的開發工程。
(2)接口調用配置在 SDK 調用前需要進行初始化,以 JAVA 代碼為例:
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
關鍵參數說明:
配置參數 |
示例值解釋 |
獲取方式/示例值 |
URL |
支付寶網關(固定)。 |
https://openapi.alipay.com/gateway.do ?? |
APPID |
APPID 在創建應用后生成。 |
點此查看 獲取方式 |
APP_PRIVATE_KEY |
開發者私鑰,由開發者自己生成。 |
獲取詳見上面 接口加簽方式 |
FORMAT |
參數返回格式,只支持 JSON。 |
JSON(固定) |
CHARSET |
編碼集,支持 GBK/UTF-8。 |
開發者根據實際工程編碼配置 |
ALIPAY_PUBLIC_KEY |
支付寶公鑰,由支付寶生成。 |
獲取詳見上面 接口加簽方式 |
SIGN_TYPE |
商戶生成簽名字符串所使用的簽名算法類型,目前僅支持 RSA2。 |
RSA2 |
接下來,就可以用 alipayClient 來調用具體的 API 了。alipayClient 只需要初始化一次,后續調用不同的 API 都可以使用同一個 alipayClient 對象。
注意:
ISV 開發者可以通過 第三方應用授權 得到商戶授權令牌(app_auth_token)作為請求參數傳入,實現代商戶發起請求的能力。
2. 調用消息推送接口開發者調用消息發送接口 alipay.open.app.mini.templatemessage.send 需根據消息類型傳入不同的參數,同時可在接口 page 參數中配置跳轉到小程序的指定頁面 url,小程序頁面地址可在代碼中的 app.json 中獲取。
接口英文名 |
接口中文名 |
接口描述 |
alipay.open.app.mini.templatemessage.send |
小程序發送模板消息 |
小程序通過 openapi 給用戶觸達消息,主要為用戶完成支付后的的消息觸達(通過 tradeNo)和用戶提交表單后的消息觸達(通過 formId) |
名稱 |
類型t |
必填 |
描述t |
示例值 |
to_user_id |
String |
是 |
觸達消息的支付寶user_id。 |
2088102122458832 |
form_id |
String |
是 |
用戶發生的交易行為的交易號,或者用戶在小程序產生表單提交的表單號,用于信息發送的校驗。 |
2017010100000000580012345678 |
user_template_id |
String |
是 |
用戶申請的模板 ID號,固定的模板 ID會發送固定的消息。 |
MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM= |
page |
String |
是 |
小程序的跳轉頁面,用于消息中心用戶點擊之后詳細跳轉的小程序頁面。 |
page/component/index |
data |
String |
是 |
開發者需要發送模板消息中的自定義部分來替換模板的占位符。 注意:占位符必須和申請模板時的關鍵詞一一匹配。 |
{“keyword1”: {“value” : “12:00”}, “keyword2”: {“value” : “20180808”}, “keyword3”: {“value” : “支付寶”}} |
注意:data 參數中 value 后面的值為商家唯一需要自定義的部分,例如商家僅能改動 {"keyword1": {"value" : "12:00"} 中的數字“12:00”部分。占位符必須和申請模板時的關鍵詞一一匹配。
示例代碼Java 示例代碼如下:
AlipayClient alipayClient =newDefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");AlipayOpenAppMiniTemplatemessageSendRequest request =new AlipayOpenAppMiniTemplatemessageSendRequest();request.setBizContent("{"+""to_user_id":"2088102122458832","+//觸達消息的支付寶user_id""form_id":"2017010100000000580012345678","+""user_template_id":"MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=","+""page":"page/component/index","+""data":"{"keyword1":{"value":"12:00"},"keyword2":{"value":"20180808"},"keyword3":{"value":"支付寶"}}""+"}");AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);if(response.isSuccess()){System.out.println("調用成功");}else{System.out.println("調用失敗");}3. 具體場景說明(1)使用 tradeNo 發送模板消息
場景描述
當小程序用戶發生了支付行為以后(例如 小程序支付),小程序開發者可通過 tradeNo 向付款人發送模板消息(小程序開發者通過 異步通知 中 buyer_id 和 trade_no 來發送模板消息)。tradeNo 通過 alipay.trade.create 接口獲取,傳入 alipay.open.app.mini.templatemessage.sendtradeNo 或者 表單號 formId )。
注意:消息類型為支付類型的只能通過 tradeNo 發送。支付類模板消息的接收人必須與實際付款賬號主體一致。
接口調用流程
場景描述
當小程序用戶提交了表單之后,小程序開發者可通過 form表單組件 返回的 formId(需在聯網環境下),來發送模板消息。注意:消息類型為表單類型的只能通過 formId 來發送模板消息。
使用 formid 發送消息之前,需先獲取會員信息中的 user_id,具體查看 獲取方式。
接口調用流程
開發者可通過以下接口給用戶發送模板消息:
接口英文名 |
接口中文名 |
alipay.open.app.mini.templatemessage.send |
小程序發送模板消息 |
如果您在調用 API 時出現報錯,您可以:
-
在?公共錯誤碼 中根據錯誤碼的類型,查找相關錯誤碼及解決方案;
-
在?螞蟻問答?問答頁面直接輸入您遇到的錯誤碼;
-
在?云排查 中排查遇到的問題;
-
您還可以在?文檔中心 直接搜索您要的答案。
支付寶開放平臺還為開發者提供了模板消息 DEMO,開發者可以參考 模板消息快速示例 文檔進行體驗和實現快速接入。
七、常見問題Q:重復給同一用戶發送模板消息是否能顯示多條?A:使用同一個 formId(“表單提交動作”消息)或者 tradeNo(“交易動作”消息)發送的模板消息只會顯示最新的一條,之后的消息會覆蓋之前的消息;使用不同 formId 或者 tradeNo 發送的消息則不會覆蓋。
Q:模板消息有推送頻率限制嗎?A:小程序發送模板消息對用戶有疲勞度限制,對單個用戶有發送限制,商家需要控制發送頻率,單個用戶超過發送頻率后,后續發送的消息會被舍棄。對于同一個 formid,商戶 7 天內的發送次數不能超過 3 次。在調試時,開發者往往同時使用多個 formId 和 tradeNo 進行測試,即使使用多個不同的 formId 或 tradeNo 發送模板消息,一個小時內也只能給同一用戶發送 10 條模板消息。
Q:發送模板消息的接口為何報錯 tradeNo 只能發送給實際付款人?A:傳參錯誤。對交易號進行推送模板消息,接口中傳入的消息接收方的 userId 與 tradeNo 必須來自同一個用戶。
Q:小程序模板消息由商戶A觸發推送消息給顧客 B,是不是需要用 B 產生的 formID?A:是的,或者B產生的 tradeNo 。接口中傳入的消息接收方的 userId 與 formId/tradeNo 必須來自同一個用戶,保持對應。
Q:模板消息是否提供查詢模板和刪除模板的接口?A:目前沒有支持刪除和查詢的 API 。
Q:支付寶小程序的模板消息會自動下線嗎?A:不會下線,添加了消息模板后這個模板會一直存在除非商戶主動刪除。同時小程序不需要上線也可以測試發送模板消息。
Q:發送消息時報錯 form_id 不合法(FORM_ID_INVALID)如何處理?A:
-
“交易動作”?的消息子板只允許只用?trade_no?進行發送,“表單提交動作”的消息子板只允許使用 form 表單 組件生成的 formId 進行發送
-
form_id 需要和被觸達的用戶匹配,如果 form_id 是通過小程序表單生成的,則只允許發送給觸發表單的用戶,如果 form_id?是交易號,則只允許發送給實際付款人員。
A:模擬器生成的 formId 暫不可用,請在真機調試。
Q:小程序發送模板消息是否需要綁定生活號?A:發送模板消息無需綁定生活號。
Q:發送模板消息是否需要先上線小程序?A:不需要,即使未上線的小程序只要添加了功能包也可以發送模板消息。
Q:為什么支付寶小程序模板消息設置為高德盒子消息時,一直發送失?A:小程序需要在高德平臺上架,未上架高德平臺的小程序不能發送。
Q:為什么小程序發送模板消息時報錯 TRADE_NO_NOT_MATCH_USERID ?A:需要支付成功的訂單交易號才能發送模板消息。
Q:開發者開發同一個小程序同時在支付寶和高德上線,如果用戶僅僅使用支付寶端小程序產生formid,沒有使用高德端產生formid,能否允許通過高德端投遞消息?A:不可以。用戶在支付寶端小程序產生動作,開發者僅能使用“消息投遞端為支付寶”的消息子板向用戶發送消息;用戶在高德端小程序產生動作,開發者僅能使用“消息投遞端為高德”的消息子板向用戶發送消息。不存在“用戶僅在其中一個APP場景內(支付寶/高德)使用過小程序,可以同時向不同APP場景(支付寶/高德)投遞消息”的情況。
相關推薦
- 支付寶小程序:入駐開放平臺 支付寶小程序是一種全新的開放模式,它運行在支付寶客戶端,是手機應用嵌入支付寶客戶端的一種方法。支付寶小程序開放給開發者更多的 JSAPI 和 OpenAPI,也可以提供給用戶多樣化的便捷服務。支付寶小程序可以被便捷地獲取和傳播,從而為終端用戶提供更優的用戶…
- Qt 自定義 滾動條 樣式 Qt設置樣式的方式有兩種,一種直接在程序中寫,適用于樣式不多的情況;另一種,寫入到文件中,適用用樣式較大且需要提供換膚功能的情況。1.寫入到文件中,新建個xx.qss,然后復制一下內容// 設置垂直滾動條基本樣式QScrollBar:vertical{width:8px;background:r…