广告
返回顶部
首页 > 资讯 > 服务器 >微信公众号发送模板消息
  • 715
分享到

微信公众号发送模板消息

微信服务器运维微信公众平台 2023-09-05 13:09:20 715人浏览 薄情痞子
摘要

一、登录微信公众号后台,开通模板消息功能,选择使用的模板消息或者申请新的模板消息,只有通过企业认证才能使用模板消息 模板消息申请下来后,保存模板消息Id,后续发送模板消息使用      二、接口权限 => 网页服务 => 网页授权 =

一、登录微信公众号后台,开通模板消息功能,选择使用的模板消息或者申请新的模板消息,只有通过企业认证才能使用模板消息

模板消息申请下来后,保存模板消息Id,后续发送模板消息使用

 

 

 二、接口权限 => 网页服务 => 网页授权 => 申请/修改

三、配置域名,三项都要配置。注意前面不要加Httphttps,后面不可带端口号。还需要下载一个校验文件,把下载下来的校验文件放到所配置域名解析的服务器上,需要域名+检验文件名可以访问到这个文件才算校验通过,后面不能有端口(例如:wx.qq.com/MP_verify_FF1peUkHP0MrdJqN.txt;)。

ps:放校验文件的时候需要注意,http默认端口是80,https默认端口是443

 

四、配置IP白名单。作用:后续获取access_token访问接口时,需要设置访问来源IP为白名单,如不配置就拿不到token,每台机器上请求返回的ip都会不一样,把开发机器和服务器拿到的ip都配置一样就好,配置多个ip时每个ip用回车隔开就行。怎么获取来源ip:如果没有配置ip白名单,请求获取access_token时会返回一个ip,把这个ip配上去就行了。另外顺便保存一下appId和AppSecret,方便后续使用。

 五、以上为发送模板消息的准备工作,下面是重点

一、获取code:需要更换的参数是appid、redirect_uri,其他参数不变,其中scope有两个参数,以snsapi_base为 scope 发起的网页授权,是用来获取进入页面的用户的 openid 的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面);
以snsapi_userinfo为 scope 发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。我这里用的是静默授权然后跳转到相关页面。另外还要注意的是这个地址只能在微信客户端请求才有用,可以用微信开发者工具切换成公众号调试模式测试,请求后会自动重定向,在跳转的地址后面拼上一个code,这个就是我们需要的参数。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=要跳转的地址/页面&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
二、通过code换取网页授权access_token,拿到openId

 注意上面拿到的code只能使用一次,并且有效时长为5分钟,失效必须重新获取

https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的appid&secret=你的secret&code=上面地址栏拿到的code&grant_type=authorization_code
三、获取token(此token与上面的access_token不一样),此token用于发送模板消息用以及其他api接口的调用
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret
四、发送模板消息
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=上面获取到的token

POST数据示例如下:

{           "touser":"OPENID",           "template_id":"ngqIpbwh8bUfCSSECmogfXcV14J0tQlEpBO27izEYtY",           "url":"http://weixin.qq.com/download",             "miniprogram":{             "appid":"xiaochengxuappid12345",             "pagepath":"index?foo=bar"           },           "client_msg_id":"MSG_000001",           "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"                   }           }       }

 下面附上java代码:

1.获取用户openid,参数为code

        @GetMapping("/getOpenId")    @ApiOperation(value = "微信公众号获取用户openid")    public String getOpenId(@RequestParam String code){        String url= "https://api.weixin.qq.com/sns/oauth2/access_token" + "?appid=" + appId     + "&secret=" + appSecret + "&code="+ code+"&grant_type=authorization_code";        RestTemplate restTemplate=new RestTemplate();        String response=restTemplate.getForObject(url,String.class);        JSONObject jsonObj = new JSONObject(response);        String openid = jsonObj.get("openid").toString();        return openid;    }

2.获取token

        public String getWeiXinToken(){        String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ appId + "&secret=" + appSecret;        RestTemplate restTemplate = new RestTemplate();        String forObject = restTemplate.getForObject(url, String.class);        JSONObject jsonObj = new JSONObject(forObject);        return jsonObj.get("access_token").toString();    }

3.准备一个模板消息实体类

@Datapublic class WxTemplateMsg {        private String touser;        private String template_id;        private String url;    // "miniprogram":{ 未加入    // "appid":"xiaochengxuappid12345",    // "pagepath":"index?foo=bar"    // },        private TreeMap> data;        public static TreeMap item(String value, String color) {        TreeMap params = new TreeMap();        params.put("value", value);        params.put("color", color);        return params;    }}

4.模板消息封装,消息参数根据自己选择的模板消息来

    public String noticeTemplate(String openIdd,String siteName,String airIndex,String value1,String value2,String airIndexTime) {        // 模版ID        String templateId="你的模板消息id";        TreeMap> params = new TreeMap<>();        //根据具体模板参数组装        params.put("first", WxTemplateMsg.item(siteName, "#000000"));        params.put("keyword1", WxTemplateMsg.item(airIndex, "#000000"));        params.put("keyword2", WxTemplateMsg.item(value1, "#000000"));        params.put("keyword3", WxTemplateMsg.item(value2, "#000000"));        params.put("remark", WxTemplateMsg.item(airIndexTime, "#000000"));        WxTemplateMsg wxTemplateMsg = new WxTemplateMsg();        // 模版ID        wxTemplateMsg.setTemplate_id(templateId);        // 消息接收者openId        wxTemplateMsg.setTouser(openIdd);        // 关键字赋值        wxTemplateMsg.setData(params);        String data = JSONUtil.toJsonStr(wxTemplateMsg);        return data;    }

5.发送模板消息

    public void sendTemplateMsg(String openId,String siteName,String airIndex,String value1,String value2,String airIndexTime){        //获取token        String weiXinToken = getWeiXinToken();        String data = noticeTemplate(openId,siteName,airIndex,value1,value2,airIndexTime);        //发送消息        okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(MediaType.parse("application/json"), data);        Request request = new Request.Builder().url("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + weiXinToken).post(requestBody).build();        OkHttpClient okHttpClient = new OkHttpClient();        Response execute = null;        try {            execute = okHttpClient.newCall(request).execute();            String body = execute.body().string();            if(execute.code() == 200){                System.out.println("模板消息发送成功==========" + body);            }else{                System.out.println("模板消息发送失败==========" + body);            }        } catch (IOException e) {            e.printStackTrace();        }    }

OK,至此模板消息发送流程就完啦!

来源地址:https://blog.csdn.net/HK_DL/article/details/127549396

--结束END--

本文标题: 微信公众号发送模板消息

本文链接: https://www.lsjlt.com/news/395438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信公众号发送模板消息
    一、登录微信公众号后台,开通模板消息功能,选择使用的模板消息或者申请新的模板消息,只有通过企业认证才能使用模板消息 模板消息申请下来后,保存模板消息Id,后续发送模板消息使用      二、接口权限 => 网页服务 => 网页授权 =...
    99+
    2023-09-05
    微信 服务器 运维 微信公众平台
  • 小程序发送订阅消息,微信公众号发送消息模板
    首先讲两个注意事项 小程序和微信公众号的用户openid是不同的。 小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发)。 关于小程序和公众号AppID和AppSecret的获取可以自行百度一下,挺简单的。 小...
    99+
    2023-08-31
    小程序 php
  • Java实现微信公众号发送模版消息
    微信公众号发送模版消息 背景:如下图,当用户发布需求的时候,公众号自定推送消息。例如:微信支付的时候,公众号会推送支付成功消息 前提:发送模版消息,顾名思义,前提就是需要有模版,那...
    99+
    2022-11-13
  • 微信公众号开发消息推送功能
    目录微信公众号开发微信公众号简介注册微信公众号注册测试公众号搭建微信本地调试环境微信公众号接入(校验签名)给指定用户推送消息网页授权获取用户openid给指定用户发送模板信息微信公众...
    99+
    2023-02-15
    微信公众号开发消息推送 微信公众号开发
  • java微信公众号服务号推送模板消息如何设置
    本篇内容主要讲解“java微信公众号服务号推送模板消息如何设置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java微信公众号服务号推送模板消息如何设置”吧!推送的模板消息示例如下 :设置模板消...
    99+
    2023-07-05
  • Java怎么实现微信公众号发送模版消息
    这篇文章主要介绍Java怎么实现微信公众号发送模版消息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信公众号发送模版消息 背景:如下图,当用户发布需求的时候,公众号自定推送消息。例如:微信支付的时候,公众号会推送支...
    99+
    2023-06-29
  • PHP调用微信公众号接口发送消息
    PHP调用微信公众号接口发送消息随着社交媒体的普及,微信成为了人们在生活和工作中经常使用的一种社交工具。而对于企业来说,利用微信公众号与用户进行互动已经成为了一种必备的营销手段。PHP作为一种广泛应用于Web开发的编程语言,也有着调用微信公...
    99+
    2023-05-21
    PHP 微信公众号接口 发送消息
  • java 实现微信公众号消息推送
    注册微信公众号 这里主要用测试账号来演示:测试账号注册地址正式账号注册地址:微信公众平台 设置消息模板 可参考微信公众号文档:微信公众号文档 模板根据需求设置(注意:参数长度不能超出微信规定,否则...
    99+
    2023-09-22
    java 微信 开发语言
  • 微信公众号服务号推送模板消息设置方法(后端java)
    目录推送的模板消息示例如下 :设置模板消息编码1. 添加依赖2. SubscriptionMessageUtil.java3. 配置参数4. 使用微信测试号总结 模板消息文...
    99+
    2023-02-21
    服务号模板消息怎么用 公众号 模板消息 公众号消息推送
  • C#微信公众号开发之消息处理
    前言: 回顾上一节服务器配置的内容,我们已经可以自己完成公众号服务器的配置。配置完成之后,我们就可以通过调用的方式,完成对消息管理的处理。当用户关注公众号或者发送消息的时候,我们应该...
    99+
    2022-11-13
  • Java微信公众号发送消息-保姆级教程附源码
    目录 1. 概念说明: 2. 开发准备: 3. 测试demo(更改配置信息即可使用) 3.1. 服务器配置  3.1.1.配置填写说明 3.1.2.校验服务器有效性: 3.1.3.URL后端接口代码和校验代码(servlet)  3.1.4...
    99+
    2023-09-10
    微信
  • Android微信公众号开发消息推送功能怎么实现
    这篇文章主要讲解了“Android微信公众号开发消息推送功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android微信公众号开发消息推送功能怎么实现”吧!微信公众号简介微信公众...
    99+
    2023-07-05
  • 详解nodejs微信公众号开发——3.封装消息响应模块
    上一篇文章:nodejs微信公众号开发(2)自动回复,实现了简单的关注回复。采用拼接字符串的形式,并不是很方便,这里我们将其封装承接口。 1. ejs模板引擎 不使用拼接字符串的方式,那么模板引擎就是较...
    99+
    2022-06-04
    详解 模块 公众
  • 微信小程序 | 微信公众平台SpringBoot开发实例 │ 模板消息的应用开发
     在手机微信公众号中输入文本(如“你好”),公众号发送两条模板消息,如下图所示。 1、说明 1●模板消息的基本规则 模板消息用来帮助公众号进行业务通知,是在模板内容中设定参数(参数必须以{ {开头,且以.DATA} }结尾)并在调用时为这...
    99+
    2023-09-20
    微信公众平台 java 开发语言 微信小程序 小程序
  • 微信公众号配置 Token 认证以及消息推送功能
    前言公众号服务配置 Token认证如何配置Token 认证接口 公众号获取网页授权及用户信息导向网页授权关注后消息触发授权 公众号推送模板消息模板消息功能插件推送模版消息接口介绍获...
    99+
    2023-10-04
    微信 java servlet
  • 从零开始讲解Java微信公众号消息推送实现
    目录1.前期准备2.用户微信授权,获取其openId(重要)3.获取微信基础accessToken4. 调用微信模板方法发送消息总结1.前期准备 1. 首先需要的是一个能正常运营的微...
    99+
    2022-11-13
  • 在PHP中实现微信公众号新用户自动欢迎消息发送
    在今天的社交媒体时代,微信公众号已成为许多企业和个人建立在线品牌和社交媒体营销的重要手段。对于一个新用户来说,第一次关注公众号是一个重要的节点,也是建立一个良好关系的最佳时机。在这个时候,自动发送欢迎消息是十分重要的。在PHP中,通过一些简...
    99+
    2023-05-14
    PHP 微信公众号 自动消息发送
  • 详解nodejs微信公众号开发——1.接入微信公众号
    接入微信公众号是开发的第一步,万事开头难,走好第一步,后面的路就更宽广。 1.公众平台测试帐号的使用 登录微信公众平台,由于很多开发人员并没有认证的的微信公众号,所以比较折中的方式是使用公众平台测试帐号...
    99+
    2022-06-04
    公众 详解 nodejs
  • Koa2微信公众号开发之消息管理的示例分析
    这篇文章将为大家详细讲解有关Koa2微信公众号开发之消息管理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。接收消息当普通微信用户向公众账号发消息时,微信服务器将...
    99+
    2022-10-19
  • 如何利用python给微信公众号发消息实例代码
    现在通过发微信公众号信息来做消息通知和告警已经很普遍了。最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用。当要发送的信息较多,而且希望按照指定格式显示的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作