博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信开放之模板消息
阅读量:6283 次
发布时间:2019-06-22

本文共 3609 字,大约阅读时间需要 12 分钟。

 

正如许多推送一样,微信也友好的给广大开发者提供了“模板消息”,比推送更好的是,它能借助海量用户的微信平台直接通过服务号以短消息形式传达给用户,大大提高了运营的可能性。比如我们现在可以完全抛开银行卡的短信服务,通过相关银行提供服务号绑定银行卡,当发生交易的时候同样的能收到交易详情短消息,确实是方便了不少!

 

上一篇讲到了获取和缓存access_token,也成功配置了jssdk授权,这些前置条件都准备好了,那么同样的实现一些功能就很快了,这回具体来说说模板消息的发送

 

公众号平台配置

功能-我的模板(或者去模块库中搜索),这里不涉及到代码,不细说

 

 后台restful

实际项目中肯定会存在多种类型的模板,那么肯定需要做一些共用代码封装,我这里 以保单出单 这个模板为例

1,对应模板的信息

2.controller

  /**     * 发送模板消息     * @return     */    @RequestMapping(value = "/sendTemplateMessage", method = RequestMethod.POST)    public @ResponseBody HttpResult sendTemplateMessage(@RequestParam String dataJson){          HttpResult hr = null;        LOGGER.info("RestFul of sendTemplateMessage parameters dataJson:{}",dataJson);                try {            hr = wechatService.sendTemplateMessage(dataJson);            LOGGER.info("Send template message is successful!",hr);        } catch (Exception e) {            LOGGER.error("RestFul of sendTemplateMessage is error:{}",e);        }                return hr;    }

因为我这里是一个通用的接口,不同的模板可能传的参数都不同,时间缘故也没有写持久化bean对象,就用了一个json字符串接收

 

3.serveice

直接通过httpclient调用微信提供的POST请求,https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={ACCESS_TOKEN}

  //保单出单通知    @Value("${TEMPLATE_THREE}")    private String TEMPLATE_THREE;

 

  /**     * 发送模板消息     * @param dataJson     * @return     * @throws IOException     */    public HttpResult sendTemplateMessage(String dataJson) throws IOException{        String doUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+getBaseAccessToken();                JSONObject data = JSONObject.parseObject(dataJson);        Object touser = data.get("touser");//接收者openid      String templateId = TEAMLATE_THREE;//模板ID        Object url = data.get("url");//模板跳转链接,如果置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。         Object first = data.getString("first");//标题        Object remark = data.getString("remark");//备注        Object keyword1 = data.getString("keyword1");        Object keyword2 = data.getString("keyword2");        Object keyword3 = data.getString("keyword3");                JSONObject parentJSON = new JSONObject();        parentJSON.put("touser", touser);      parentJSON.put("template_id", templateId);        parentJSON.put("url", url);        JSONObject json = new JSONObject();        json.put("first", toJson(first));        json.put("keyword1", toJson(keyword1));//对应的车辆信息        json.put("keyword2", toJson(keyword2));//产品信息        json.put("keyword3", toJson(keyword3));//出单状态json.put("remark", toJson(remark));                parentJSON.put("data", json);//模板数据        HttpResult rs = null;        try {            rs = apiService.doPostJson(doUrl,parentJSON.toJSONString());        } catch (Exception e) {            LOGGER.error("RestFul of doLogin is error:{}",e);        }                return rs;    }        public JSONObject toJson(String value){        JSONObject json = new JSONObject();        json.put("value", value);        json.put("color", "#173177");//消息字体颜色        return json;    }

为了增强代码可读性,关键字的地方我都添加了注释,那么到这里,后台基本完成,下面我通过一个接口调用工具Advanced REST client来测试一下

数据:

{  "touser": "otjo0wXJZipXdFjxzwDB3DZUjs44",  "templateType": "3",  "url": "www.liliangel.cn",  "first": {    "value": "测试发送模板消息3",    "color": "#173177"  },  "keyword1": {    "value": "testCar",    "color": "#173177"  },  "keyword2": {    "value": "testPro",    "color": "#173177"  },  "keyword3": {    "value": "successful",    "color": "#173177"  },  "remark": {    "value": "备注",    "color": "#173177"  }}

说明:我这里的数据结构是经过了一层json封装的,详细的格式可以参考微信官方文档及模板详情!

 

成功:

到这里我们已经完成了模板消息的接入,具体会不会比常用的推送更好? 会不会取代手机短信? 看怎么去运营,发挥你的想象,将微信提供的服务最大程度利用!

转载地址:http://nnxva.baihongyu.com/

你可能感兴趣的文章
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>