验证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动态图像的创建
Oct 09 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
php制作动态随机验证码
Feb 12 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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;mysql(五)
2006/10/09 PHP
MySQL相关说明
2007/01/15 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
js left,right,mid函数
2008/06/10 Javascript
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python如何读取MySQL数据库表数据
2017/03/11 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python爬虫之遍历单个域名
2019/11/20 Python
Python colormap库的安装和使用详情
2020/10/06 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
中学教师岗位职责
2013/11/26 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
商场活动策划方案
2014/01/24 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
golang生成并解析JSON
2022/04/14 Golang