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

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

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

 

上一篇讲到了获取和缓存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封装的,详细的格式可以参考微信官方文档及模板详情!

 

成功:

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

 

转载于:https://www.cnblogs.com/liliangel/p/6075082.html

你可能感兴趣的文章
C/C++基本数据类型
查看>>
C++第八章习题
查看>>
multiset || 线段树 HDOJ 4302 Holedox Eating
查看>>
POJ2115:C Looooops——题解
查看>>
Spring-boot+Mybatis+Maven+MySql搭建实例
查看>>
最基本的js与css 控制弹出层效果
查看>>
第12章线程控制总结
查看>>
网络对抗技术实验一
查看>>
mysql命令大全
查看>>
KVO
查看>>
html----怎样实现元素的垂直居中
查看>>
不显示BOM清单的版本
查看>>
Oracle EBS-SQL (CST-4):检查组织间项目成本.sql
查看>>
PHPMyadmin配置文件详解
查看>>
100C之15:倒底捕了多少鱼?
查看>>
PHP 命名空间
查看>>
层次分析法
查看>>
[转] xgboost
查看>>
ASP.NET一些常用的东西
查看>>
elasticsearch__5__java操作之FilterBuilders构建过滤器Query
查看>>