验证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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
php 原生分页
Apr 01 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 IP转换整形(ip2long)的详解
2013/06/06 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python Queue模块详细介绍及实例
2016/12/27 Python
python中map的基本用法示例
2018/09/10 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
英语专业学生的自我评价
2013/12/30 职场文书
车间统计员岗位职责
2014/01/05 职场文书
转党组织关系介绍信
2014/01/08 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
12岁生日演讲稿
2014/05/14 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers