微信公众平台测试号注册及基本配置中服务器配置
测试号申请成功在取及配置中配置进行服务器配置就可以配置成功
进入测试号申请界面
-
进入开发者文档界面
-
进入申请测试号界面
-
申请测试号(请先阅读第五条)
3.1. 请输入外网可访问的地址
3.2. 请输入自定义的Token -
微信公众平台会根据用户提供的url和token进行验证,验证时会首先调用【开发人员】本地的验证逻辑,代码如下
<!-- BEGIN微信公众平台所需要用到的包 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.13</version>
</dependency>
<!-- END微信公众平台所需要用到的包 -->
/**
* @program: official-account
* @description: CheckUtil工具类
* @author: xmonster_大魔王
* @create: 2022-09-13 22:06
**/
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* 校验的工具类 微信使用
*/
@Component
public class CheckUtil {
private static final String token = "*****"; //这个token值要和服务器配置一致
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String[] arr = new String[]{token, timestamp, nonce};
// 排序
Arrays.sort(arr);
// 生成字符串
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
// sha1加密
String temp = getSHA1String(content.toString());
return temp.equals(signature); // 与微信传递过来的签名进行比较
}
private static String getSHA1String(String data) {
// 使用commons codec生成sha1字符串
return DigestUtils.shaHex(data);
}
}
import com.zehao.wechat.util.CheckUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description
* @Author zxl
* @Date 2023/2/3 8:50
**/
@RestController
@RequestMapping("token")
public class ToeknControler {
/**
* @Description: 微信用户token认证
* @param
* @return
* @version v1.0
* @author zxl
* @date
*/
@GetMapping("/getWechatToken")
public String getWechatToken(HttpServletRequest request, HttpServletResponse response,
@RequestParam("signature") String signature,
@RequestParam("timestamp") String timestamp,
@RequestParam("nonce") String nonce ,
@RequestParam("echostr") String echostr ){
System.out.println("进来了请求");
boolean b = CheckUtil.checkSignature(signature, timestamp, nonce);
return echostr;
}
}