微信公众平台接口开发记录(一)

一、注册微信公众平台账号

注册地址:https://mp.weixin.qq.com/cgi-bin/readtemplate?t=wxm2-realname-reg&lang=zh_CN

登陆地址:https://mp.weixin.qq.com/

二、开启开发模式,接口文件验证代码:

开发模式的验证过程其实就是将GET的参数echostr值返回,最简单的就是

php:

<?php
	echo $_GET['echostr'];
?>

asp:

<%
Response.Write(Request("echostr"))
%>

这里需要注意到的是,微信公众平台接口所使用的编码为UTF-8。这种方式与配置的TOKEN无关,即使你随便填写一个TOKEN值也可以成功验证。

完整的验证机制

公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:

参数描述
signature 微信加密签名
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

加入微信官方提供的验证机制后,验证代码如下:

	/* 方法:checkSignature
	*  参数:无
	*  作用:检测是否来自微信官方服务器 
	*/
	function checkSignature(){
		$signature = $_GET['signature']; //微信加密签名
		$timestamp = $_GET['timestamp']; //时间戳
		$nonce = $_GET['nonce']; //随机数
		$echostr = $_GET['echostr']; //随机字符串
		$token = TOKEN;
		$tempArr = array($token,$timestamp,$nonce);
		sort($tempArr);		
		if($signature == sha1(implode($tempArr))){
			echo $echostr;
		}else{
			exit();
		}
	}
posted @ 2013-10-25 10:51  六十七度老白干  阅读(577)  评论(0编辑  收藏  举报