验证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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
10个实用的PHP代码片段
Sep 02 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
PHP时间和日期函数详解
May 08 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 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 Ajax乱码
2008/04/09 PHP
PHP小教程之实现链表
2014/06/09 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Python selenium的基本使用方法分析
2019/12/21 Python
使用python turtle画高达
2020/01/19 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
英文简历中的自我评价
2013/10/06 职场文书
QA工程师岗位职责
2013/11/20 职场文书
项目开发计划书
2014/01/09 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
销售会议开幕词
2015/01/28 职场文书
我的1919观后感
2015/06/03 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript