验证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 09 PHP
如何正确理解PHP的错误信息
Oct 09 PHP
人大复印资料处理程序_补充篇
Oct 09 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
php实现的操作excel类详解
Jan 15 PHP
php设计模式之单例模式代码
Jun 11 PHP
php 基础函数
Feb 10 PHP
PHP多进程编程实例详解
Jul 19 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 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
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php中__toString()方法用法示例
2016/12/07 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
jquery tools之tooltip
2009/07/25 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
python dict.get()和dict['key']的区别详解
2016/06/30 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
什么是就业协议书
2014/04/17 职场文书
安全施工标语
2014/06/07 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS