这是示例主要用来获取公众号和用户进行视频信息传递时的解析方法php
<?php define("ToKEN", "weixin"); //定义一个常量 $wechatObj = new wechatCallbackapiTest(); //标准模版 if (isset($_GET['echostr'])) { //echo $_GET['echostr']; $wechatObj->valid(); } else { $wechatObj->responseMsg(); } class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; if ($this->checkSignature()) { echo $echoStr; exit; //输出一个消息而且退出当前脚本 } } //验证微信签名 private function checkSignature() { $signature = $_GET["signature"]; //微信加密签名 $timestamp = $_GET["timestamp"]; //时间戳 $nonce = $_GET["nonce"]; //随机数 $token = TOKEN; //微信token $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); //对数组进行排序 $tmpStr = implode($tmpArr); //将一个一维数组的值转化为字符串 $tmpStr = sha1($tmpStr); //计算字符串的 sha1 散列值 if ($tmpStr == $signature) { return true; } else { return false; } } //发送信息 public function responseMsg() { /** * 基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是同样的。可是若是post过来的数据不是PHP可以识别的, * 你能够用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,好比 text/xml 或者 soap 等等 */ $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)) { //检查一个变量是否为空 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; //发送方微信号 $toUsername = $postObj->ToUserName; // 开发者微信公众账号 $CreateTime = intval($postObj->CreateTime); //消息的建立时间,而且把这个时间转换成整数。 $formTime = date("Y-m-d H:i:s", $CreateTime); $MsgId = $postObj->MsgId; //消息内容的随机ID $MsgType = $postObj->MsgType; //消息类型 $MediaId = $postObj->MediaId; //视频消息媒体ID $ThumbMediaId = $postObj->ThumbMediaId; //视频信息缩略图的媒体ID。 //返回给微信服务器的模版 $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>"; $time = time(); $msg = "开发者id: " . $toUsername . "\n"; $msg .= "用户id: " . $fromUsername . "\n"; $msg .= "视频消息id: " . $MsgId . "\n"; $msg .= "视频消息类型: " . $MsgType . "\n"; $msg .= "视频消息媒体id :" . $MediaId . "\n"; $msg .= "视频消息缩略图媒体id :" . $ThumbMediaId . "\n"; $msg .= "视频信息发送过来的时间戳: " . $CreateTime . "\n"; $contentStr = $msg; $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } else { exit; } } } ?>