文档章节

微信公众号开发教程01:接入指南

kolbe
 kolbe
发布于 2016/04/20 16:10
字数 685
阅读 249
收藏 3

要成为微信开发者,首先需要进入接入校验,微信相关的接入文档地址为:

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;

	/**
	 * 微信公众平台接入校验
	 */
	@Override
	public 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方法进行相应的逻辑处理






© 著作权归作者所有

kolbe
粉丝 118
博文 20
码字总数 21363
作品 0
成都
程序员
私信 提问
微信开发、开发模式接入

需求: 一个已经注册好的微信公众号。 登陆公众号过程中需要使用微信号扫描二维码验证登陆,并在绑定主题的微信号上点击确认才可在PC浏览器上登陆。 开发者文档: 开发--〉开发者工具--〉开发...

牧歌_MG
2016/04/30
18
0
Node.js 微信后台搭建系列 - 微信集成

Contents 1. 接入验证 2. 接收消息 3. 发送消息 终于基本到了最后的一步了。微信集成主要包含三个部分: 接入验证,让微信确认你的服务器,就是你公众号的拥有人。 接收微信给你服务器的消息...

鹄思乱想
2017/07/30
0
0
微信公众号开发者模式介绍及接入

Java公众号开发环境搭建 需要准备的东西: 一个微信公众号,参考:微信公众号申请及介绍 内网穿透工具,参考:使用natapp开启内网穿透之旅 数据交互 编辑模式和开发模式的关系: 编辑模式和开...

ZeroOne01
06/24
0
0
微信公众号开发遇到奇怪的问题

各位网友: 我们公司安排我们做微信公众号接口开发,就是由编辑模式进入开发模式,接入自己的服务器。所以我就去图书馆借了本书《微信公众平台搭建、开发与实践指南》照着搭建环境和敲代码,...

在我的歌声里
2017/02/04
181
1
微信开发框架(WTF)--Wechat Framework

Wechat Framework(微信开发框架,简称WTF)能帮助开发者快速搭建微信公众号开发环境,开发者在自己的微信公众号开发项目中引入本框架后,仅需简单的几步配置即可获得消息接收、解析、回复等...

老程序狗
2015/11/16
13.6K
10

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
1
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
4
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
3
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
17
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部