通过微信订阅消息功能给小程序给用户发送消息
生活随笔
收集整理的這篇文章主要介紹了
通过微信订阅消息功能给小程序给用户发送消息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:對于小程序用戶報名活動后,我們要通過小程序來給用戶發送活動結果。
方案:通過查閱資料(微信官方文檔)調用微信小程序訂閱消息相關接口。
接口地址
- POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
請求參數
| access_token | string | 是 | 接口調用憑證 |
| touser | string | 是 | 接收者(用戶)的 openid |
| template_id | string | 是 | 所需下發的訂閱模板 |
| idpage | string | 否 | 點擊模板卡片后的跳轉頁面,僅限本小程序內的頁面。支持帶參數,(示例index?foo=bar)。該字段不填則模板無跳轉。 |
| data | Object | 是 | 模板內容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } } |
| miniprogram_state | string | 否 | 跳轉小程序類型:developer為開發版;trial為體驗版;formal為正式版;默認為正式版 |
| lang | string | 否 | 進入小程序查看”的語言類型,支持zh_CN(簡體中文)、en_US(英文)、zh_HK(繁體中文)、zh_TW(繁體中文),默認為zh_CN |
簡單代碼實現
/*** 發送訂閱消息** @param subscribeMsg* @param openid* @return*/public static BaseResponse<String> sendSubscribeMsg(BaseSubscribeMsg subscribeMsg, String openid) {logger.info("發送訂閱消息: openid: {}, subscribeMsg: {}", openid, subscribeMsg);String token = subscribeMsg.getToken();if (StrUtil.isBlank(openid)) {return BaseResponse.ok("不明確的接收人");}if (StrUtil.isBlank(token)) {return BaseResponse.ok("微信請求異常,請稍后重試");}String sendResult = null;try {HashMap<String, Object> requestParam = TaobaoRequest.requestFormParam();requestParam.put("touser", openid);requestParam.put("template_id", subscribeMsg.getTemplatId());requestParam.put("data", subscribeMsg.getData());String page = subscribeMsg.getPage();if (StrUtil.isNotBlank(page)) {requestParam.put("page", page);}sendResult = HttpUtil.post(BaseSubscribeMsg.REQUEST_URL+"?access_token="+token, JSONObject.fromObject(requestParam).toString());JSONObject sendResultJO = JSONObject.fromObject(sendResult);if (sendResultJO == null || !sendResultJO.has("errcode") || !"0".equals(sendResultJO.getString("errcode"))) {logger.warn("發送訂閱消息失敗" + sendResultJO.toString());return BaseResponse.bad(sendResultJO.toString());}} catch (Exception e) {logger.error("發送訂閱消息異常: {}, {}", sendResult, e);}return BaseResponse.ok();}請求示例:
{"touser":"o6f6R4hXIJ9nQvj9CIrSnm15idVg","template_id": "fU_9Zjs1IaMvOJO2DQDCp04Nrxu2V94eavXDEv9KXWk","page": "index","miniprogram_state":"developer","lang":"zh_CN","data": {"thing1": {"value": "測試內容"},"date2": {"value": "2020年10月27日"}} }特別注意
- 模板id通過后臺管理平臺獲取的為準
- 填寫模板內容的時候,參數名及參數類型要對應上建的模板里的,如下圖標識
參數不對會報錯:
{"errcode": 47003,"errmsg": "argument invalid! data.date2.value is emtpy rid: 5f97ef46-0f877411-447f13c1" }誤以為錯誤為模板id出現問題,模板不起作用,實質是參數錯了。
注意點:每個類型的數據長度是有限制的,參考官網,如果模板發送失敗,請不要忽略了這個原因,具體限制如下圖:
總結
以上是生活随笔為你收集整理的通过微信订阅消息功能给小程序给用户发送消息的全部內容,希望文章能夠幫你解決所遇到的問題。