一、内网穿透
微信公众号开发过程中需要与微信服务器进行连通,所以需要一台服务器,这里我使用了花生壳进行测试开发,也可以使用ngrok进行内网穿透。
二、接入准备
1、因为本身的个人微信公众号有很多限制,所以我们使用测试号进行开发。
2、连接测试号配置
验证地址为:内网穿透地址/验证方法名
其中check为我的验证方法
/**
* 用来接收微信验证以及返回响应的类
*/
@RestController
public class WXConnectController {
/**
* 接收微信发过来的信息
* 并且根据要求进行验证后返回
* @return
*/
@GetMapping("/check")
public String checkWX(){
System.out.println("接收到请求");
return null;
}
}
进行初步连通测试:
进入测试号页面点击提交可以看到如下报错“配置失败”,这是因为并未处理token等内容,再看程序控制台打印可以看到打印信息,说明配置成功。
3、请求参数处理
阅读微信开发文档可以看到,接收到微信发过来的请求的时候会携带一些参数,需要按照要求处理这些参数,并进行返回。
核心代码:
/**
* 接收微信发过来的信息
* 并且根据要求进行验证后返回
* @return
*/
@GetMapping("/check")
public String checkWX(HttpServletRequest request, HttpServletResponse response) throws IOException {
//微信加密签名
String signature = request.getParameter("signature");
//时间戳
String timestamp = request.getParameter("timestamp");
//随机数
String nonce = request.getParameter("nonce");
//随机字符串
String echostr = request.getParameter("echostr");
//校验请求
if (CheckUtil.checkAccess(signature,timestamp,nonce)){
System.out.println("接入成功");
return echostr;
}
return null;
}
点击提交可以看到:
说明验证签名成功。
由于本人也在学习过程中,部分代码暂时并未公开,可以进行私信、评论,我会共享我的代码一起交流学习。
第二部分:用户信息交互