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


Posted in PHP onSeptember 23, 2016

本文实例分析了php版微信开发Token验证失败或请求URL超时问题的解决方法。分享给大家供大家参考,具体如下:

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

1.Token验证失败

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

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

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

2.请求URL超时

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

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

define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
  $wechatObj->valid();
}else{
  $wechatObj->responseMsg();
}

wechatCallbackapiTest类就代码如下:

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;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ){
      return true;
    }else{
      return false;
    }
  }
  public function responseMsg()
  {
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    if (!emptyempty($postStr)){
      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
      $fromUsername = $postObj->FromUserName;
      $toUsername = $postObj->ToUserName;
      $keyword = trim($postObj->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($keyword != " " || !emptyempty( $keyword ) )
      {
  msgType = "text";
  //$contentStr .= date("Y-m-d H:i:s",time());
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  echo $resultStr;
      }
    }else{
      echo "";
      exit;
    }
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
《PHP边学边教》(01.开篇――准备工作)
Dec 13 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP基本语法总结
Sep 06 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
PHP实现简单计算器小程序
Aug 28 PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 #PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 #PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 #PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 #PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 #PHP
php利用递归实现删除文件目录的方法
Sep 23 #PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 #PHP
You might like
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
python中的lambda表达式用法详解
2016/06/22 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
初中生学习的自我评价
2013/11/14 职场文书
大学班级计划书
2014/04/29 职场文书
Oracle笔记
2021/04/05 Oracle
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
Redis入门教程详解
2021/08/30 Redis
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers