微信开发之微信公众平台基本配置--服务器token验证(Java实现)

1. 登录微信公众平台

  • 对于自学者,可以申请公众号测试账号,地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 注册账号
  • 对于企业开发者,可以直接用公司微信公众号登录微信公众平台,地址:https://mp.weixin.qq.com/
  • 登录后,在导航栏最底部找到开发—基本配置
    微信开发之微信公众平台基本配置--服务器token验证(Java实现)_第1张图片
  • 填写服务器相关配置
    微信开发之微信公众平台基本配置--服务器token验证(Java实现)_第2张图片

2.后台token验证接口

  • 直接上代码
@RestController
public class WeChatController extends AbstractControllerObject{
    private Logger logger = LoggerFactory.getLogger(WeChatController.class);
    private static final String TOKEN = "sjyx";

    /**
     * 微信验证token
     * @param signature
     * @param timestamp
     * @param nonce
     * @param echostr
     * @return
     */
    @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]);
        }

        //sha1Hex 加密
        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验证成功,说明已经成功了,如果失败,查看代码是否正确,配置信息是否正确,多提交几次看看。

你可能感兴趣的:(微信网页开发)