专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 使用Java进行微信平台开发的教程

使用Java进行微信平台开发的教程

更新时间:2022-07-19 08:09:53 来源:动力节点 浏览1019次

1.最初微信公众平台

微信公众平台,即平时发现我们所说的“公众号”,曾用名“官方平台”、“媒体平台”,但被冠以“公众平台”。 媒体使用的平台,是对所有公众都开放的统一平台。

微信公众平台地址:https://mp.weixin.qq.com/

公众平台公分4大规划:我们的微信订阅号、服务号、企业号。按照2016年公开微信公开课,企业信号将与企业微信联合,因此主要针对前三部分开始讲解:

简单对比一下前三者的区别以及本次即课程的讲解重点:

(1)订阅号和服务号传统消息意义的“公众号”,具有群发能力,详细区别在官方平台查看:http : //kf.qq.com/faq/140806zARbmm140826M36RJF.html我们可以引用能力能力在服务方面,而同时开发模式,同时使用更多的服务号,可以使用更多的接口,而“号”的词是“割割服务号”的。案例进行操作。

(2)微小程序,原本为“微应用号”,在微生态系统中的应用苹果和谷歌的限制,“应用号”未上线便便,取而代之即是根信根植信根割的“2”微信小程序其堪比程序的运行体验,也“微杰瑞小而成为时下火的开发方向。而全新的H5 开发课程,也将参与时下火爆的信小程序开发。

2.开发账户准备

(1)账号注册

微公众平台“进入微信公众平台, 点击用户立即订阅”,点击“用户订阅号”,选择“服务号”选择机构注册,个人订阅号)

重新注册时需重新填写申报信息,根据提示可以,此处不做申报。

(2)测试账号申请

如果暂时不想注册账号无法注册服务号,官方或者提供的测试记录。地址: http ://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/ login后扫描二维码,即可获得一个测试账号,拥有全部权限。

3.开发环境准备

外网映射工具

微信公众平台在访问后台时,必须提供能够正确访问的外网地址,微信平台对后台URL的要求有两个点:

1)必须能够用公网访问

2)必须使用80端口访问

要两点,我们选择购买外网服务器,比如阿里云、百度实现、腾讯云……都是不错的选择。如果没有服务器选择使用外网映射工具,将我们的内网链接可以映射以上为公网,比较不错的映射软件有:花生壳、grok、nat123等……

这几款软件都可以百度很容易找到并下载,下面简单讲解一下用法:

进入dos环境,切换到ngrock所在的盘符,输入ngrock 8080回车:

回车后等待一会,自动得到公用链接,下图显示负载访问网直接提供的链接,自动本机127.0.0.1:8080下的链接内容,分别是http协议和https协议的地址:

4.微信公众平台数据原理

下面看看我们公众平台的数据微信:

从上图可以,微信公众平台实际处理的只是一个业务连接,或者实际的业务连接,实际提供的服务代码是看到我们自己的服务器网覆盖。就可以在我们自己的电脑(服务器)上编写后台代码,并通过授权工具提供到微信访问的网址,然后可以在我们的网站上绑定网址。

5.开发接入模式

下面将进入实际的开发过程,我们可以参考官方提供的开发文档: https ://mp.weixin.qq.com/wiki

(1)重新填写服务器配置

进入微信公众平台,点击左侧【开发——基本配置】,选择【服务器配置】。自动进入配置页面:

其中:

网址:即我们所说的后台服务器公网访问地址

Token:开发者自定的验证权限

EncodingAESKey:常用字符串,如果消息加解密采用安全模式才需验证方式

(2)验证消息是否有效

当点击提交的时候,微信到服务器发送一个获取请求,我们上面的地址,同时传递四个参数:

我们通过检验签名对请求进行内容开发(下面有类似的方式)。如果确认请求请求来自服务器,请原返回echostr参数,则生效,使者成功访问失败。加密/智能流程如下:

下面,我们实现代码操作。

6.开发接入后台代码

(1)使用MyEclipse创建Web项目,并新建一个servlet:

(2)在servlet doGet中,获取上述的正确参数方法:

(3)操作编写类,进行操作的方法:

五确定步骤,操作上面【2】三个参考步骤流程

使用sha1加密方法

(4)Servlet 中调用微校验方法,并验证结果,如果检验成功,将返回给你的常用字符串:eahostr原路给信平台

至此,Servlet及检查工具类,编写完成。

(5)启动Tomcat,将Servlet的本地地址(例如本机为:localhost:8080/WeiXin/servlet/WeiXinServlet 能够进行公网正确映射,参照上面第三个图形确定内容,进行公网映射,公网地址访问。

我将直接将代码中的杰瑞教育 公网服务器进行访问。获得地址:http : //www.jredu100.com/WeiXin/servlet/WeiXinServlet

7.公共配置平台后台

进入微信后台配置相关信息:

点击提交,微信将发送Servlet,调用doGet,并进行我们编写的验证操作,如果最后成功的方法字符串,则绑定成功。

8.源码共享

(1)Servlet源码(只保留doGet部分):

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
if(CheckUtil.checkSignature(signature, timestamp, nonce)){
//如果校验成功,将得到的随机字符串原路返回
out.print(echostr);
}
}

(2)CheckUtil源码(可直接复制其中的getSha1加密方法):

package com.jredu.util;
import java.security.MessageDigest;
import java.util.Arrays;
public class CheckUtil {
public static final String  tooken = "jredu100"; //开发者自行定义Tooken
public static boolean checkSignature(String signature,String timestamp,String nonce){
//1.定义数组存放tooken,timestamp,nonce
String[] arr = {tooken,timestamp,nonce};
//2.对数组进行排序
Arrays.sort(arr);
//3.生成字符串
StringBuffer sb = new StringBuffer();
for(String s : arr){
sb.append(s);
}
//4.sha1加密,网上均有现成代码
String temp = getSha1(sb.toString());
//5.将加密后的字符串,与微信传来的加密签名比较,返回结果
return temp.equals(signature);
}
public static String getSha1(String str){
        if(str==null||str.length()==0){
            return null;
        }
        char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
                'a','b','c','d','e','f'};
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(str.getBytes("UTF-8"));
            byte[] md = mdTemp.digest();
            int j = md.length;
            char buf[] = new char[j*2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];      
            }
            return new String(buf);
        } catch (Exception e) {
            // TODO: handle exception
            return null;
        }
    }
}

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>