一、微信框架介绍
1、access_token是公众号的全局唯一调用接口的凭证,它两个小时更新一次。
获取access_token方法:
https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid=APPID&secret=APPSECRET
本项目使用github上的开源微信项目:
https://github.com/Wechat-Group/WxJava
二、整合微信开发框架WxJava
将demo下面的类(除了controller包)全部复制到我们自己的项目里面,引入
maven jar包,并且还有把demo项目中的application中也要设置成一样的。
验证是否将框架整合完成,就是将demo下面的那个验证放入项目中去配置一下看能不能配置成功。
如果配置成功了,说明框架整合完成。
三、微信返回模板消息接口
这个模版消息接口可以参考微信的官方文档 ,这里面解释的很详细。
测试微信模板消息接口推送,使用postman推送。
发送消息接口使用POST方式
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
模板消息 ,使用json格式发送
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"miniprogram":{
"appid":"xiaochengxuappid12345",
"pagepath":"index?foo=bar"
},
"data":{
"first": {
"value":"恭喜你购买成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2": {
"value":"39.8元",
"color":"#173177"
},
"keyword3": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
四、使用wxJava框架来发送消息模版
发送的json模板数据:
--
注意了:这个模板跟上面微信的那个模板不一样,不一样的地方名字、和参数,data是list类型的。
{
"toUser": "o8c0W1rRGfQBoP7i9vfeWg_kxMok",
"templateId": "16FCCw39w8xuI26M5xTU60nstxh5NQN-rQlIgVZX_DQ",
"url": "http://www.itmayiedu.com",
"data": [
{
"name": "first",
"value": "2019年1月16日",
"color": "#173177"
},
{
"name": "money",
"value": "1000",
"color": "#173177"
},
{
"name": "orderNo",
"value": "1676767677677",
"color": "#173177"
}
]
}
本地调用方法:
/**
* 发送模版消息请求 发送消息模版
* @throws WxErrorException
*/
@RequestMapping("/sendTemplete")
public String sendTemplete(@RequestBody WxMpTemplateMessage wxMpTemplateMessage) throws WxErrorException {
WxMpTemplateMsgService wxMpTemplateMsgService = wxService.getTemplateMsgService();
log.info("####微信消息模版正在推送####");
return wxMpTemplateMsgService.sendTemplateMsg(wxMpTemplateMessage);
}
调用:
http://127.0.0.1:81/wechat/portal/sendTemplete
五、Http协议参数转义知识
1、http协议转义:http协议对于特殊字符要进行转义,如:+ - 号等特殊字符,
需要转义才能去访问,否则会变成空格。
2、为什么要回调的时候转义?
答:因为重定向到浏览器的时候自己进行重定向。转义主要是防止特殊字符变成空格