验证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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
php可变长参数处理函数详解
Feb 22 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php中各种定义变量的方法小结
Oct 18 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php 伪静态之IIS篇
2014/06/02 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
Javascript String.replace的妙用
2009/09/08 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python中黄金分割法实现方法
2015/05/06 Python
Python二分法搜索算法实例分析
2015/05/11 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
城建学院毕业生自荐信
2014/01/31 职场文书
保险公司开门红口号
2014/06/21 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
警告通知
2015/04/25 职场文书
企业年会祝酒词
2015/08/11 职场文书