在微信公众号后台保存服务器配置时,微信会实时发送get请求校验所填写的地址及token的正确性。
原样发回echostr才算校验通过。
其中SHA1类来源于: 微信demo
事件接收接口:
第一步:添加自定义菜单
第二步:配置好所有的菜单功能
第三步:配置服务器并且启用(启用后自定义菜单失效)
菜单失效提示
第四步:找到自定义菜单插件并【开启】即可。
注意:开启服务器配置后,自定义菜单不允许被修改。如需要修改自定义菜单就要关闭服务器配置,再重复上面的步骤即可。
在进行微信公众平台,开发配置时,出现一系列问题,在此记录,与网友共享:
1.服务器配置,需要填写url,但不知该如何填写,后经查阅,得知,所填url必须为可访问的接口,于是重新按网友提供的思路,整理接口如下,一共两个类文件:
package com.**.**.wxgzh.controller
import java.io.IOException
import javax.servlet.http.HttpServletRequest
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.bind.annotation.RestController
import com.jubao.dling.wxgzh.utils.CheckUtil
import io.swagger.annotations.Api
@RestController
@RequestMapping(value="/wxgzh")
@Api(description="微信公众号操作")
public class WeiXinController {
@RequestMapping(value="/getWxInform",method=RequestMethod.GET)
@ResponseBody
public String getWeiXinMethod(HttpServletRequest request) throws IOException{
String signature = request.getParameter("signature")
String timestamp = request.getParameter("timestamp")
String nonce = request.getParameter("nonce")
String echostr = request.getParameter("echostr")
if(CheckUtil.checkSignature(signature, timestamp, nonce)){
return echostr
}
return "error"
}
}
package com.**.**.wxgzh.utils
import java.security.MessageDigest
import java.util.Arrays
public class CheckUtil {
private static final String token = "yuliusa2018"
public static boolean checkSignature(String signature,String timestamp,String nonce){
String[] arr = new String[]{token,timestamp,nonce} //排序Arrays.sort(arr)
//生成字符串
StringBuffer content = new StringBuffer()
for(int i=0i>>4 &0xf]
buf[k++] = hexDigits[byte0 &0xf]
}
return new String(buf)
} catch (Exception e) {
return null
}
}
}
2.回到公众号平台,进行配置,注意token随便写,但必须和接口中定义的token保持一致
3.点击提交,出现【系统错误,请稍后重试】
对上错误进行排查,最终把端口号443去掉,然后在提交,居然又出现“请求URL超时”,如下:
查阅网上的各种方案都没解决,后看到有网友说可能是服务器配置低,于是换了台服务器,竟然提交成功了。
以上记录是自己开发过程中的问题总结,也希望能帮助他人。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)