1. 登录微信公众平台
- 对于自学者,可以申请公众号测试账号,地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 注册账号
- 对于企业开发者,可以直接用公司微信公众号登录微信公众平台,地址:https://mp.weixin.qq.com/
- 登录后,在导航栏最底部找到开发—基本配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061311030391.png)
填写服务器相关配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613112058560.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzM1ODA1MA==,size_16,color_FFFFFF,t_70)
2.后台token验证接口
@RestController
public class WeChatController extends AbstractControllerObject{
private Logger logger = LoggerFactory.getLogger(WeChatController.class);
private static final String TOKEN = "sjyx";
@GetMapping(value = "/checkToken",produces = "text/html;charset=utf-8")
public String checkToken(@RequestParam("signature") String signature,@RequestParam("timestamp") String timestamp,
@RequestParam("nonce") String nonce,@RequestParam("echostr") String echostr) {
String[] arr = {TOKEN, timestamp, nonce};
Arrays.sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String temp = null;
try {
md = MessageDigest.getInstance("SHA-1");
byte[] digest = md.digest(content.toString().getBytes());
temp = byteToStr(digest);
logger.info("加密后的token:"+temp);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
if ((temp.toLowerCase()).equals(signature)){
return echostr;
}
return null;
}
private static String byteToStr(byte[] byteArray){
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}
private static String byteToHexStr(byte mByte){
char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4)& 0X0F];
tempArr[1] = Digit[mByte & 0X0F];
String s = new String(tempArr);
return s;
}
}
- 后台接口写好以后,启动项目,点击提交,如果提示token验证成功,说明已经成功了,如果失败,查看代码是否正确,配置信息是否正确,多提交几次看看。