验证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
一个可以找出源代码中所有中文的工具
Oct 25 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP开发注意事项总结
Feb 04 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
php生成短域名函数
2015/03/23 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
axios基本入门用法教程
2017/03/25 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python subprocess模块常见用法分析
2018/06/12 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
德国家具折扣店:POCO
2020/02/28 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
单位单身证明范本
2014/01/11 职场文书
三项教育活动实施方案
2014/03/30 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python