验证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 和 XML: 使用expat函数(二)
Oct 09 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
php feof用来识别文件末尾字符的方法
Aug 01 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
php加密解密实用类分享
Jan 07 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 PHP
详解PHP中curl_multi并发的实现
Jun 08 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判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
js函数的引用, 关于内存的开销
2012/09/17 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
javascript实现简易的计算器
2020/01/17 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
python原始套接字编程示例分享
2014/02/21 Python
Python中的tuple元组详细介绍
2015/02/02 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
销售会计工作职责
2013/12/02 职场文书
cf搞笑广告词
2014/03/14 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
办公室文员岗位职责
2015/02/04 职场文书
最感人的道歉情书
2015/05/12 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
Python中异常处理用法
2021/11/27 Python
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS