一、问题描述
在公众号后端填写完基本配置,点击保存,发现提示“系统发生错误,请稍后重试”。联系公众号客服回复,涉及开发内容不给支持-_-||
二、经多次百度,结合实际尝试,总结解决方案如下:
1. 问题发生的原因
在官方说明文档有这样一个说明:
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
只能怪自己没认真看文档。。。
2. 实现代码
说明:验证echostr请求会调GET请求,验证通过才能绑定成功;绑定成功后,回调的事件xml会调用相同url的POST请求传进来,所以我们需要2个接口来实现
@RequestMapping(value = "eventCall", method = RequestMethod.GET)
public void eventCallAuth(HttpServletRequest req, HttpServletResponse resp) {
log.info("进入验证微信公众号绑定");
try{
String signature = req.getParameter("signature");//签名
String timestamp = req.getParameter("timestamp");//时间戳
String nonce = req.getParameter("nonce");//随机数
String echostr = req.getParameter("echostr");//随机字符串用于初次绑定服务器原样返回
resp.getWriter().write(echostr);//用于直接返回
log.info("接口配置信息验证请求签名signature={},时间戳timestamp={},随机数nonce={},随机字符串echostr={}",signature,timestamp,nonce,echostr);
}catch (Exception e){
log.error("验证微信公众号绑定失败,",e);
}
}
@RequestMapping(value = "eventCall", method = RequestMethod.POST)
public String eventCall(HttpServletRequest req, @RequestBody(required = false)String bodyStr) {
log.info("bodyStr={}",bodyStr);
}
=====================================
这样代码部署后,即可绑定成功,同时能够正确接收到事件回调。