微信公众号开发步骤:申请公众号、准备公网IP及工具类说明

gongzhonghao 的头像

不少人想试着开发微信公众号。可又不清楚该从哪儿开始。今天就给大伙细细讲讲开发微信公众号的具体步骤。

申请公众号

要是想搞微信公众号开发。那得先有个公众号才行。要是用于开发测试。个人就能去申请个公众号来用。如今申请流程挺简便。在微信公众平台官网依照指引一步步操作就行。从提交资料开始。到审核通过。一般需要几天时间。有了公众号。咱们开发的路就算迈出第一步了。

个人公众号功能有一定限制。不过对于测试开发来说,这完全能满足需求。等你熟练之后。要是有更多需求。可以考虑申请企业公众号等其他类型。不同类型公众号特点和权限不同。大家按需选择就行。

获取公网IP

开发微信公众号需要有公网IP,用于方便调试。在开发阶段,可利用ngrok进行内网穿透。它能将本地IP映射为公网IP,且使用80端口。比如在本地开发项目时,借助此工具能让微信服务器访问本地项目。

使用ngrok时。需将Tomcat端口设为80。该设置不复杂。在Tomcat配置文件里修改即可。设置好后。能顺利把本地项目访问地址变为公网可访问的。为后续开发打基础。

微信公众号后台配置指南

运用工具类

开发时会涉及一些工具类。常用工具类里都有说明。大家直接复制来用就行。这些工具类是开发中总结出的常用代码。能帮我们提高开发效率。比如有的工具类可实现数据加密功能。有的能处理时间格式等。

微信公众号后台配置指南

直接用这些工具类,能防止我们重复做没必要的工作。但使用前,最好先知晓工具类的功能以及使用办法。如此一来,用起来会更顺手,开发过程也会更顺利。

配置微信后台

开发微信公众号,要进入微信公众号平台。需在平台配置url。这个url是与微信后台交互的重要路径。它也是开发重点。APPID和AppSecret会自动生成。开发时会用它们校验身份。其重要性如同我们的身份证。

配置url时。要保证它是微信向我们服务器发起Get请求的地址。并且公网能够访问。自定义的token。写代码时会用到。大家可按自身喜好设置。配置完成后。要仔细检查一次。不要留下错误。

编写校验代码

/*controller
     * 该方法与微信后台配置的url进行对接,是get的请求,是微信开发的第一步
     * 微信后台会给我们接口传入signature,timestamp,nonce,echostr
     * 进行sha1 加密与signature比较,TRUE 则返回echostr给微信
     * author:cys
     */
    @RequestMapping(value="/wxopen" ,method=RequestMethod.GET)
    public void wxopen(HttpServletResponse response,String signature,String timestamp,String nonce,String echostr) {
        
        
        PrintWriter writer=null;
     //微信检验逻辑处理,这里涉及到一些算法以及加密,不用去研究它,复制就行
if(WxOpenCheck.checkSignature(signature, timestamp, nonce)) { try { writer=response.getWriter(); writer.write(echostr); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(writer !=null) { writer.close(); } } } }

编写微信Get请求的后台校验代码是重要的一步。微信有自身的检验逻辑。这需要用到sha1加密工具类。直接Copy这个工具类就行。加密算法可保证数据传输的安全性。

代码编写完成后。在80端口运行。接着在微信后台配置写好的接口url。点击提交。若代码没有错误。便会成功。一旦提交成功。微信与我们的后台就打通了。后续就能开展更多功能开发。

后续开发展望

package com.wx.project.util;
import java.util.Arrays;
public class WxOpenCheck {
    
    //微信参数进行校验的逻辑
    public static boolean checkSignature(String signature,String timestamp,String nonce) {
        //后台自己定义的Token,开发者需要自己修改的地方
        String token ="chenyuesong";
        
        String arr[]= new String[] {token,timestamp,nonce};
        //排序
        Arrays.sort(arr);
        
        StringBuilder builder =new StringBuilder();
        for(int i=0;i<arr.length;i++) {
            builder.append(arr[i]);
        }
        
        //sha1 加密
        
        String sha1=SHA1.encode(builder.toString());
        
        return sha1.equals(signature);
    }
    
}

微信与我们的后台连通后,便可着手开发更多有趣功能。比如能开发自动回复功能,使公众号及时回应用户。也能开发自定义菜单,方便用户操作。开发时或许会碰到各类问题,不过别怕,多查阅资料,多向他人请教,总归能解决。

微信公众号发展空间大。企业推广品牌可借助它实现。个人打造自媒体也能借助它达成。大家得不断学习。还要不断探索。让自己的公众号有独特之处。

开发微信公众号时,大家遇到的最大难题是什么?要是觉得这篇文章有用,别忘了点赞,也别忘了分享。

package com.wx.project.util;
import java.security.MessageDigest;
/*
 * sha1 加密算法
 * 网上copy 一大堆
 */
public class SHA1 {
    
     
    private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
                           '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
 
    /**
     * Takes the raw bytes from the digest and formats them correct.
     *
     * @param bytes the raw bytes from the digest.
     * @return the formatted bytes.
     */
    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        // 把密文转换成十六进制的字符串形式
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }
 
    public static String encode(String str) {
        if (str == null) {
            return null;
        }
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            messageDigest.update(str.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

gongzhonghao 的头像

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

网站建设杨老师

1.5M Followers

关注“网站建设杨老师”,获取免费专业咨询服务,开启您的数字化之旅!