欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:微信小程序向公眾號推送消息模板

柚子快報邀請碼778899分享:微信小程序向公眾號推送消息模板

http://yzkb.51969.com/

序言

由于微信小程序長期訂閱的消息模板全部失效以后,對于小程序的消息推送可以改成往公眾號推。 這里將介紹如何使用小程序向公眾號推送消息,并且消息可以跳轉(zhuǎn)到小程序

準備

1、微信公眾平臺注冊服務(wù)號(訂閱號是不可以推送的)與小程序,兩者都需要認證并且認證主體是一致

2、微信開放平臺注冊賬號(該賬號也需要認證),綁定小程序與公眾號 3、公眾號根據(jù)想要的模板消息綁定服務(wù)類目,去模板消息中先挑選你的模板消息。(如果是剛注冊的公眾號還需要去新的功能頁面添加模板消息功能,需要微信審核,不過很快) 4、微信公眾號綁定小程序 5、小程序與公眾號配置服務(wù)器的ip地址白名單

整體實現(xiàn)流程

通過在開放平臺綁定的公眾號與小程序后,我們在調(diào)用微信code2Session接口的時候會返回unionid(雖然我們推送用不上哈哈),只要綁定以后,就可以通過小程序的openid調(diào)用微信的下發(fā)統(tǒng)一消息接口推送消息到公眾號去了

實現(xiàn)代碼(java)

1、消息推送接口文檔 2、小程序access_token獲取接口文檔

需要先獲取小程序的access_token

private String getAppletAccessToken() {

// 因為微信有限制次數(shù)跟有效期,所以需要存在redis中

String token = redisCache.getCacheObject(CacheConstants.WECHAT_MINI_ACCESS_TOKEN);

// token失效或者為空

if (StringUtils.isEmpty(token)) {

HashMap map = new HashMap<>(3);

map.put("appid", weAppAppId); // 小程序appid

map.put("secret", weAppSecret); // 小程序secret

map.put("grant_type", "client_credential");

// 發(fā)送Http的post請求

String resp = HttpUtils.sendPostJson(GET_ACCESS_TOKEN_URL, JSON.toJSONString(map), null);

log.info("獲取小程序accessToken返回:" + resp);

if (StringUtils.isEmpty(resp) || !resp.contains("access_token")) {

throw new ServiceException("獲取小程序accessToken失敗");

}

token = JSONObject.parseObject(resp).getString("access_token");

// 設(shè)置為1.9h(有效期2h)

redisCache.setCacheObject(CacheConstants.WECHAT_MINI_ACCESS_TOKEN, token,

7100, TimeUnit.SECONDS);

}

return token;

}

封裝下發(fā)消息參數(shù)實體(僅參考,照著接口文檔封)

/**

* 微信下發(fā)統(tǒng)一消息參數(shù)

*

* @author quan

* @date 2023/9/15 16:42

*/

@Data

@NoArgsConstructor

public class PushMsgParams {

/**

* 用戶openid,可以是小程序的openid,

* 也可以是mp_template_msg.appid對應(yīng)的公眾號的openid

*/

private String touser;

/**

* 公眾號模板消息

*/

private MpTemplateMsg mp_template_msg;

public PushMsgParams(String touser) {

this.touser = touser;

}

}

/**

* 小程序模板消息相關(guān)的信息,可以參考小程序模板消息接口;

* 有此節(jié)點則優(yōu)先發(fā)送小程序模板消息;

* (小程序模板消息已下線,不用傳此節(jié)點)

*

* @author quan

* @date 2023/9/15 16:48

*/

@Data

public class MpTemplateMsg {

/**

* 公眾號appid,要求與小程序有綁定且同主體

*/

private String appid;

/**

* 公眾號模板id

*/

private String template_id;

/**

* 公眾號模板消息所要跳轉(zhuǎn)的url

*/

private String url;

/**

* 公眾號模板消息所要跳轉(zhuǎn)的小程序,

* 小程序的必須與公眾號具有綁定關(guān)系

*/

private Map miniprogram;

/**

* 公眾號模板消息的數(shù)據(jù)

*/

private Map> data;

/**

* 構(gòu)建data數(shù)據(jù)

*/

public void createData(Map data) {

if (null == data || data.isEmpty()){

return;

}

Map> map = new HashMap<>(data.size());

for (Map.Entry entry : data.entrySet()) {

Map valMap = new HashMap<>(1);

valMap.put("value", entry.getValue());

map.put(entry.getKey(), valMap);

}

this.data = map;

}

}

消息推送方法封裝

/**

* 下發(fā)統(tǒng)一消息接口

*

* @param pushMsgParams 下發(fā)參數(shù)

* @param data 模板參數(shù)

*/

public void sendUniformMessage(PushMsgParams pushMsgParams, Map data) {

String accessToken = getAppletAccessToken();

MpTemplateMsg templateMsg = new MpTemplateMsg();

// 公眾號appid

templateMsg.setAppid(mpAppId);

// 前面準備的模板消息的id

templateMsg.setTemplate_id(templateId);

// 推送參數(shù),格式為keyword,value??煽聪挛⑿盘峁┑膁emo會清楚點

templateMsg.createData(data);

// 跳轉(zhuǎn)小程序

HashMap miniPro = new HashMap<>(2);

miniPro.put("appid", weAppAppId);

miniPro.put("pagepath", "");

templateMsg.setMiniprogram(miniPro);

pushMsgParams.setMp_template_msg(templateMsg);

// 發(fā)送Http請求

// SEND_UNIFORM_MESSAGE = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="

String resp = HttpUtils.sendPostJson(SEND_UNIFORM_MESSAGE + accessToken, JSON.toJSONString(pushMsgParams), null);

log.info("微信下發(fā)統(tǒng)一消息接口返回:{}", resp);

JSONObject result = JSON.parseObject(resp);

if (!"0".equals(result.getString("errcode"))) {

throw new ServiceException("微信消息推送失敗," + result.getString("errMsg"));

}

}

業(yè)務(wù)調(diào)用推送代碼

for (SysUser user : users) {

// 小程序或公眾號用戶的openid都可以推

PushMsgParams pushMsgParams = new PushMsgParams(user.getOpenid());

HashMap data = new HashMap<>(5);

data.put("character_string2", event.getFlightNo());

data.put("thing10", event.getStartPlace());

data.put("thing11", event.getDestPlace());

data.put("time3", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, event.getFlightStartTime()));

data.put("thing9", "請及時處理關(guān)注事件");

weChatUtil.sendUniformMessage(pushMsgParams, data);

}

推送效果,可直接跳轉(zhuǎn)小程序

柚子快報邀請碼778899分享:微信小程序向公眾號推送消息模板

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/17813030.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄