公众号接入

测试号接入

接口配置信息验证
在这里插入图片描述
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数有4个:signature、timestamp、nonce、echostr。

开发者通过检验signature对请求进行校验(下面有校验方式)。
若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败
加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

//加密/校验流程
//1)将token、timestamp、nonce三个参数进行字典序排序
String[] strs = new String[]{TOKEN,timestamp,nonce};
Arrays.sort(strs);

//2)将三个参数字符串拼接成一个字符串进行sha1加密
String str = strs[0] + strs[1] + strs[2];
String mysig = sha1(str);

System.out.println("mysig:"+mysig);
System.out.println("signature:"+signature);
//3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if(mysig.equals(signature)){
   return true;
}
//sha1加密
private String sha1(String str) {
   try {
       //获取加密对象
       MessageDigest md = MessageDigest.getInstance("sha1");
       //得到加密后的字节数组
       byte[] bytes = md.digest(str.getBytes());

       char[] chars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
       StringBuilder sb = new StringBuilder();
       for(byte b : bytes){
           //高四位转化16进制数
           sb.append(chars[(b>>4)&15]);
           //低四位转化为16进制数
           sb.append(chars[b&15]);
       }
       return sb.toString();
   } catch (NoSuchAlgorithmException e) {
       e.printStackTrace();
   }
   return null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值