您现在的位置是:网站首页 > 脚本编程>
微信公众平台开发(二)代码分析
一、简介
微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下。
二、代码获取
微信官网:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip
三、代码分析
<?php
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
四、整体解析
官方的原始代码大致分为四部分
1.自定义token
2.声明一个类
3.实例化类
4.调用valid()
自定义token是为了和官方微信公众平台进行通信,进行交互安全认证。
五、类中三个方法的作用
class wechatCallbackapiTest
{
//用于申请 成为开发者 时向微信发送验证信息。
public function valid()
{}
处理并回复用户发送过来的消息,也是用的最多的一个函数,几乎所有的功能都在这里实现。
public function responseMsg()
{}
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请求原样返回echostr参数内容,则接入生效,否则接入失败
private function checkSignature()
{}
}
加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
如书写有误请指证,联系QQ:826782664 添加请说明原因
打赏本站,你说多少就多少

本文地址:https://www.qi522.com/view/62.html
来 源:千奇博客
上一篇:微信公众平台开发(一)平台注册
下一篇:递归实现无限级遍历文件夹
精彩评论
点击排行
- 1 thinkphp实现无限分类代码
- 2 jquery+php+mysql+flash实现转盘抽奖
- 3 thinkphp+phpexcel实现导出excel文件到本地
- 4 Thinkphp 基于角色的访问控制(rbac)
- 5 留言寄语
- 6 关于博客
- 7 thinkphp实现数据库备份
- 8 thinkphp+phpexcel实现导入excel并添加到数据库
- 9 window2003服务器安装安全狗在外部无法用ip+端口访问网站的解决方法
- 10 thinkphp 实现在线聊天功能

微信关注

Copyright © 2013-2019 千奇博客 保留所有权利 辽ICP备13008238号