开发者接入指南

开发者申请流程
成为公众平台开发者,要完成以下申请流程
1、注册开通公众帐号:注册方法:在Web Portal首页点击注册,按注册流程提供相应的手机号及其他注册认证资料。通过人工审核后即可开通公众帐号。
2、准备接口URL:开发者需要提供URL作为数据接收交互的接口地址。
3、申请开发者模式:登录公众平台,点击左侧导航栏 【其他】-【开发者中心】,打开页面顶部开发者模式按钮,填写URL和Token。
4、验证URL有效性:开发者提交信息后,公众平台服务器将发送GET请求到填写的URL上,开发者通过检验signature对请求进行校验。若确认此次GET请求来自公众平台服务器,开发者需原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
5、分配开发者AppID和AppSecret:URL校验通过后,系统自动为开发者分配AppID和AppSecret。开发者模式启用成功。
6、依据接口文档实现业务逻辑:验证URL有效性成功后即接入生效,成为开发者。此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到飞信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。全局返回码说明
开发者信息说明
开发者信息包括以下内容
开发者ID:即AppID,系统自动分配给开发者的ID
开发者密钥:即AppSecret,系统分配给开发者的随机密钥
URL:由开发者填写生成,URL是开发者用来接收公众平台服务器数据的接口URL,所提供的URL地址必须可访问,且响应时间需在5秒以内。提交信息时,平台会校验URL地址的有效性。需http开头,仅支持80端口
Token:由开发者填写生成,可由开发者任意填写3-32位字母数字组成的字符串,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。
开发者模式启用成功后,编辑模式自动关闭,不支持通过Web Portal进行消息收发的功能。公众帐号用户可申请恢复编辑模式。
开发者帐号AppID是开发者的唯一标识,开发者帐号与公众帐号一一对应。AppID和开发者后台填写的token将作为接口调用的基本凭证。
验证服务器地址的有效性
开发者提交信息后,公众平台服务器将发送GET请求到填写的URL上,GET请求携带四个参数:
参数说明
Signature加密签名,Signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
Timestamp时间戳
nonce随机数
echostr随机字符串
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自公众平台服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
加密/校验流程如下:
1、将token、timestamp、nonce三个参数进行字典序排序
2、将三个参数字符串拼接成一个字符串进行sha1加密
3、开发者获得加密后的字符串可与signature对比,标识该请求来源于公众平台
检验signature的PHP示例代码:下载
private function checkSignature()
{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
	$token = TOKEN;
	$tmpArr = array($token, $timestamp, $nonce);
	sort($tmpArr, SORT_STRING);
	$tmpStr = implode( $tmpArr );
	$tmpStr = sha1( $tmpStr );
	
	if( $tmpStr == $signature ){
		return true;
	}else{
		return false;
	}
}

开发者原理说明
验证URL有效性成功后即接入生效,成为开发者。
此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,响应URL将得到推送。
公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。
用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户ID加密后的结果,每个用户对每个公众号有一个唯一的OpenID。
公众平台只支持80接口