【微信开发】微信开发 之 开启开发模式(一)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【微信开发】微信开发 之 开启开发模式(一)

GitHub源码位置 :


-- HTTP : https://github.com/han1202012/WeChatVerify.git


-- SSH : git@github.com:han1202012/WeChatVerify.git




CSDN下载认证程序的war包和源码 : http://download.csdn.net/detail/han1202012/6999207




微信验证war包下载 :


-- 访问地址 : ip地址:80/WeChatVerify/verifyServlet ;


-- Token : 注意Token是 "hanshuliang" ;





一. 开启开发模式解析





1. 开发者文档



首先进入编辑模式, 将编辑模式关闭, 进入开发模式 :



image.png



点击查看文档, 就可以打开微信的开发者文档 : 路线 功能 -> 高级功能 -> 开发模式 -> 查看文档 ;

image.png





开发者文档目录结构说明 :


-- 新手接入 : 包括 接入指南 典型案例介绍 开发者规范, 讲解如何接入开发者模;


-- 基础支持 : 包括 获取access_token 全局返回码说明 接口频率限制说明 上传下载多媒体文件;


-- 接收消息 : 包括 验证消息真实性 接收普通消息 接收事件推送 接收语音识别结果;


-- 发送消息 : 包括 发送被动响应消息 发送客服消息;


-- 用户管理 : 包括 分组管理接口 获取用户基本信息 获取关注者列表 获取用户地理位置 网页授权用户基本信息 网页获取用户网络状态;


-- 自定义菜单 : 包括 自定义菜单创建接口 自定义菜单查询接口 自定义菜单删除接口 自定义菜单事件推送;


-- 推广支持 : 包括 生成带参数的二维码 ;


-- 微信 JS接口 : 包括 隐藏微信中网页右上角的按钮 隐藏微信中网页底部的导航栏 网页获取用户网络状态;


-- 开发者交流互助 : 包括 开发者问答系统 接口调试工具 接口体验测试号申请;






2. 开发者校验流程解析



(1)申请消息接口



点击开发模式 "成为开发者" 按钮之后, 会弹出协议 :


image.png




之后会弹出填写 URL 和 Token :


-- URL : 用来接收微信服务器数据的接口URL;


-- Token : 任意填写, 用于生成签名;

image.png





(2) 验证URL有效性

image.png






校验流程 : 程序必须能够处理HTTP GET请求, 并对请求者身份进行校验, 确保请求来自微信服务器;


-- 获取参数 : HTTP GET 会携带四个参数 signature timestamp nonce echostr;


-- 拼装参数 : 将排序后的三个参数按照字典顺序排成字符串;


-- 加密参数 : 将排序后的字符串进行sha1加密;


-- 返回结果 : 将加密后的字符串 与 signature 参数对比, 如果相等则说明请求来自微信服务器, 原样返回参数 echostr;






二. 开发校验程序





1. 要点解析



(1) 在servlet中获取四个参数



获取方法 : 在doGet()方法中, 直接调用request的getParameter("signature")方法, 即可获取signature参数;


-- 示例 :



//获取微信服务器发送给我们的四个参数
  String signature = req.getParameter("signature");
  String timestamp = req.getParameter("timestamp");
  String nonce = req.getParameter("nonce");
  String echostr = req.getParameter("echostr");



(2) 将参数按照字典顺序排序



排序方法 : 数组工具类 Arrays.sort()会自动将数组中的字符串按照字典循序排序;


-- 代码示例 :



//将token timestamp nonce 按照字典顺序排序
  String[] params = new String[]{token, timestamp, nonce};
  Arrays.sort(params);
  //将上面三个参数排序之后拼接成字符串
  StringBuffer buffer = new StringBuffer();
  for(int i = 0; i < params.length; i ++){
    buffer.append(params[i]);
  }



(3) sha1 加密



获取MessageDigest加密类 : 通过调用 MessageDigest.getInstance("SHA-1"), 即可获取sha1加密类;


-- 代码示例 :



 

//获取sha1加密对象
    MessageDigest digest = MessageDigest.getInstance("SHA-1");
    //将组合后的字符串使用sha1加密, 加密后获得一个byte数组
    byte[] byteDigest = digest.digest(buffer.toString().getBytes());


(4) byte数组转为字符串





byte转为char类型 :


-- 示例代码 :



/*
  * 将byte转为字符串
  */
  public static String byte2HexStr(byte b) {
  char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  char[] temp = new char[2];
  temp[0] = digit[(b >>> 4) & 0x0F];
  temp[1] = digit[b & 0x0F];
  String s = new String(temp);
  return s;
  }


byte数组转为字符串 : 需要调用上面的类;


-- 示例代码 :



/*
  * 将byte数组转为字符串
  */
  public static String byte2str(byte[] byteArray) {
  String str = "";
  for(int i = 0; i < byteArray.length; i ++){
    str += byte2HexStr(byteArray[i]);
  }
  return str;
  }

(5) 向微信服务器发送信息



发送信息 : 先获取输出流, 然后校验, 如果通过校验就向微信服务器发送信息;


-- 示例代码 :



//创建一个出处流, 用于向微信服务器发送数据
  PrintWriter out = resp.getWriter();
  //如果校验通过, 向微信服务器发送echostr参数
  if(VerifyUtils.checkSignature(signature, timestamp, nonce)){
    out.print(echostr);
  }
  //释放资源
  out.close();
  out = null;
目录
相关文章
|
7月前
|
前端开发 开发者
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
425 0
|
4月前
|
小程序 前端开发 API
微信小程序全栈开发中的多端适配与响应式布局是一种高效的开发模式。
探讨小程序全栈开发中的多端适配与响应式布局,旨在实现统一的用户体验。多端适配包括平台和设备适配,确保小程序能在不同环境稳定运行。响应式布局利用媒体查询和弹性布局技术,使界面适应各种屏幕尺寸。实践中需考虑兼容性、性能优化及用户体验,借助跨平台框架如Taro或uni-app可简化开发流程,提升效率。
65 1
|
4月前
|
小程序 开发者
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
这篇文章介绍了微信小程序的初始化过程,包括如何注册微信小程序账号、下载微信小程序开发者平台,并指导了新建小程序的详细步骤。
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
|
6月前
|
开发工具
云控微信开发SDK使用教程--手机微信朋友圈图片上传服务端
云控微信开发SDK使用教程--手机微信朋友圈图片上传服务端
|
6月前
|
小程序 JavaScript 索引
【微信开发】微信小程序多层wx:for嵌套的使用
【微信开发】微信小程序多层wx:for嵌套的使用
|
6月前
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
84 0
|
7月前
|
小程序 开发工具 开发者
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
410 1
|
7月前
|
小程序 开发者
【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
79 0
|
7月前
|
小程序 开发者 Windows
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
95 0
|
7月前
|
前端开发 开发者
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
93 0