微信接入指南

打开微信开发文档 开始开发-->接入指南:

--开发文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

分为三个步骤:

  1. 填写服务器配置
  2. 验证微信服务器返回的信息
  3. 接入成功后,实现业务逻辑

大致是在微信公众号后台配置一个服务器的URL地址时,微信服务器会通过这个地址发送四个参数过来,然后在自己的服务器上接收这四个参数并将其排序、加密后得到一个字符串,与微信服务器发来的字符串进行比较,确认该消息来自微信后,把一个随机字符串返回给微信服务器。

 

一、新建一个Dynamic Web Project工程,引入以下JAR包:

--JAR下载地址,链接: https://pan.baidu.com/s/1DAV9qEKpwvBcbP36hfbGqQ 提取码: q5kj 

二、编写一个接入验证的类,代码如下:

package com.wx.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.digest.DigestUtils;


/*
 * 访问该类的地址
 * 
 * 也可在web.xml里配置,配置如下:
 * <servlet>
  	<servlet-name>wxServlet</servlet-name>
  	<servlet-class>com.wx.servlet.WxServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>wxServlet</servlet-name>
	<url-pattern>/wxaccess.action</url-pattern>  	
  </servlet-mapping>
 *
 *访问地址,例如:127.0.0.1:8080/项目名/wxaccess.action
 * */
@WebServlet("/wxaccess.action")
public class WxServlet extends HttpServlet {
	//与微信公众号后台 - 基本配置 - 修改配置 里的令牌(Token)一致
	private static final String TOKEN = "ganzhk";
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//接收微信URL携带的四个参数signature,timestamp,nonce,echostr
		String signature = req.getParameter("signature");
		String timestamp = req.getParameter("timestamp");
		String nonce = req.getParameter("nonce");
		String echostr = req.getParameter("echostr");
		//将token、timestamp、nonce三个参数进行字典序排序
		String[] strArr = new String[]{TOKEN, timestamp, nonce};
		Arrays.sort(strArr);
		//合并这三个参数
		StringBuffer buffer = new StringBuffer();
		for (int i = 0; i < strArr.length; i++) 
			buffer.append(strArr[i]);
		//进行sha1加密
		String temp = DigestUtils.shaHex(buffer.toString());
		
		PrintWriter writer = resp.getWriter();
		//开发者获得加密后的字符串可与signature对比,验证该请求来源于微信
		if(temp.equals(signature))
			writer.print(echostr);
	}
}

将本地映射到外网。我使用的是natapp。natapp每次启动映射地址都会不同,如果需要固定的映射地址,可以使用ngrok。本文就使用natapp进行演示。

--关于NATAPP的教程:https://natapp.cn/article/natapp_newbie

三、注册并开通免费隧道后,在本地双击natapp.exe,输入 natapp –authtoken=后台的authtoken码

四、启动tomcat,并复制http://x6gnjy.natappfree.cc到浏览上。我们访问一下tomcat,看映射到外网是否成功。


五、可以访问,接着进入微信公众号后台(开发—基本配置—修改配置)

 

六、把这个地址http://x6gnjy.natappfree.cc/wxAccess/wxaccess.action 填写到URL中,Token则与代码里的TOKEN一致。点击提交,会提示接入成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值