目录

1、公众号相关网站

 2、服务号、订阅号的区别

3、找到微信公众帐号测试号

4、准备域名

5、appID、appsecret、URL、Token、access_token介绍

6、实现公众号与springboot相连接


1、公众号相关网站

公众号登录网站:  微信公众平台  ,   手机扫描二维码即可显示公众号登录还是小程序登录了。

官方文档:  微信公众平台开发概述 | 微信开放文档

 2、服务号、订阅号的区别

服务号: 给企业和组织提供强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台。 个人不能申请

订阅号: 为媒体和个人提供一种新的信息传播方式,构建与读者之间更好的沟通与管理模式。 个人可以申请

认证的服务号和订阅号功能更加强大,但手续相对可能也比较麻烦。

3、找到微信公众帐号测试号

扫码登录即可 

登录成功,进入此页面

4、准备域名

微信公众号开发需要使用域名,域名映射本机ip地址推荐使用ngrok, 推荐的理由之一:  免费、操作方便。

ngrok下载网址:  Sunny-Ngrok内网转发

ngrok后端登录网址: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器

解压之后进入此文件夹,找到对应的程序。

 开通ngrok账号

只有online状态才是连接成功的,其它情况代表连接不成功 

5、appID、appsecret、URL、Token、access_token介绍

appID、appsecret是系统自动生成的,作用:  获取access_token时要用

URL就是你的域名+端口+项目路径, token随意书写就行了。 现在点击提交是没有意义的,需要后台程序验证消息是否来自微信服务器,并返回request.getParameter("echostr")的值才能提交成功,否则会报配置失败等错误信息;

access_token是后期一些高级功能需要获取的一个凭证,比如说 自定义菜单类、发送模板消息、素材管理等等,都需要使用到access_token

6、实现公众号与springboot相连接

点击提交,微信服务器将发送GET请求到填写的服务器地址URL上,并携带四个参数,    输出打印参数成功,代表微信服务器初步连通填写的服务器地址。

对请求开始检验,URL和Token才能填写成功

检验步骤:

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

Utils.java 工具类中进行字典序列排序以及加密、检验操作

public class Utils {


    public static final String TOKEN="aabbccdd";    //TOKEN就是自己填写的

    /*
   * 验证签名
   * */
    public static boolean check(String timestamp, String nonce, String signature) {

        //1、将token、timestamp、nonce进行字典排序
        String[] strs = new String[]{TOKEN, timestamp, nonce};
        Arrays.sort(strs);

        //2、将三个参数字符串拼接成一个字符串进行sha1加密
        String str = strs[0] + strs[1] + strs[2];
        String mysignature = sha1(str);

        //返回对比结果
        return mysignature.equalsIgnoreCase(signature);
    }

    /*
     * 加密方法
     * */
    private static String sha1(String src) {

        try {
            //获取一个加密对象
            MessageDigest md = MessageDigest.getInstance("sha1");
            //加密
            byte[] digest = md.digest(src.getBytes());
            char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
            StringBuffer sb = new StringBuffer();
            //处理结果集
            for (byte b : digest) {
                sb.append(chars[(b >> 4) & 15]);
                sb.append(chars[b & 15]);
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}

TestweixinController.java 

@RestController
public class TestweixinController {

    @RequestMapping(value="/testWeixin",method = {RequestMethod.POST,RequestMethod.GET})
    public void testWeixin(HttpServletRequest request, HttpServletResponse response) throws IOException {

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();

        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");

        if(Utils.check(timestamp,nonce,signature)){
            //校验正确并返回echostr,才能正式成为一名公众号开发者,即填写的URL和TOKEN才能生效
            out.print(echostr);
        }else{
            //校验失败
            out.print("---请到公众号执行相应操作---");
        }
        out.flush();
        out.close();
    }
}

目标效果

完成上述所有操作说明你对公众号开发有了初步了解!!  使用springboot进行公众号开发的详细操作请参考此博客: CSDN

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐