标签:类型 username xmpp 标识 php sig array imp use
<?php
// *
// * 1)将token、timestamp、nonce三个参数进行字典序排序
// * 2)将三个参数字符串拼接成一个字符串进行sha1加密
// * 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
//微信发来的参数
// signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
// timestamp 时间戳
// nonce 随机数
// echostr 随机字符串
//微信服务get的方式,请求这个文件
$token = ‘rain8023smile‘;
$signature = $_GET[‘signature‘];
$nonce = $_GET[‘nonce‘];
$timestamp = $_GET[‘timestamp‘];
$echostr = $_GET[‘echostr‘];
$array = [$nonce,$token,$timestamp];
//1.数组字典排序
sort($array);
//2.拼接成字符串并sha1加密
$str = sha1(implode($array));
//3.对比
if ($str == $signature && $echostr) {
//第一次接入微信,配置完成
echo $echostr;
exit();
}else{
//第一次之外的,微信发过来的消息
//微信发来的消息是xml的格式(IM xmpp协议-xml数据)
//接收xml格式的数据
//1.获取xml数据
$postXml = $GLOBALS[‘HTTP_RAW_POST_DATA‘];
// <xml>
// <ToUserName><![CDATA[toUser]]></ToUserName>
// <FromUserName><![CDATA[fromUser]]></FromUserName>
// <CreateTime>1348831860</CreateTime>
// <MsgType><![CDATA[text]]></MsgType>
// <Content><![CDATA[this is a test]]></Content>
// <MsgId>1234567890123456</MsgId>
// </xml>
//2.处理数据
//xml转换成PHP对象
$postObj=simplexml_load_string($postXml);
if ($postObj->MsgType == ‘text‘) {
//文本类型的数据
if ($postObj->Content == ‘1‘) {
//回复
$content = $postObj->Content;
$timestamp = time();
$rMsg ="<xml>
<ToUserName><![CDATA[{$postObj->FromUserName}]]></ToUserName>
<FromUserName><![CDATA[{$postObj->ToUserName}]]></FromUserName>
<CreateTime>{$timestamp}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{$content}]]></Content>
</xml>";
echo $rMsg;
}
}
}
?>
标签:类型 username xmpp 标识 php sig array imp use
原文地址:http://www.cnblogs.com/dashamao/p/7792508.html