验证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支持页面回退的两种方法
Jan 10 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
php检查页面是否被百度收录
Oct 28 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
php实现微信支付之现金红包
May 30 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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源码之explode使用说明
2011/08/05 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
js对象基础实例分析
2015/01/13 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
vue组件name的作用小结
2018/05/23 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
python 重命名轴索引的方法
2018/11/10 Python
为什么python比较流行
2020/06/19 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
中学生寄语大全
2014/04/03 职场文书
考勤制度通知
2015/04/25 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS