验证token、回复图文\文本、推送消息的实用微信类php代码


Posted in PHP onJune 28, 2016

本文实例为大家分享了用于验证token,回复图文、文本,向用户推送消息等功能的微信类,具体代码如下

<?php
class Wechat{
  private $data = array();
  public function __construct($token){
    $this -> auth($token, $wxuser) || exit;
    if(IS_GET){
      echo($_GET['echostr']);
      exit;
    }else{
      $xml = file_get_contents("php://input");
  
      $xml = new SimpleXMLElement($xml);
  //file_put_contents('/var/log/test.txt', $xml,FILE_APPEND);
      $xml || exit;
      foreach ($xml as $key => $value){
        $this -> data[$key] = strval($value);
      }
    }
  }
  public function request(){
    return $this -> data;
  }
  public function response($content, $type = 'text', $flag = 0){
    $this -> data = array('ToUserName' => $this -> data['FromUserName'], 'FromUserName' => $this -> data['ToUserName'], 'CreateTime' => NOW_TIME, 'MsgType' => $type);
    $this -> $type($content);
    $this -> data['FuncFlag'] = $flag;
    $xml = new SimpleXMLElement('<xml></xml>');
    $this -> data2xml($xml, $this -> data);
    exit($xml -> asXML());
  }
  private function text($content){
    $this -> data['Content'] = $content;
  }
  private function music($music){
    list($music['Title'], $music['Description'], $music['MusicUrl'], $music['HQMusicUrl']) = $music;
    $this -> data['Music'] = $music;
  }
  private function news($news){
    $articles = array();
    foreach ($news as $key => $value){
      list($articles[$key]['Title'], $articles[$key]['Description'], $articles[$key]['PicUrl'], $articles[$key]['Url']) = $value;
      if($key >= 9){
        break;
      }
    }
    $this -> data['ArticleCount'] = count($articles);
    $this -> data['Articles'] = $articles;
  }
  private function transfer_customer_service($content){
    $this -> data['Content'] = '';
  }
  private function data2xml($xml, $data, $item = 'item'){
    foreach ($data as $key => $value){
      is_numeric($key) && $key = $item;
      if(is_array($value) || is_object($value)){
        $child = $xml -> addChild($key);
        $this -> data2xml($child, $value, $item);
      }else{
        if(is_numeric($value)){
          $child = $xml -> addChild($key, $value);
        }else{
          $child = $xml -> addChild($key);
          $node = dom_import_simplexml($child);
          $node -> appendChild($node -> ownerDocument -> createCDATASection($value));
        }
      }
    }
  }
  private function auth($token){
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if(trim($tmpStr) == trim($signature)){
      return true;
    }else{
      return false;
    }
    return true;
  }
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 显示指定路径下的图片
Oct 29 PHP
php引用返回与取消引用的详解
Jun 08 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
PHP 计算两个特别大的整数实例代码
May 07 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
php命令行模式代码实例详解
Feb 26 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 #PHP
PHP数组实例详解
Jun 26 #PHP
php微信开发之批量生成带参数的二维码
Jun 26 #PHP
php日期操作技巧小结
Jun 25 #PHP
php项目开发中用到的快速排序算法分析
Jun 25 #PHP
php函数传值的引用传递注意事项分析
Jun 25 #PHP
php好代码风格的阶段性总结
Jun 25 #PHP
You might like
PHP数字格式化
2006/12/06 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
python字符串中的单双引
2017/02/16 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
土木建筑学生自我评价
2014/01/14 职场文书
森林防火宣传标语
2014/06/27 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
社会学专业求职信
2014/07/17 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
我爱我班主题班会
2015/08/13 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL