微信教程01:接入指南
来源:互联网 发布:情义我心知 廖伟雄 编辑:程序博客网 时间:2024/06/05 09:01
要成为微信开发者,首先需要进入接入校验,微信相关的接入文档地址为:
http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN
具体步骤如下:
一、填写服务器配置
1、申请微信公众号,并登陆:https://mp.weixin.qq.com/
2、填写相关的参数:点击左侧菜单栏中的【开发】中的【基本配置】
3、修改服务器配置:
1)填写URL:http://www.kolbe.cn/wechat/authenticate(注意需要使用80端口)
2)填写Token:wechat(这个token需要与程序中的token一致)
二、验证服务器地址的有效性
1、填完上述信息后,微信服务器会发送一个GET请求到:http://www.kolbe.cn/wechat/authenticate
2、该请求会带上四个参数:signature、timestamp、nonce、echostr
3、开发者对参数进行相应的处理后,与signature进行对比,如果相等,则直接输出echostr,代表接入成功,否则接入失败,具体逻辑如下:
1)将token(自定义的)、timestamp、nonce进行字典排序
2)将三个参数拼接着一个字符串
3)将拼接后的字符串进行SHA-1加密
4)将加密后的字符串与signature进行对比
4、具体实现代码如下(为了代码的简洁明了,暂时没使用任何框架):
package cn.kolbe.wechat.authenticate.controller;import java.io.IOException;import java.io.PrintWriter;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/authenticate")public class AuthenticateController extends HttpServlet {// token可自定义private static final String TOKEN = "wechat";private static final long serialVersionUID = 1L;/** * 微信公众平台接入校验 */@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();// 将token,timestamp,nonce三个参数进行字典排序String[] sourceArray = new String[]{TOKEN , request.getParameter("timestamp"), request.getParameter("nonce")};Arrays.sort(sourceArray);// 将三个参数字符串拼接成一个字符串StringBuilder sortArray = new StringBuilder();for(String s : sourceArray) {sortArray.append(s);}// 对拼接成功的字符串进行SHA-1加密String hexString = byteArrayToHex(sortArray.toString().getBytes());// 将加密过的字符串与signature对比if(hexString != null && hexString.equals(request.getParameter("signature"))) {// 如果相等则原样输出echostr,接入成功out.print(request.getParameter("echostr"));} else {// 如果不相等,则接入失败response.setContentType("text/html;charset=utf-8");out.println("校验失败");}out.close();}/** * 将字节数组加密后转化成十六进制字符串 * @param byteArray * @return */public String byteArrayToHex(byte[]byteArray) {try {MessageDigest md = MessageDigest.getInstance("SHA-1");md.update(byteArray);byte[] digest = md.digest();String s = new String();StringBuilder result = new StringBuilder();for(byte b : digest) {if((s = Integer.toHexString(b)).length() < 2) {s = 0 + s;}result.append(s);}return result.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}}
三、接入成功
1、如果顺利完成上面两步,并提示接入成功,此时代表已经成功接入微信
2、后续微信会将用户的消息通过Post发送到:http://www.kolbe.cn/wechat/authenticate,我们可以在AuthenticateController中的doPost方法进行相应的逻辑处理
- 微信教程01:接入指南
- 微信接入指南
- 微信支付接入指南
- 微信支付接入指南
- JAVA微信开发-新手接入指南
- 微信分享iOS接入指南
- JAVA微信开发-新手接入指南
- JAVA微信开发-新手接入指南
- 微信公众号开发接入指南
- 微信开发第一篇:接入指南
- 微信公众平台接入指南
- 微信接入指南——第一章
- JAVA微信开发-新手接入指南
- JAVA微信开发-新手接入指南
- 安卓开发-微信接入指南
- JAVA微信开发-新手接入指南
- 微信公众号接入指南
- 微信公众号开发-接入指南
- Java——枚举
- Topbeat --Metricbeat 在Windows上设置 centos kafka 打数据 成功
- 插件资源整理【申明:来源于网络】
- 【Java】为什么不推荐程序员去外包公司?
- Linux常用命令
- 微信教程01:接入指南
- 连到了自己的服务器就很满足
- 用卷积神经网络检测脸部关键点的教程(三)学习率,学习动量,dropout
- JAVA中String为final修饰类
- sql性能优化经验
- Dalvik虚拟机java方法执行流程和Method结构体分析
- 微信教程02:获取access_token
- 随手涂鸦
- Spring学习03--其他特性(减少配置、自动装配、scope作用域,延迟初始化)