您的位置:首页 > 移动开发 > 微信开发

1.PHP微信公众号开发之配置验证

2017-03-30 21:10 309 查看
   这是我在CSDN上发的第一篇博客,多多关照!

   由于前几年接触过微信公众号的开发,给我的印象是简单缺不失趣味,然后后面又去搞了JAVA WEB开发

,考虑到JAVA太重不太适合微信开发,所以选择了以高效易上手的PHP来进行微信的开发(几年前也是用的PHP  囧)

   随着移动互联网的发展,微信的地位也不需要我多做解释了。开发微信公众号能节省很多成本,而且拥有8亿的流量入口,相比起传统的Android和IOS平台的推广那也是大大的方便! 

  好了切入正题,今天带来的是微信公众号开发的配置验证,这是微信开发要做的第一步也是对微信开发认知很重要的一步。

1.进入微信公众号后台进入开发者模式将各项参数配置好

2.编写自己的验证代码

<?php
define('Token', 'weixin'); //定义Token 这里填自己在参数里配置的Token
$wechat_obj = new checkCallbackApi();
if(isset($_GET['echostr'])) //通过判断echostr是否是验证接口
{
$wechat_obj->valid(); //调用$wechat_obj实例的valid方法
}
else
{
echo '调用responseMsg方法';
$wechat_obj->responseMsg();//调用$wechat_obj实例的responsemsg方法
}
class checkCallbackApi
{
/*
配置环境输出echostr的function
*/
public function valid()
{
$echoStr = $_GET['echostr']; //通过GET方法获取echostr的值
if($this->checksSignature) //调用checkSignature方法验证signature
{
echo $echoStr; //输出echoStr
exit;
}
}
/*
校检signature的function
*/
private function checksSignature()
{
$signature = $_GET['signature']; //GET方式得到signature
$timestamp = $_GET['timestamp']; //GET方式得到timestamp(时间戳)
$nonce = $_GET['nonce']; //GET方式得到nonce

$token = Token;  //获得预定义的Token
$tmpArr = array($token,$timestamp,$nonce);  //获得$token,$timestamp,$nonce组成的数组
sort($tmpArr); //对数组按字母进行排序
$tmpArr = implode($tmpArr); //将tmpArr转换成字符串
$tmpArr = sha1($tmpArr); //对字符串进行sha1加密
//将sha1加密后的字符串与接收到的signature进行比对 相等则返回true
if($tmpArr == $signature)
return true;
else
return false;
}
/*
返回消息的function
*/
public function responseMsg()
{
$postStr = file_get_contents('php://input'); //取出POST数据
if(!empty($postStr))
{
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); //夹在POST数据中的XML
$FromUsername = $postObj->FromUsername; //获得FromUsername参数
$ToUsername = $postObj->ToUsername; //获得ToUsername参数
$keyword = trim($postObj->Content); //获得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';  //消息类型为text
$resultContent = 'Welcome to wechat!'; //返回的消息内容
$returnXMLString = sprintf($textTpl,$FromUsername,$ToUsername,$time,$msgType,$resultContent); //格式化字符串 %s
echo $returnXMLString; //输出返回的XML数据
}
else
{
echo 'responseMsg error!'; //输出错误消息
}

}

}

}

?>
3.将自己的代码上传至自己的服务器 也可以去申请新浪的sae或者阿里云的虚拟机主机 这些都是可以的

4.将部署完的代码填入微信公众平台的配置选项,提交通过就ok了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 PHP