千家信息网

使用JAVA开发微信公众平台之环境搭建与开发接入的示例分析

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,小编给大家分享一下使用JAVA开发微信公众平台之环境搭建与开发接入的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2025年02月02日使用JAVA开发微信公众平台之环境搭建与开发接入的示例分析

小编给大家分享一下使用JAVA开发微信公众平台之环境搭建与开发接入的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、初始微信公众平台

微信公众平台,即我们平时所说的"公众号",曾用名"官方平台"、"媒体平台",但最终命名为"公众平台"。从微信的命名我可以发现,公众平台不只是官方、媒体使用的平台,而是对所有公众都开放的统一平台。

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

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


微信平台四大板块

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

1、订阅号和服务号均为传统意义的"公众号",具有消息群发能力,详细区别可在官方平台查看:http://kf.qq.com/faq/140806zARbmm140826M36RJF.html我们将注重于服务能力开发,而在服务方面,两者开发模式完全相同,只不过服务号可以使用更多的服务接口,而订阅号则是"阉割版"的服务号。因此,后续课程我们将使用服务号为案例进行操作。

2、微信小程序,原本为"微信应用号",即一个根植在微信生态系统内的APP。因苹果和谷歌的限制,"应用号"未上线便已夭折,取而代之的是适度阉割功能的"微信小程序",而其堪比原生APP的操作体验,也使得小程序成为时下大火的开发方向。而杰瑞教育全新的H5开发课程,也将加入时下火爆的微信小程序开发。

二、开发账号准备

1、账号注册

进入微信公众平台https://mp.weixin.qq.com,点击右上角立即注册,选择"服务号"或"订阅号"注册(服务号仅限机构用户注册,个人用户只能选择订阅号)

注册时需填写一系列信息,根据提示填写即可,此处不做赘述。

2、测试账号申请

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


测试账号界面

三、开发环境准备

1、外网映射工具

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

①必须能够用公网访问②必须使用80端口

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

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

① Ngrock:

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


ngrock操作

回车后等待一会,即可得到公网链接,下图所示阴影区域给出的链接,即可直接访问本机127.0.0.1:8080下的链接内容,分别是http协议和https协议对应的地址:


ngrock操作成功界面

②花生壳、nat123,均可安装软件后,在软件中操作,详情可查看百度经验:http://jingyan.baidu.com/article/363872ec361d3f6e4ba16ff9.html此处不做赘述

四、微信公众平台数据交互原理

搭建好公网访问地址后,我们自己开发的后台代码就可以放到公网地址了,那么用户是怎么样访问到我们的代码呢?

下面我们来看一下微信公众平台的数据交互原理:


从上图可以看到,微信公众平台实际只是起到一个桥梁作用,实际处理业务、提供服务的代码,依然是放在我们自己的服务器或者公网映射上面。

那么,我们就可以在我们自己的电脑(服务器)上面编写后台代码,并通过映射工具提供公网能够访问的URL,然后将此URL绑定到微信后台即可。

五、开发模式接入

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

1、填写服务器配置

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


微信平台服务器配置

其中:

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

Token:开发者自定的验证口令

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

2、验证消息是否有效

当我们点击提交时,微信服务器将会发送一个Get请求,到我们上述地址,同时传递四个参数:


微信服务器Get请求参数

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

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

六、开发接入后台代码

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


新建一个servlet

2、在servlet的doGet方法中,获取上述四个校验参数:


获取上述四个校验参数

3、编写工具类,进行校验方法的操作:


编写工具类

校验步骤,参考上述【五-2】三大步操作流程


校验步骤

使用sha1加密方法↓


sha1加密方法

4、 Servlet中调用校验方法,并验证结果,如果检验成功,将得到的随机字符串eahostr原路返回结果给微信平台:


Servlet中调用校验方法

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

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

我将直接将将代码放到公网服务器进行访问。获得如下地址

七、配置公众平台后台

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


微信后台配置相关信息

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

八、源码共享

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源码(可直接Copy其中的getSha1加密方法):
package com.jredu.util;import java.security.MessageDigest;import java.util.Arrays;public class CheckUtil {public static final String  tooken = "jredu100"; //开发者自行定义Tookenpublic static boolean checkSignature(String signature,String timestamp,String nonce){//1.定义数组存放tooken,timestamp,nonceString[] 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];}
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 exceptionreturn null;}}}

以上是"使用JAVA开发微信公众平台之环境搭建与开发接入的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

服务 平台 公众 开发 服务器 公网 地址 后台 代码 方法 配置 账号 加密 选择 接入 字符 字符串 工具 成功 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 物联网使用的社交网络技术 如何学好控制网络技术基础 对公会计业务软件开发小组 对接港交所数据库需要条件 数据库中创建表并设置主码和外码 微信pc聊天数据库文件怎么打开 竞价实例的服务器平台有哪些 反写提示没有数据库 凡式网络技术有限公司是干嘛的 列举一种数据库的增删查改的语句 数据库怎么创名 雨中冒险2怎么加入服务器游戏 服务器设置无线网 常州交友软件开发 蚌埠哪里有学软件开发的 县转数据库 IOS能不能用于服务器 hive数据库和表的操作 软件开发专业团队 数据库如何给表和行加锁 泰州智能软件开发系统 服务器上面安装模拟器 机器人挂机服务器 服务器管理员的职责 华为网络技术实验室 计算机网络技术需要学习英文吗 上海浩能网络技术有限公司 mysql数据库 程序员 双阳区通用网络技术咨询诚信服务 新华书店联合网信办宣传网络安全
0