您的位置:首页 > 移动开发 > 微信开发

微信公众号开发(一)微信验证开发者服务器接口

2017-12-31 15:31 435 查看

微信验证开发者服务器接口

微信验证开发者服务器接口

  • 如图所示,开发者可填写自己服务器的验证token的接口地址,以及自定义的token(博主申请的测试号,使用natapp来进行内网穿透)
  • 目的:帮助微信服务器和开发者服务器互相识别,以防恶意攻击
  • 流程图如下(不知道博客园怎么显示md流程图,有知道的仁兄告知):(取自微信公众平台技术文档)


st=>start: 开启服务ipop1=>inputoutput: 接收到数据【不确定是谁发来的】op1=>operation: 尝试提取出signature字段,timestamp字段,nonce字段,echostr字段cd1=>condition: 字段均提取成功?op2=>operation: token赋值为基本配置中的信息op3=>operation: token,timestamp,nonce字段排序得到字符串listop4=>operation: 哈希算法加密list得到hashcodecd2=>condition: hashcode == signature?op5=>operation: 确定该数据源是微信后台ipop2=>inputoutput: 把echostr返回给微信后台,供微信后台认证Tokened=>end: 继续其他服务op6=>operation: 确定该数据源不是微信后台ipop3=>inputoutput: 不处理st->ipop1->op1->cd1->op2->op3->op4->cd2->op5->ipop2->edcd1(yes)->op2cd1(no)->op6->ipop3->edcd2(yes)->op5cd2(no)->op6


  • java代码实现如下:
    @GetMapping("/getToken")@ResponseBodypublic String getToken(TokenDTO tokenDTO, HttpServletResponse response){if ((StringUtils.isBlank(tokenDTO.getSignature()) || StringUtils.isBlank(tokenDTO.getTimestamp()) || StringUtils.isBlank(tokenDTO.getNonce()) || StringUtils.isBlank(tokenDTO.getEchostr()))) {return "";}String[] arr = new String[]{tokenDTO.getTimestamp(), WeixinConstant.token, tokenDTO.getNonce()};Arrays.sort(arr);StringBuffer sb = new StringBuffer();sb.append(arr[0]).append(arr[1]).append(arr[2]);String hash = null;try {hash = new String(Hex.encodeHex(MessageDigest.getInstance("SHA-1").digest(sb.toString().getBytes(Constant.charset))));} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {e.printStackTrace();}return (StringUtils.isNoneBlank(hash) && hash.equals(tokenDTO.getSignature()))? tokenDTO.getEchostr() : "";}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐