服务号开发入门

2023-09-06 08:19:32 浏览数 (2)

前言:

了不起学弟:了不起学长,最近在学习服务号开发,感觉很难啊,文档有些都看不明白啊。。。

了不起:看不懂正常,你不熟悉肯定看不懂的,我给你讲讲这块,服务号接入的大概流程吧。

正文:

首先我们引入正常的依赖,同时我这边使用的框架是

代码语言:javascript复制
        <dependency>
          <groupId>com.github.binarywang</groupId>
          <artifactId>weixin-java-mp</artifactId>
          <version>4.5.0</version>
      </dependency>
      

再配置文件中加

代码语言:javascript复制
wx:
  mp:
    app-id: 
    secret: 
    token:  # 配置消息回调地址接入公众号时需要的token
    aes-key: 
    

引入配置类

代码语言:javascript复制
@Component
public class WxInitConfig {

    @Value("${wx.mp.app-id}")
    private String appid;

    @Value("${wx.mp.aes-key}")
    private String aesKey;

    @Value("${wx.mp.secret}")
    private String secret;
    @Value("${wx.mp.token}")
    private String token;

    @Bean
    public WxMpService wxMpService() {
        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
        config.setAppId(appid);
        config.setSecret(secret);
        config.setToken(token);
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(config);
        return wxMpService;
    }

    @Bean
    public WxMpConfigStorage wxMpConfigStorage() {
        WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl();
        // 设置微信公众号appId
        configStorage.setAppId(appid);
        // 设置微信公众号appSecret
        configStorage.setSecret(secret);
        // 设置微信公众号的token
        configStorage.setToken(token);
        // 设置微信公众号的EncodingAESKey
        configStorage.setAesKey(aesKey);

        return configStorage;
    }
}

添加校验签名接口

代码语言:javascript复制
    @GetMapping("send")
    public long configAccess(String signature, String timestamp, String nonce, Long echostr) {
        // 校验签名
        if (!wxMpService.checkSignature(timestamp, nonce, signature)) {

            logger.error("签名校验 ===》 非法请求");
            // 消息签名不正确,说明不是公众平台发过来的消息
            return 0;
        }
        logger.error("签名校验 ===》 验证成功");
        // 返回echostr
        return echostr;
    }
    

编写路由

代码语言:javascript复制
    Logger logger = LoggerFactory.getLogger(WxMpController.class);
    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
        logger.info("SubscribeHandler调用,关注用户:{}",wxMessage.getFromUser());
        return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
                .content("欢迎公众号哈哈哈哈哈啊哈“);
    }

这就是一个大概的简单流程了,在服务号的后台,要配置好相关的ip白名单等,服务号的一个简单的关注功能就可以实现了。

0 人点赞