本文描述了开发微信官方账号所需的准备工作,讲解了如何建设项目,如何实现账号的接口配置。
一、微信微信官方账号开发环境描述:
开发工具:Eclipse
JDK版本:JDK1.8
Servlet容器:Tomcat8.5
内网穿透工具:NATAPP
本教程基于Servlet要求响应,不使用相关框架,旨在解释微信公众号开发的相关流程。
二、微信微信官方账号开发账号接口配置
要进行公众号开发需要登录公众号开启开发模式,配置开发接口。本教程采用测试账号来进行开发,故登录测试账号,配置接口。
首先要配置的是响应微信服务请求。URL,用来确定这个微信官方账号的服务响应来源,一个token这个字段的内容值可以自行定义,这个字段在保存配置时会被定义token发送到微信平台后,微信平台会要求这个URL调用开发的微信服务,验证服务的可用性和合法性。URL以域名为代表的完整路径,如:http://rdzqcm.natappfree.cc/weixinService/weixin。因此,如果我们想成功配置,我们必须打开我们的服务,并且可以使用可用的域名,所以我们必须在配置前完成以下步骤。
微信公众号测试账号配置
三、基于微信微信官方账号Token验证过程
开发微信微信官方账号token验证流程图
四、构建微信微信官方账号后台服务工程
1、在Eclipse中新建一个WEB工程,名称:weixinService。
创建微信公众号后台服务程序
2、新建一个Servlet,用于响应微信服务器的请求。weixinServlet。
接口配置时,微信服务平台会调用我们的配置URL,并且是以get请求的方式,所以我们在weixinServlet的doGet()验证配置过程在方法中实现。
首先获取请求传输的相关参数,然后根据参数和配置token使用写好的hash算法得到hashcode,返回同传的signature对比结果。
WeixinServlet源代码如下:
public class WeixinServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException { //获取微信服务器的相关参数 String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); PrintWriter out = resp.getWriter()signature的方法,实现对token以及传入参数hash比较 算法后的结果if(CheckSignatureUtil.checkSignature(signature,timestamp,nonce)){ out.print(echostr); }}}CheckSignatureUtil源代码如下:
public class CheckSignatureUtil /定义微信接口token,同一微信账号页面配置token一个public static final String token = "bifengmiaozhuan";///实现回传参数hash,然后同回传参数signature比对 public static boolean checkSignature(String signature,String timestamp,String nonce){ ArrayList<String> list = new ArrayList<String>(); list.add(token); list.add(timestamp); list.add(nonce);///升序排列参数Collections.sort(list); StringBuilder content = new StringBuilder(); for(String str:list){ content.append(str);hash算法,对相关参数hash return signature.equals(HashUtil.hash(content.toString(),"SHA1")); }}HashUtil源代码如下:
public class HashUtil {/根据指定hash算法,输入的内容hash public static String hash(String content,String algorithm) { if (content.isEmpty() return ""; } MessageDigest hash = null; try { hash = MessageDigest.getInstance(algorithm); byte[] bytes = hash.digest(content.getBytes("UTF-8")); String result = ""; for (byte b : bytes) { String temp = Integer.toHexString(b & 0xff); if (temp.length() == 1) { temp = "0" temp; } result = temp; } return result; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; }}至此,整个依据token验证微信服务Servlet开发完程序。
3、配置Servlet
在工程的Web.xml中配置Servlet:
<!-- 配置校验signature的servlet 开始 --> <servlet> <servlet-name>weixinServlet</servlet-name> <servlet-class>weixinService.servlet.WeixinServlet</servlet-class> </servlet> <servlet- ** pping> <servlet-name>weixinServlet</servlet-name> <url-pattern>/weixin</url-pattern> </servlet- ** pping> <!-- 配置校验signature的servlet 开始 -->4、启动内网映射工具
进入cmd命令窗口切换到以前NATAPP参考安装好的目录NATAPP启动使用的相关命令NATAPP,命令:natapp -authtoken=按申请时分配的值填写。启动后如图所示:
基于natapp完成内网穿透
5、配置接口参数并验证
使用NATAPP域名开始后,结合我们项目的路径,配置界面参数并保存,成功后,页面弹出提示信息。
配置微信公众号测试号java后台服务
我们已经完成了整个接口参数的配置。验证后,我们可以调用其开放响应接口进一步开发。
关注我@码农wu免费获得更多的编程知识~
扫码咨询与免费使用