(2)开发环境与微信后台的对接
2017-06-26 16:19
183 查看
参照微信开发文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
根据官网文档可知,整个微信开发总体有三个步骤,下面解析第一个步骤:配置微信服务器
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码。
第二步:验证消息的确来自微信服务器
4000
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
本过程的代码如下:
(1)核心业务类
(2)工具类--sha1加密方法直接在百度上搜的
验证URL有效性成功后即接入生效,成为开发者。你可以在公众平台网站中申请微信认证,认证成功后,将获得更多接口权限,满足更多业务需求。
成为开发者后,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。
根据官网文档可知,整个微信开发总体有三个步骤,下面解析第一个步骤:配置微信服务器
第一步:填写服务器配置
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码。
第二步:验证消息的确来自微信服务器
4000
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数 | 描述 |
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 |
(1)核心业务类
public class coreService extends HttpServlet{ private static final long serialVersionUID = 1L; /** * 验证是否是微信客户端发来的请求 */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); //开发者通过检验signature对请求进行校验(下面有校验方式)。 //若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效, //成为开发者成功,否则接入失败 PrintWriter out = resp.getWriter(); if (signUtil.checkSignatrue(signature,timestamp,nonce)) { out.print(echostr); } out.close(); out=null; } }
(2)工具类--sha1加密方法直接在百度上搜的
public class signUtil { public static final String token = "imooc"; public static boolean checkSignatrue(String signature, String timestamp, String nonce) { // 1)将token、timestamp、nonce三个参数进行字典序排序 String[] strings = new String[] { token, timestamp, nonce }; Arrays.sort(strings); // 2)将三个参数字符串拼接成一个字符串进行sha1加密 StringBuffer sb = new StringBuffer(); for (int i = 0; i < strings.length; i++) { sb.append(strings[i]); } // 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 String tmpStr = getSha1(sb.toString()); return tmpStr.equals(signature); } // Sha1签名 public static String getSha1(String str) { if (str == null || str.length() == 0) { return null; } char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char buf[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (Exception e) { return null; } } }
第三步:依据接口文档实现业务逻辑
验证URL有效性成功后即接入生效,成为开发者。你可以在公众平台网站中申请微信认证,认证成功后,将获得更多接口权限,满足更多业务需求。成为开发者后,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。
相关文章推荐
- 微信小程序,腾讯云node环境后台koa2开发框架(本地调试、接口、静态文件服务、文件长传服务)
- 微信会员卡对接CRM后台(java)
- 微信后台开发面试
- 微信平台开发环境nodejs+mongoDB搭建全过程
- 微信小程序开发之搭建腾讯云ubuntu开发环境PHP+MYSQL+APACHE2
- 微信小程序开发——1.环境搭建
- 微信开发——本地测试环境搭建
- 微信开发7--------------redirect_uri域名与后台配置不一致,错误码10003
- yii2.0 集成微信开发,解决微信与网站对接失败情况!
- linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))
- 一步一步教你玩微信跳一跳--二、windows下搭建python开发环境
- 微信平台开发之利用本地环境加新花生壳解释做测试环境
- JAVA做微信后台开发——微信接入验证
- 腾讯的微信小程序开发环境下常用快捷键汇总
- 注册下载和环境搭建--微信小程序开发
- 第三篇 微信开发 微信商城云服务器后台创建(转载自walkingmanc专栏)【转】
- Linux 搭建安卓后台开发环境--------Tomcat 和 NetBeans
- JAVA微信开发教程入门篇 -01 开发环境搭建
- 开发环境下登陆界面后台代码问题#ASP.NET类型
- 从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程