精华内容
下载资源
问答
  • jQuery WeUI组件微信公众号页面模板jQuery WeUI组件微信公众号页面模板
  • 微信公众号展示页面html静态模板
  • 微信公众号h5页面制作,微信公众号H5吸粉模板源码 。源码参考链接:www.pikao.cn
  • 微信公众号展示页面模板,单页面多栏目设计,直接打开index.html文件替换文字即可,方便简单!
  • 模板id需要自己去公众号中设置行业后得到. <?php //使用方法.直接在页面的逻辑中增加fahuo_wechat();即可.函数要事先引用. function fahuo_wechat($shopid){ if(_cfg("sendmobile")){ $thisdb = System::...
  • 微信公众号视频模板页面 ,这只是微信公众号的一个模板
  • 简单的微信后台管理页面,打包后可直接使用html。包含菜单、用户、素材、模板消息等管理。 测试运行: npm install npm run serve 打包html: npm run build
  • 通用的企业微信公众号页面模板,科技公司手机微信网站模板html下载。
  • 在上一期的文章中,小编给大家分别介绍了一下在微信公众平台制作页面模板和在第三方平台制作页面模板的区别,有好多小伙伴在后台留言说现在确实非常需要这种页面模板,但是自己制作起来又比较困难,虽然网上有很多...

    在上一期的文章中,小编给大家分别介绍了一下在微信公众平台制作页面模板和在第三方平台制作页面模板的区别,有好多小伙伴在后台留言说现在确实非常需要这种页面模板,但是自己制作起来又比较困难,虽然网上有很多教程,但是五花八门看多了反而更容易摸不着头脑。

    小编建议大家做这个页面模板的时候,我们先从最基础的做起,不要考虑那些特效,还有视频类的模板,我们就先做最简单也是最基础比较实用的文章总结模板就可以了。今天小编就来给大家演示一下怎样制作一个最基础的文章总结类模板。

    第一步:首先我们需要找到一个合适的文章分类整理类的模板,关于文章分类整理有很多模板,有列表图文模板,也有封面置顶的模板,还有标题置顶以及滑动分类模板。我们就拿最基础的列表类文章模板来给大家介绍。我们先看一下它的整体结构,如下图所示:

    在这里插入图片描述

    第二步:那我们确定要使用这个模板了,怎样可以找到模板呢?要从哪里找呢?

    这个模板在微信公众平台页面模板里可以找到,但是要想在微信公众后台使用页面模板功能,前提条件必须是开通了原创才可以申请使用这个功能。这就在很大程度上局限了我们的操作,所以小编给大家提供一种方法,可以突破这种限制。

    我们只需要在浏览器里搜索 然后进入官网就可以开始制作我们的模板了,在线操作非常方便。

    在进入首页以后,我们点击选择模板,然后第一个模板就是刚刚上面给大家看到的列表图文模板,点击下方的立即使用按钮就可以开始编辑模板内容了。

    image.png

    第三步:修改模板标题: 在模板上方页面名称那里有一个修改按钮,点击修改就会弹出一个模板名称设置的对话框,在这个框里我们可以自由修改模板的名称。一般大家都会将公司的名称或者是文章的主题设置为模板的名称。

    image.png

    第四步:手动添加文章内容

    手动添加:点击手动添加按钮以后会弹出手动添加文章的页面,在这个里面我们把需要展示的文章链接粘贴过来,然后设置文章展示在列表里面的图片,还有文章的标题以及摘要,以及给文章添加标签等等。

    在这里插入图片描述

    第五步:公众号导入文章

    公众号导入:是不是看到上面这些选项感觉头都大了?如果模板中的文章比较少的话,这样做是非常好的,将细节部分处理好有利于提高用户体验。但是如果我们需要往模板内添加大量文章的话,这样操作起来就有些慢了,这个时候我们就可以用公众号导入功能。

    点击公众号导入按钮就会弹出公众号导入文章页面,里面会显示所有微信公众平台素材管理里面的文章。我们勾选了需要导入的我们勾选了需要导入的文章,以后点击确定按钮,就可以将文章批量导入到模板中。如果文章数量比较多,我们还可以在搜索框中输入文章标题的关键词进行搜索。

    image.png

    第六步:文章排序

    最后一步是可以对我们模板中的文章内容进行排序。点击排序按钮,就会弹出文章排序的窗口。在每篇文章左侧都会有一个输入框,里面可以输入不同的数值,数值越大的文章越靠前。

    在这里插入图片描述

    第七步:预览并发布文章

    上面介绍的这些就是制作一个文章类模板最基本的步骤。制作完以后,在页面左侧看到有一个二维码和一个小程序吗?我们用微信扫就可以分别预览两种不同的效果,一种是页面的效果,另一种是小程序的效果。预览过后觉得没有问题,我们就可以点击下面的发布按钮。

    在这里插入图片描述

    第八步:复制链接使用

    在这里已经做好了一个完整的页面模板,那么怎样把他们放到我们的微信公众号里和我们的微信公众平台结合起来呢?

    将我们的模板发布以后,点击我的页面就可以看到刚刚制作的模板,点击模板下方的模板链接按钮,就可以生成一个超链接将这个超链接复制到我们微信公众号的自定义菜单里面进行发布,用户点击菜单就可以跳转到这个模板了。

    这里涉及到一个问题,如果是个人申请的订阅号的话,他是无法认证的,没有认证的订阅号,在自定义菜单里面是无法添加外部链接的,这个模板的链接也属于外部链接。遇到这种情况,我们可以点击右侧的下载二维码,将这个模板的二维码保存为图片,然后将这个二维码以图片的形式上传到我们自定义菜单里面,这样用户点击自定义菜单,然后自动识别二维码,就可以看到我们的模板内容了。

    在这里插入图片描述

    展开全文
  • html5微信公众号企业专题页面,企业宣传活动页面手机模板下载。
  • 不能直接使用wkhtmltopdf 导出微信公众号文章,导出的文章会缺失图片,所以需要使用 wechatsogou 将微信公众号文章页面抓取,之后将html文本转化为pdf pip install wechatsogou --upgrade pip install pdfkit 踩坑...
  • 基于SpringBoot + Mybatis + Themeleaf的微信公众号网页授权demo代码;使用时需修改weinxinutil中的配置为自己申请的测试公众号
  • Amango 芒果微信公众号管理框架是基于 Onethink 开源框架进行的二次开发,它继承Onethink的基本CMS管理理念,丰富了对微信公众号管理的更好得支持。 因此,它既可以兼容Onethink的插件也支持微信插件。本系统专注于...
  • 众所周知,在微信页面模板中,静静的躺着 四个 页面模板,这F4就是以下四位大佬: 公众号经营初期还可以,但是后面就会越来越发现出其中的问题——样式少、单调、没个性、没针对性,可供编辑的文章数还有30篇的...

    b59a65f9de5b8b95d6150c20842e9890.png

    不管是新手小白,还是经营多年的老手,都值得一看!

    众所周知,在微信的页面模板中,静静的躺着 四个 页面模板,这F4就是以下四位大佬:

    e90d1d305aea759b5afea99f4a1734de.png

    公众号经营初期还可以,但是后面就会越来越发现出其中的问题——样式少、单调、没个性、没针对性,可供编辑的文章数还有30篇的限制

    是的,自带的模板,也就这样了。也许你觉得大家都一样,但是你又会发现有人在用这些模板

    24efdff7b554461e7fece5bc969076e9.png

    8bdad4e3698955a42febcd2c3670749d.png

    d633c2ffe7edd60c503b1efa911e7f10.png

    有没有给惊讶到?!!其实还有!!!只有你想不到,没有别人做不到!!

    bb6267e57063f61d9e2682e9bba9abc0.png

    90e283a4e6a3e3d6aed768f397e21dbf.png

    fc53c3a73eb24a7fe3f891f2c4fd9846.png

    ......(此处省略其他展示)

    那么问题来了,别人是怎么做出这样的模板的呢?!

    --------------分界线--------------

    其实很简单,只需要借助一个小助手即可——智未来页面模板

    智未来页面模板-微信公众号文章助手-微信页面模板​www.zwlhome.com
    8a17d800cb5efdff37082b3d30d969a2.png

    好奇吧!只需两步哦!请看以下步骤:

    步骤1:

    首先进入智未来,绑定您的公众号——

    c9ba9cd1cc5388318fb6483d6e42f21d.png

    再到模板商店,选一个新怡的模板,进行编辑——

    ad156c3c626cad97ff80593f714540e6.png

    再选入您想展示的文章(绑定公众号后会自动导入公众号文章,只需点一点就可以选择文章了),还可设置页面模板背景音乐,以及设置模板一些细部的风格,甚至有的模板可以更换背景图片哦,编辑好您的模板后,保存即可——

    3339e9a9e10050c7fcb19cc7e6dc223f.png

    然后复制编辑好的页面模板链接(有按钮提示)——

    c64babd6b193ba23c9923d1e5ae0541d.png

    这样第一步就完成了!!!

    步骤2、

    回到公号后台,在自定义菜单里新建子菜单,点击“跳转网页”,将刚刚复制来的链接粘贴于此,再点击“保存并发布”,这样,你就能拥有与别人不一样的“特殊”模板了!!!

    14bac8c12bb48bf5622cc25b4ce06321.png

    当然这是对于已认证的公众号来说的,对与未认证的个人号,有另外的方法实现,例如通过小程序实现页面模板的使用等等!

    小程序页面模板教程详请请看我的另一篇介绍:微信个人公众号使用小程序页面模板管理历史文章教程

    展开全文
  • 采用bootstrap开发的一组微信公众号界面,采用VUE动态绑定数据。界面美观,并且可以兼容各种版本。
  • 人社微信公众号手机网站模板,简洁风格,全套模板,包括首页、公务员管理、通知通告、新闻详情等手机模板页面
  • 微信公众号提供了多种消息能力,这里我们主要讲得是模板消息,有需要其他消息实现方式的朋友可以留言,出其他实现文章。 功能介绍 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,...


    前言

    最近做项目时需要用到公众号的模板消息,所以在这里记录分享一下实现过程


    一、什么是模板消息

    ↓↓↓↓
    官方文档

    微信公众号提供了多种消息能力,这里我们主要讲得是模板消息,有需要其他消息实现方式的朋友可以留言,出其他实现文章。

    功能介绍
    模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

    关于使用规则,请注意:

    所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
    需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
    在所选择行业的模板库中选用已有的模板进行调用;
    每个账号可以同时使用25个模板。
    当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。

    关于接口文档,请注意:

    1. 模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
    2. 模板中参数内容必须以".DATA"结尾,否则视为保留字;
    3. 模板保留符号""。

    在这里插入图片描述

    二、获取模板ID

    百度搜索微信公众平台
    在这里插入图片描述
    微信扫码登录
    在这里插入图片描述
    找到新的功能

    在这里插入图片描述

    点击未开通,找到模板消息,点击开通
    在这里插入图片描述

    点击已开通,找到模板消息,点击模板消息
    在这里插入图片描述
    点击查看功能
    在这里插入图片描述

    点击模板库,选择想要的模板
    在这里插入图片描述

    在我的模板中就可以看到选择的模板,看到模板ID,这就是我们开发要用的
    在这里插入图片描述

    注意!注意!注意!重要的事说三遍,如果你是用的是微信公众号测试平台发送消息模板可不配置公众号对接相关功能,直接使用openId 发送模板信息功能即可,openId 可让用户关注公众号录入系统,
    或者在公众号添加h5 表单,绑定系统账号, 微信打开的h5 页面可获取当前用户的openId。

    如果是真正的公众号就必须配置公众号对接相关功能!必须!必须!必须!

    三、获取access_token

    首先来看下access_token是什么,下图是官方给出的:
    在这里插入图片描述
    其实通俗的讲,access_token就是小程序官方给我们提供的一个凭证,你要调用小程序官方的接口,就必须先拿到access_token。这个和我们做的项目调用后台接口必须登录后台给你一个token你带token访问相似。

    看一下官方文档:
    在这里插入图片描述

    grant_type是一个固定的值,只有appid和secret是需要我们填入的,这两个值在我们的公众号后台就可以拿到。

    下面就是Java后台代码的编写了

    我这里用的是springboot,这里要请求公众号官方接口,正常项目开发我都是用的自己写的接口请求工具类的,这里为了大家方便就用了springboot自带的RestTemplate来做网络请求。文章最后我会把我自己写的这个请求工具类贴出来有需要的朋友可以copy,具体代码如下。

    代码如下(示例):
    在这里插入图片描述

    这里代码很简单,就一个简单的get请求。不过要注意一点,这里获取的access_token是有两个小时的过期时间的
    在这里插入图片描述
    所以在获取到access_token的时候,把access_token存到数据库,或者存到本地缓存,并且还要记录当前时间,后面再用的时候先判断这个access_token有没有超过2个小时,如果超过2个小时的话,就要重新获取了。
    在这里插入图片描述

    四、发送消息

    官方文档

    老规矩还是先看官方文档
    在这里插入图片描述
    在这里插入图片描述

    上面的参数都是我们发送消息时需要的。

    然后微信就收到了
    在这里插入图片描述

    五、完整的代码

    1. 获取access_token
    @Data
    public class AccessToken {
    
        private String accessToken;
        //过期时间 当前系统时间+微信传来的过期时间
        private Long expiresTime;
    
        public AccessToken(String accessToken, String expiresIn) {
            this.accessToken = accessToken;
            this.expiresTime = System.currentTimeMillis()+Integer.parseInt(expiresIn)*1000;
        }
    
        /**
         * 判断token是否过期
         * @return
         */
        public boolean isExpired(){
            return System.currentTimeMillis()>expiresTime;
        }
    }
    

    下面的WX_OPEN_APP_ID,WX_OPEN_APP_SECRET替换成你们自己的,具体的可以去公众号后台查看

    public static final BASE_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +
                "&appid=%s" +
                "&secret=%s";
    
     private static AccessToken at;
    
        public static String getToken(){
            if (at == null || at.isExpired()){
                getAccessToken();
            }
            return at.getAccessToken();
        }
    
        /**
         * 获取token
         */
        private static void getAccessToken() {
            String accessTokenUrl = String.format(
                    BASE_ACCESS_TOKEN_URL,
                    WX_OPEN_APP_ID,
                    WX_OPEN_APP_SECRET
            );
    
            //发送请求获取token
            String token = null;
            try {
                token = HttpClientUtils.get(accessTokenUrl);
            } catch (Exception e) {
                e.printStackTrace();
            }
            JSONObject jsonObject = JSONObject.parseObject(token);
            String accessToken = (String) jsonObject.get("access_token");
            Integer expiresIn = (Integer) jsonObject.get("expires_in");
            //创建token对象,并存储
            at = new AccessToken(accessToken,String.valueOf(expiresIn));
            System.out.println(token);
    
        }
    
    
    1. 发送消息
    public static final SEND_URL  = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
    
     /**
         * 1、发送模版消息-拼接数据(测试信息)
         * @param openId 微信用户的openId
         */
        public static String sendMessage(String openId, String templateId,String machineAlias,String shopName,String openStatus, String dropStatus,int number) {
                // 模板参数
                Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
                String content = "店铺:"+shopName+",机器别名:"+machineAlias+",当前库存:"+number;
                sendMag.put("first", new WeChatTemplateMsg("请注意!"));
                sendMag.put("system", new WeChatTemplateMsg(content));
                sendMag.put("time", new WeChatTemplateMsg(DateUtils.getCurrDateTime()));
                sendMag.put("account", new WeChatTemplateMsg("1"));
                sendMag.put("remark", new WeChatTemplateMsg("请尽快补货,谢谢!"));
                // 发送
                String send = send(openId, templateId, sendMag);
                return send;
           
        }
    
    
        /**
         * 2、发送模版消息
         * openId     用户Id
         * templateId 模板Id   
         * data       模板参数
         * @param data
         */
        private static String send(String openId, String templateId, Map<String, WeChatTemplateMsg> data) {
            RestTemplate restTemplate = new RestTemplate();
            String accessToken = getToken();
            String url = SEND_URL.replace("ACCESS_TOKEN", accessToken);
            //拼接base参数
            Map<String, Object> sendBody = new HashMap<>();
            sendBody.put("touser", openId);               // openId
    //        sendBody.put("url", "www.baidu.com");         // 点击模板信息跳转地址
            sendBody.put("topcolor", "#FF0000");          // 顶色
            sendBody.put("data", data);                   // 模板参数
            sendBody.put("template_id", templateId);      // 模板Id
            ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);
            return forEntity.getBody();
        }
    
    1. 消息封装实体类 (模板参数)
    @Data
    @ToString
    public class WeChatTemplateMsg {
        /**
         * 消息
         */
        private String value;
        /**
         * 消息颜色
         */
        private String color;
    
    
        public WeChatTemplateMsg(String value) {
            this.value = value;
            this.color = "#173177";
        }
    
        public WeChatTemplateMsg(String value, String color) {
            this.value = value;
            this.color = color;
        }
    }
    

    微信就能收到了
    在这里插入图片描述

    到这里我们就可以完整的实现Java发送公众号模板消息的功能了。完整代码也已经贴给大家了。

    总结

    以上就是今天要分享给大家的内容,本文简单的讲了怎么发送模板消息,其实大部分大家参考官方文档都是可以写出来的
    展开全文
  • vue2.0+mintUI 实现的微信公众号投票系统前端框架代码,可使用模拟数据测试。 npm install 安装,npm run dev 启动 调试端口8087
  • springboot 实现微信公众号模板消息推送

    千次阅读 热门讨论 2020-09-13 13:37:03
    一、微信公众号测试平台 地址: http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 需要数据1 需要数据2 发送消息模板可不配置公众号对接相关功能,直接使用openId 发送...

    一、微信公众号测试平台

    地址: http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

    需要数据1

    在这里插入图片描述
    需要数据2
    在这里插入图片描述

    发送消息模板可不配置公众号对接相关功能,直接使用openId 发送模板信息功能即可,openId 可让用户关注公众号录入系统,
    或者在公众号添加h5 表单,绑定系统账号, 微信打开的h5 页面可获取当前用户的openId

    二、实现代码

    结构
    在这里插入图片描述

    1、yml 配置

    ## 微信公众号 相关配置信息
    wx:
      mp:
        configs:
          - appId: wxa997b110821cbfd6    # 第一个公众号的appid
            secret: a5cee82a40995afc5bc14d17058908c1   # 公众号的appsecret
            token: 123456789     # 接口配置里的Token值
            aesKey: 123456789    # 接口配置里的EncodingAESKey值
    

    2、yml 配置对应参数类

    package com.ws.ldy.others.wechat.wxbase.config;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    import java.util.List;
    
    /**
     * 微信公众配置信息
     */
    @Data
    @ConfigurationProperties(prefix = "wx.mp")
    public class WxMpProperties {
    
        /**
         * 多个公众号配置信息
         */
        private List<MpConfig> configs;
    
        @Data
        public static class MpConfig {
            /**
             * 设置微信公众号的appid
             */
            private String appId;
    
            /**
             * 设置微信公众号的app secret
             */
            private String secret;
    
            /**
             * 设置微信公众号的token
             */
            private String token;
    
            /**
             * 设置微信公众号的EncodingAESKey
             */
            private String aesKey;
        }
    }
    
    

    3、微信url 封装类

    public interface WxChatConstant {
    
        /**
         * 微信公众号相关操作的链接
         */
        interface Url {
    
            /**
             * 1、获取 accessToken 的请求地址
             * 参数1: APPID
             * 参数2: APPSECRET
             */
            String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    
            /**
             * 2、发送模版信息的url
             * 参数1: ACCESS_TOKEN
             */
            String SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
        }
    }
    
    

    4、微信缓存类( 缓存AccessToken )

    public class WxChatCache {
    
        /**
         * 微信 accessToken缓存
         */
        public static class AccessToken {
            public static String token = null;   // accessToken
            public static Long expiration = 0L;  // accessToken 过期时间(获取的token 默认有效期2小时)
        }
    
    

    5、微信通用service 类,避免重复依赖注入

    /**
     * 微信通用service层
     */
    public class BaseWeChatServiceImpl {
    
        // rpc
        @Autowired
        protected RestTemplate restTemplate;
    
    
        // 获取token
        @Autowired
        protected WeChetAccessToken weChetAccessToken;
    
    }
    
    

    6、获取token的工具类

    /**
     * 获取微信token工具类
     */
    @Component
    public class WeChetAccessToken {
    
        //微信配置
        @Autowired
        private WxMpProperties wxMpProperties;
        //rpc
        @Autowired
        private RestTemplate restTemplate;
    
        /**
         * 获取 accessToken (token有效期为2小时, 设置缓存, 过期并重新获取 accessToken)
         * <p>
         * 微信请求正确返回 {\"access_token\":\"37_B7bSN7N0VoqOVhf5rOk7NOHY6aMoxvE15VxNIcnD3f2kXvZkc0HOU-9rhfGZyWAoYkVfLrPzxTMhdcf86kgQeabfWSV-DH0hUYD8YMBF9vcbASzwRlEE3zJbKW2PuHJIl5Nu4BLouY4rUSFwTCBbAHAIRQ\",\"expires_in\":7200}
         * 微信请求错误返回 {"errcode":40013,"errmsg":"invalid appid"}
         * </p>
         * <P>
         *     流程:
         *     1、 判断token是否过期
         *     2、 获取 url 并拼接参数 APPID + APPSECRET
         *     3、 发起请求
         *     4、 判断请求是否成功
         *     5、 缓存accessToken + accessToken过期时间到jvm 内存中
         * </P>
         * @author wangsong
         * @date 2019年6月19日 下午5:55:11
         * @return
         */
        public String getToken() {
            if (WxChatCache.AccessToken.expiration <= System.currentTimeMillis()) {
                String url = WxChatConstant.Url.ACCESS_TOKEN_URL
                        .replace("APPID", wxMpProperties.getConfigs().get(0).getAppId())
                        .replace("APPSECRET", wxMpProperties.getConfigs().get(0).getSecret());
                //http
                ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
                JSONObject jsonObject = JSON.parseObject(forEntity.getBody());
                Object errcode = jsonObject.get("errcode");
                if (errcode != null && "40013".equals(errcode.toString())) {
                    throw new ErrorException(RType.WX_GET_ACCESS_TOKEN_ERROR);
                }
                // 设置为1小时59分钟有效期,防止空指针异常
                WxChatCache.AccessToken.token = jsonObject.get("access_token").toString();
                WxChatCache.AccessToken.expiration = ((Integer.parseInt(jsonObject.get("expires_in").toString()) - 1) * 1000) + System.currentTimeMillis();
            }
            return WxChatCache.AccessToken.token;
        }
    }
    

    7、消息推送接口

    public interface WxChatService {
    
        /**
         * 向一个用户推送消息(测试)
         * @param openId
         * @param
         */
        void sendTest(String openId,String content);
    
    }
    

    8、消息封装实体类 (模板参数)

    /**
     * 推送的微信公众信息的每一个 {{}} 值的内容和颜色封装
     */
    @Data
    @ToString
    public class WeChatTemplateMsg {
        /**
         * 消息
         */
        private String value;
        /**
         * 消息颜色
         */
        private String color;
    
    
        public WeChatTemplateMsg(String value) {
            this.value = value;
            this.color = "#173177";
        }
    
        public WeChatTemplateMsg(String value, String color) {
            this.value = value;
            this.color = color;
        }
    }
    
    

    9、消息推送接口实现

    
    /**
     * 向微信公众号推送消息
     * @author wangsong
     * @mail 1720696548@qq.com
     * @date 2020/9/9 0009 13:44
     * @version 1.0.0
     */
    @Service
    public class WxChatServiceImpl extends BaseWeChatServiceImpl implements WxChatService {
    
    
        /**
         * 1、发送模版消息-拼接数据(测试信息)
         * @param openId 微信用户的openId
         * @param content 发送的内容
         */
        @Override
        public void sendTest(String openId, String content) {
            // 模板Id
            String templateId = "P6llNez3CAcxEYzhQ_MDdFJGUifXfey15ZIX7MKiB3k";
            // 模板参数
            Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
            sendMag.put("MSG", new WeChatTemplateMsg(content));
            //sendMag.put("MSG", new WeChatTemplateMsg(content,"#173177"));
            // 发送
            this.send(openId, templateId, sendMag);
        }
    
    
        /**
         * 2、发送模版消息
         * openId     用户Id
         * templateId 模板Id   测试: "ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY"
         * data       模板参数
         * @param data
         */
        private String send(String openId, String templateId, Map<String, WeChatTemplateMsg> data) {
            String accessToken = weChetAccessToken.getToken();
            String url = WxChatConstant.Url.SEND_URL.replace("ACCESS_TOKEN", accessToken);
            //拼接base参数
            Map<String, Object> sendBody = new HashMap<>();
            sendBody.put("touser", openId);               // openId
            sendBody.put("url", "www.baidu.com");         // 点击模板信息跳转地址
            sendBody.put("topcolor", "#FF0000");          // 顶色
            sendBody.put("data", data);                   // 模板参数
            sendBody.put("template_id", templateId);      // 模板Id
            ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);
            return forEntity.getBody();
        }
    }
    
    

    10、通过测试接口

    /**
     * 微信公众号测试接口
     * @author wangsong
     * @mail 1720696548@qq.com
     * @date 2020/9/9 0009 14:41 
     * @version 1.0.0
     */
    @RestController
    @RequestMapping("/wechat/template/msg")
    @Api(value = "WxChatController", tags = "WeChat --> 微信模板消息推送")
    public class WxChatController {
    
        @Autowired
        private WxChatService wxChatService;
    
        /**
         * 我的openId:  o8nrg503tfKwepDE4zKeP2g9PujU
         * @return
         */
        @RequestMapping(value = "/sendTest", method = RequestMethod.GET)
        @ApiOperation("推送测试信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "openId", value = "微信openId", required = true, paramType = "query", example = "o8nrg503tfKwepDE4zKeP2g9PujU"),
                @ApiImplicitParam(name = "content", value = "发送内容", required = true, paramType = "query", example = "")
        })
        public R<Boolean> sendTest(String openId, String content) {
            wxChatService.sendTest(openId, content);
            return R.success(true);
        }
    }
    

    在这里插入图片描述

    11、微信公众号收到消息

    在这里插入图片描述

    • 个人开源项目(通用后台管理系统)–> https://gitee.com/wslxm/spring-boot-plus2 , 喜欢的可以看看

    • 本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!

    展开全文
  • 1 。第一步 后台发送消息要特别注意 { "touser": "OPENID", "template_id": "TEMPLATEID", "page": "mp.weixin.... "miniprogram":{ "appid":"APPID", "pagepath":"index?foo=bar" ... "value": "广州腾讯科技有限公
  • 介绍 微信公众号展示页面模板,单页面多栏目设计,直接打开index.html文件替换文字即可,方便简单! 下载链接 http://www.bytepan.com/nTBQcGKxf4B 图片
  • 微信公众号为服务号且开通微信认证(其他类型账号不能发送) 申请备案个线上域名 公众号设置->功能设置,配置网页授权域名 进入基础设置,开通开发者密码(AppSecret),并保存起来 ip白名单设置你的服务器...
  • 首先点击左边的自定义菜单 可以新增和删除和更改主菜单、子菜单 添加一个新菜单后需要选择一个链接,否则无法发布 最后保存并发布 示例:添加一个守望祷告的菜单 ...
  • 在公众平台实现发送模板消息功能,只能通过公众平台的接口开发实现,或者通过第三方平台微号帮功能模板消息群发实现,均能为微信公众号发送模板消息功能,模板消息发送不占用公众号每月的群发次数,模板消息仅用于...
  • 先提条件是你的公众号版定了小程序 第一种:直接配置   第二张:代码配置  1、进入在线接口调试工具    2、选择自定义菜单 菜单body为json格式: { button: [ { type: miniprogram, name: 合作, url: ...
  • java版微信公众号开发之自定义菜单的创建
  • 微信公众号 专辑(原页面模板) 功能

    千次阅读 2020-05-12 22:48:24
    微信公众号有一个不错的功能,叫专辑(原页面模板)。该功能的作用是可以把之前发布过的图文或者视频归纳成一类,编辑封面,名称,介绍就可以生成一个链接,就可以在微信上打开预览归纳的内容了。不过只能选择原创的...
  • (Java)微信公众号发送模板消息

    千次阅读 2019-07-18 16:14:14
    模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。 1、模板消息调用时主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,609
精华内容 4,643
关键字:

微信公众号页面模板