您现在的位置是:首页 > 正文

微信公众号(测试号)开发

2024-01-30 21:53:06阅读 0

总体概述:

1.开发使用后台已经封装好的第三方sdk微信开发包开发,需要进行必要的jar引入,以及特定的spring配置及监控类开发,可拷贝git源代码

git链接:https://github.com/binarywang/weixin-java-mp-demo

<dependency>
   <groupId>com.github.binarywang</groupId>
   <artifactId>weixin-java-mp</artifactId>
   <version>3.6.0</version>
</dependency>

测试号申请网址:微信公众平台

测试号配置:

接口配置信息

url:第一次授权公众号为开发者模式的时候,微信服务器会调用这个地址去校验服务器是否存在且真实

url前半部分是开发服务器域名(本机开发一般是内网,微信服务器访问不到,需要搞一个内网穿透工具,将本机127.0.0.1映射到外网去,微信访问外网ip,外网ip再映射到本机地址上)

JS接口安全域名:

这个是我们本地调用微信接口的时候,再此将服务器域名告诉给微信,让他知道我们的域名是合法 的,才能调用微信开放接口(也是使用内网穿透生成的域名,此处要删去https:开头)

checkSignature接口实例(可查看文档,翻开该接口规则)

    @RequestMapping(value = "/wx/checkSignature")
    @ResponseBody
    public String checkSignature(String signature, String timestamp, String nonce, String echostr) {
        if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
            throw new IllegalArgumentException("请求参数非法,请核实!");
        }

        if (wxService.checkSignature(timestamp, nonce, signature)) {
            return echostr;
        }

        return "非法请求";
    }

至此可在代码上执行添加一个按钮的操作(公众号就会出现一个新增的按钮),点击按钮之后,公众号就会自动跳转到自己设置的界面,并携带一个code参数,可根据这个code去获得用户openId(sdk有对应方法,可查看对应文档)

公众号发送微信号推送方法封装

/**
     * 公众号发送微信号推送
     *
     * @param userId     本地用户ID
     * @param templateId 微信推送模板ID
     * @param url        推送点击详情,跳转url
     * @param params     微信参数对象列表 模板通过{{key.DATA}} 插入占位符,key就是new WxMpTemplateData(key)
     * @return
     */
    public ResultMsg sendWxMsg(String userId, String templateId, String url, List<MsgParamModel> params) {
        //将本地userId转换为微信用户的openId
        WxUserModel wxUser = wxUserService.getByUserId(userId);
        if (BeanUtil.isEmpty(wxUser)) {
            String userName = tPubUserMapper.getUserNameByUserId(userId);
            return new ResultMsg(false, null, "用户【" + userName + "】未关注公众号,推送失败!");
        }

        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                .toUser(wxUser.getOpen_id())
                .templateId(templateId)
                .url(StringUtils.isNotEmpty(url) ? url : null)
                .build();

        /**
         * 插入模板占位符参数
         */
        for (MsgParamModel param : params) {
            templateMessage = templateMessage.addData(new WxMpTemplateData(param.getName(), param.getValue(), param.getColor()));
        }

        String msgId = null;
        try {
            // 发送模板消息
            msgId = wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        logger.info("用户【" + wxUser.getUser_id() + "】推送微信:" + msgId != null ? "推送成功" : "推送失败");

        return new ResultMsg(msgId != null, "", msgId != null ? "推送成功" : "推送失败");
    }

为占位符封装对象

/**
 * 微信消息推送参数实体类
 *
 * @author lirong
 * @date 2022-10-11 15:41
 **/
@Data
@AllArgsConstructor
public class MsgParamModel {

    /**
     * 占位符key
     */
    private String name;

    /**
     * 占位符value
     */
    private String value;

    /**
     * 占位符文字输出颜色 为空为黑色
     */
    private String color;

}

网站文章

  • [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目描述题目大意一个序列,每次可以使一段区间内的所有数加一(模四)。问最少的操作次数。思考历程一看这题目,诶,这不就是那...

    2024-01-30 21:52:27
  • aop源码分析之 —— 创建代理对象

    aop源码分析之 —— 创建代理对象

    前言 在上一篇我们分析了AOP生成代理对象的源码流程,我们知道,springaop中,生成代理对象一般有2种,当目标对象实现了接口时,默认使用JDK代理,否则就采用cglib代理,而且,最终调用目标对...

    2024-01-30 21:52:19
  • Linux安装MySQL(使用yum)

    Linux安装MySQL(使用yum)

    镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 安装前准备 一、可以考虑替换国内yum镜像 根据我老中医多年的经验,需要从某些仓库啊之类的下载某些包的时候,最好先看看怎么替换国内的镜像(否则下载...

    2024-01-30 21:52:12
  • vue iview组件表格 render函数的使用

    1 如果要在标签中加入属性,例如img 中src属性 a标签中href属性 此时需要用到----attrs 来加入而不是props2 动态显示内容:render: (h,params) => {                            const row = params.row;                            const col

    2024-01-30 21:52:04
  • 20张Python高清数据分析全知识地图,数据分析发展路线

    20张Python高清数据分析全知识地图,数据分析发展路线

    公众号:yk 坤帝获取全部数据分析资料今天给大家分享一波很硬的干货,20张数据分析相关的知识地图,马起来慢慢消化~1、数据分析步骤地图2、数据分析基础知识地图3、数据分析技术知识地图4、数据分析业务流...

    2024-01-30 21:51:35
  • 毕业=失业?现在多学一个技能,秋招多50%岗位机会

    毕业=失业?现在多学一个技能,秋招多50%岗位机会

    毕业季到了,又有多少人成为“毕业即失业”大军的一员。今年大学毕业生1020万,但就业岗位没有增加,反而不少企业大规模。春招时招聘会场场爆满!大多数简历为“三无简历”:无实习、无技能、无证书,因此能投递...

    2024-01-30 21:51:23
  • 基础的Dos命令

    打开cmd的方式开始+系统+命令提示符win键+R在任意文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上cmd路径管理员方式运行:选择以管理员身份运行常用的D...

    2024-01-30 21:50:55
  • C/C++笔记总结——多态,虚析构与纯虚析构(看了就懂)

    C/C++笔记总结——多态,虚析构与纯虚析构(看了就懂)

    多态实C++面向对象的三大特性之一。面向对象的三大特性:封装,继承,多态。要想实现地址晚绑定,只需要在最大的父类中的成员函数前面加一个关键字virtual,将这个函数变为虚函数即可。这称作“地址晚绑定”。

    2024-01-30 21:50:48
  • 数据备份服务器维修,日常维护 – 备份与恢复 - Seafile 服务器用户手册

    概述一般来说,Seafile 备份分为两部分内容:Seafile 资料库数据数据库如果你根据我们的手册来安装 Seafile 服务器,你应该有如下目录结构:haiwen # 根目录,haiwen 为示例文件名,如果你安装到其他目录则为相应的目录名--seafile-server-2.x.x # Seafile 安装包解压缩后目录--seafile-data # Seafile 配置...

    2024-01-30 21:50:41
  • 计算机网考小抄免费,电大2016年计算机网考小抄考试必备小抄【完整打印版】.doc...

    电大2016年计算机网考小抄考试必备小抄【完整打印版】计算机网考Windows操作系统及其应用-选择题BA.Ctrl + Alt B.Ctrl + Shift C.Shift + Space D.Ct...

    2024-01-30 21:50:14