<?php
/** * wechat php test * version 1 */ define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); //$wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option 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"]; //$FILE = "感谢您关注【金融知识平台】\n微信号:f_jinrong\n请回复序号:\n1. 天气查询\n2. 翻译查询\n3.小奴讲笑话\n4.快递查询\n5.在线点歌\n更多功能,敬请期待..."; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch($RX_TYPE) { case "text": $resultStr = $this->handleText($postObj); break; case "event": $resultStr = $this->handleEvent($postObj); break; default: $resultStr = "Unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }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; } } /* * 处理用户输入为“文本”的功能函数 */ public function handleText($postObj) { $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $msgType = "text"; $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 )) { /* * 用户状态数据库操作 */ //判断用户状态 include ‘mysql.php‘; $sql = "SELECT flag_id FROM user_flags WHERE from_user = ‘$fromUsername‘ LIMIT 0,1"; $result = _select_data($sql); while (!!$rows = mysql_fetch_array($result)) { $user_flag = $rows[flag_id]; } //判断用户存在的状态和新输入的状态 if(trim($keyword) <> $user_flag && is_numeric($keyword)) { $user_flag = ‘‘; $sql = "DELETE FROM user_flags WHERE from_user = ‘$fromUsername‘"; _delete_data($sql); } /* * 判断用户状态,当用户状态为空时 */ if (empty($user_flag)) { switch ($keyword) { case 1: //查询天气 $sql = "insert into user_flags(from_user,flag_id) values(‘$fromUsername‘,‘1‘)"; $contentStr = "请输入要查询天气的城市:如北京、上海、苏州"; break; case 2: //翻译 $sql = "insert into user_flags(from_user,flag_id) values(‘$fromUsername‘,‘2‘)"; $contentStr = "请输入要翻译的内容:如:早上好、good morning、おはよう"; break; case 3: $sql = "insert into user_flags(from_user,flag_id) values(‘$fromUsername‘,‘3‘)"; $contentStr = "请输入\"笑话\"小奴给你讲笑话听听"; break; case 4: $sql = "insert into user_flags(from_user,flag_id) values(‘$fromUsername‘,‘4‘)"; $contentStr = ‘输入格式例如为【申通.快递单号】,例如:申通.768422403144‘; break; case 5: $sql = "insert into user_flags(from_user,flag_id) values(‘$fromUsername‘,‘5‘)"; $contentStr = ‘请输入您想听的歌曲名,如:【突然好想你】‘