微信开发者中心
启用微信公众平台开发者中心需要拥有自己的服务器资源,用于存放自己开发的程序文件。服务器可以是一个虚拟空间,也可以是云主机或云空间,只要这个空间支持程序的运行并且有域名或者拥有可有效访问的IP。在完成开发后,开发者需要把程序上传到服务器,这样才能被微信服务器访问到。
用户可以在新网、万网、新浪SAE云计算平台等互联网应用服务提供商处申请免费域名、空间或购买收费域名、空间使用。
新浪SAE应用
申请新浪云账号
创建新浪云应用
创建应用版本
上传微信接口代码
申请SAE中级认证
微信开发者中心
接入微信公众平台进行开发,需要启用服务器、填写服务器配置信息、验证服务器地址的有效性,之后即可根据接口文档实现具体业务逻辑的开发工作。
配置和启用服务器
第1步:登录微信公众平台(网址是https://www.mp.weixin.com),在左侧列表中最下方找到”开发”项,单击下面的”基本配置”项,之后右侧出现新的内容,单击下面的”成为开发者”按钮
第2步:单击”修改配置”按钮
单击”修改配置”按钮后,进入配置页面
第3步:填写配置信息,填写完毕后,单击”提交”按钮,进行验证
第4步:在弹出的提示框中,单击”确定”按钮
第5步:生成AppSecret
第6步:单击右下角”启用”按钮,启动服务器配置
如果单击”确定”按钮后,页面顶端提示”token”验证失败,可以重试几次,有时微信服务器不稳定会造成这种情况,并不是程序本身有问题。
单击”确定”按钮,确认启用服务器配置
启用服务器配置成功后的页面
消息体加解密实现
公众号消息加解密是公众平台为了进一步加强公众号安全保障,提供的新机制。开发者需注意,公众账号主动调用API的情况将不受影响。只有被动回复用户的消息时,才需要进行消息加解密。
启用加解密功能(即选择兼容模式或安全模式)后,公众平台服务器在向公众账号服务器配置地址(可在”开发者中心”修改)推送消息时,URL将新增加两个参数(加密类型和消息体签名),并以此来体现新功能,加密算法采用AES。
为了配合消息加密功能的上线,并帮助开发者适配新特性,公众平台提供了3种加解密的模式供开发者选择,即明文模式、兼容模式、安全模式(可在”开发者中心”选择相应模式),选择兼容模式和安全模式前,需在开发者中心填写消息加解密密钥EncodingAESKey。
· 明文模式:维持现有模式,没有适配加解密新特性,消息体明文收发,默认设置为明文模式
· 兼容模式:公众平台发送消息内容将同时包括明文和密文,消息包长度增加到原来的3倍左右;公众号回复明文或密文均可,不影响现有消息收发;开发者可在此模式下进行调试
· 安全模式(推荐):公众平台发送消息体的内容只含有密文,公众账号回复的消息体也为密文,建议开发者在调试成功后使用此模式收发消息
配置失败常见问题与分析
请求URL超时
这种情况一般是由于公众号服务器网速或响应速度慢,可以先重试几次或者过一段时间后再试,如果还是这样,则需要考虑更换速度更快、性能更好的服务器。
系统发生错误,请稍后重试
这种情况一般是由于微信服务器短时间内异常引起的,重试或者过一段时间尝试即可。
Token验证失败
这种情况需要具体分析验证过程被卡在哪一个环节了,可以通过调用$_SERVER来获取服务器和执行环境信息来分析。
这里需要使用以下两个元素:
· $_SERVER[‘REMOTE_ADDR’]
来访者的IP,此处为微信服务器的IP
· $_SERVER[‘QUERY_STRING’]
查询请求字符串,此处为微信服务器发过来的GET请求字符串
将以上两个变量记录到日志中,函数定义如下:
function traceHttp(){
$content=date(‘Y-m-d H:i:s’).”nREMOTE_ADDR:”.$_SERVER[‘REMOTE_ADDR’].”nQUERY_STRING:”.$_SERVER[‘QUERY_STRING’].”nn”;
$max_size=100000;
$log_filename=’log.xml’;
if(file_exists($log_filename) and (abs(filesize($log_filename))>$max_size)){
unlink($log_filename);
}
file_put_contents($log_filename,$content,FILE_APPEND);
}
上面的代码,在具有读写权限的空间下,使用file_put_contents()函数把字符串写到文件中。
然后在程序的数据处理之前调用该函数,记录信息,代码如下:
define(‘TOKEN’,’weixin’);
traceHttp();
$wechatObj=new wechatCallbackapiTest();
if(isset($_GET[‘echostr’])){
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
当我们提交URL和Token验证的时候,程序目录下应当生成一个log.xml文件,内容类似如下:
2014-5-9 11:09:27
REMOTE_ADDR:101.226.61.144
QUERY_STRING:signature=6e35c6f3d3279338781047dbffd09426b9ecdee3&echostr=5979420653038092664×tamp=1392001400&nonce=1392192345
消息交互原理分析
从用户发送交互请求,到公众号的接收与回应,中间会经过微信服务器的处理,并最终将返回的内容送至客户端,整个消息的交互过程见下图:
具体的消息交互过程如下:
1 当普通用户向公众号发消息时,用户发送的消息首先会被发送到微信服务器上。
2 微信服务器将用户消息封装为XML数据包,然后将封装后的消息通过POST请求方式发送到公众号填写的URL所对应的服务器上。
3 公众号服务器接收到用户消息后进行处理,处理完消息后,将需要回复的消息封装为微信公众平台指定的XML数据包,将POST请求结果返回给微信服务器。
4 微信公众平台接收到POST请求结果后,再将公众号回复消息进行处理,并最终将回复内容返回给普通微信用户。
整个消息交互过程为一次完整的POST请求,如果微信服务器在5秒内收不到POST请求的响应就会断掉连接,并重新发起请求,总共重试三次。如果重试三次仍未得到公众号服务器的回复,微信服务器则会丢掉该普通用户发送的消息。因此,程序需要保证在5秒内回复POST请求给微信服务器。
微信开发调试工具
接口调试工具
微信公众平台提供了在线接口调试工具,网址为 。
该工具可以帮助开发者检测调用微信公众平台开发者API时发送的请求参数是否正确,提交相关信息后可获得服务器的验证结果。
接口调试工具使用步骤
第1步:选择合适的接口
在接口类型和接口列表的下拉菜单中选择要调试的接口
第2步:系统会生成该接口的参数表,您可以直接在文本框内填入对应的参数值。(红色星号表示该字段必填)
第3步:点击检查问题按钮,即可得到相应的调试信息。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。