验证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遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP编程函数安全篇
Jan 08 PHP
浅析PHP绘图技术
Jul 03 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
解决file_get_contents无法请求https连接的方法
Dec 17 PHP
php顺序查找和二分查找示例
Mar 27 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
js Function类型
2011/12/04 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
python绘制圆柱体的方法
2018/07/02 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
kafka-python批量发送数据的实例
2018/12/27 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
python 高阶函数简单介绍
2021/02/19 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
西部世纪面试题
2014/12/05 面试题
停车场管理协议书范本
2014/10/08 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
道德与公民自我评价
2015/03/09 职场文书
律师函格式范本
2015/05/27 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript