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

总体概述:

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

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


   com.github.binarywang
   weixin-java-mp
   3.6.0

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

测试号配置:

接口配置信息

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

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

JS接口安全域名:

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

微信公众号(测试号)开发_第1张图片

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 "非法请求";
    }

微信公众号(测试号)开发_第2张图片

至此可在代码上执行添加一个按钮的操作(公众号就会出现一个新增的按钮),点击按钮之后,公众号就会自动跳转到自己设置的界面,并携带一个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 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;

}

你可能感兴趣的:(IT技术分享,微信公众平台,微信)