当前位置:首页 > PHP教程 > php高级应用 > 列表

微信开发Token验证失败或请求URL超时问题解决办法

发布:smiling 来源: PHP粉丝网  添加日期:2016-08-25 14:44:46 浏览: 评论:0 

微信开发最近要用到的一个功能,其实就是一个非常的简单的用户输入然后自动搜索数据库并进行一个数据回复了,这个与官方没多大的问题,但小编就微信Token验证失败折腾了许多,下面解决了给各位分析一下.

1.Token验证失败

这个就是要检查配置文件了,最基本的就是

define("TOKEN", "weixin");  weixin 是你的微信开发后台的ID

微信开发Token验证失败或请求URL超时问题解决办法

2.请求URL超时

这个没什么办法多提交几次了,这个还有就是服务器安装了安全狗之类的软件把微信IP给拦截了,可以检查一下。

3.官方下载一个wechatCallbackapiTest类然后进行一下操作即可,代码如下:

  1. define("TOKEN", "weixin"); 
  2. $wechatObj = new wechatCallbackapiTest(); 
  3. if (isset($_GET['echostr'])) { 
  4.     $wechatObj->valid(); 
  5. }else{ 
  6.     $wechatObj->responseMsg(); 
  7. } 

wechatCallbackapiTest类就代码如下:

  1. class wechatCallbackapiTest 
  2. { 
  3.     public function valid() 
  4.     { 
  5.         $echoStr = $_GET["echostr"]; 
  6.         if($this->checkSignature()){ 
  7.             echo $echoStr; 
  8.             exit; 
  9.         } 
  10.     } 
  11.     private function checkSignature() 
  12.     { 
  13.         $signature = $_GET["signature"]; 
  14.         $timestamp = $_GET["timestamp"]; 
  15.         $nonce = $_GET["nonce"]; 
  16.         $token = TOKEN; 
  17.         $tmpArr = array($token, $timestamp, $nonce); 
  18.         sort($tmpArr); 
  19.         $tmpStr = implode( $tmpArr ); 
  20.         $tmpStr = sha1( $tmpStr ); 
  21.         if( $tmpStr == $signature ){ 
  22.             return true; 
  23.         }else{ 
  24.             return false; 
  25.         } 
  26.     } 
  27.     public function responseMsg() 
  28.     { 
  29.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  30.         if (!emptyempty($postStr)){ 
  31.             $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 
  32.             $fromUsername = $postObj->FromUserName; 
  33.             $toUsername = $postObj->ToUserName; 
  34.             $keyword = trim($postObj->Content); 
  35.             $time = time(); 
  36.             $textTpl = "<xml> 
  37.                         <ToUserName><![CDATA[%s]]></ToUserName> 
  38.                         <FromUserName><![CDATA[%s]]></FromUserName> 
  39.                         <CreateTime>%s</CreateTime> 
  40.                         <MsgType><![CDATA[%s]]></MsgType> 
  41.                         <Content><![CDATA[%s]]></Content> 
  42.                         <FuncFlag>0</FuncFlag> 
  43.                         </xml>"; 
  44.             if($keyword != " " || !emptyempty( $keyword ) ) 
  45.             { 
  46.     msgType = "text"; 
  47.     //$contentStr .= date("Y-m-d H:i:s",time()); 
  48.     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); //phpfensi.com 
  49.     echo $resultStr; 
  50.             } 
  51.         }else{ 
  52.             echo ""; 
  53.             exit; 
  54.         } 
  55.     } 
  56. } 

Tags: Token验证失败 URL超时

分享到: