验证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 相关文章推荐
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
php实现读取超大文件的方法
Jul 28 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
php metaphone()函数的定义和用法
May 15 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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
Terran历史背景
2020/03/14 星际争霸
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python打包多类型文件的操作方法
2020/09/21 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
新闻专业推荐信范文
2013/11/20 职场文书
2014升学宴答谢词
2014/01/26 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014年采购工作总结
2014/11/20 职场文书
2014年科普工作总结
2014/12/06 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python