验证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 相关文章推荐
phpmailer发送gmail邮件实例详解
Jun 24 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php之curl设置超时实例
Nov 03 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 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结合飞信 免费天气预报短信
2009/05/07 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python对html代码进行escape编码的方法
2015/05/04 Python
python 换位密码算法的实例详解
2017/07/19 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
python3 re返回形式总结
2020/11/20 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
电钳专业个人求职信
2014/01/04 职场文书
车辆安全检查制度
2014/01/12 职场文书
班组长岗位职责
2014/03/03 职场文书
大学生标准自荐书
2014/06/15 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python