网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 php微信公众平台开发类实例
内容
    <?php
    class Wechat {
    /**
    * 微信推送过来的数据或响应数据
    * @var array
    */
    private $data = array();
    /**
    * 构造方法,用于实例化微信SDK
    * @param string $token 微信开放平台设置的TOKEN
    */
    public function __construct($token) {
    $this->auth($token) || exit;
    if(!empty($_GET['echostr'])){
    exit($_GET['echostr']);
    } else {
    try
    {
    $xml = file_get_contents("php://input");
    $xml = new SimpleXMLElement($xml);
    $xml || exit;
    foreach ($xml as $key => $value) {
    $this->data[$key] = strval($value);
    }
    }catch(Exception $e){
    }
    }
    }
    /**
    * 获取微信推送的数据
    * @return array 转换为数组后的数据
    */
    public function request(){
    return $this->data;
    }
    /**
    * * 响应微信发送的信息(自动回复)
    * @param string $to 接收用户名
    * @param string $from 发送者用户名
    * @param array $content 回复信息,文本信息为string类型
    * @param string $type 消息类型
    * @param string $flag 是否新标刚接受到的信息
    * @return string XML字符串
    */
    public function response($content, $type = 'text', $flag = 0){
    /* 基础数据 */
    $this->data = array(
    'ToUserName' => $this->data['FromUserName'],
    'FromUserName' => $this->data['ToUserName'],
    'CreateTime' => time(),
    'MsgType' => $type,
    );
    /* 添加类型数据 */
    $this->$type($content);
    /* 添加状态 */
    $this->data['FuncFlag'] = $flag;
    /* 转换数据为XML */
    $xml = new SimpleXMLElement('<xml></xml>');
    $this->data2xml($xml, $this->data);
    exit($xml->asXML());
    }
    /**
    * 回复文本信息
    * @param string $content 要回复的信息
    */
    private function text($content){
    $this->data['Content'] = $content;
    }
    /**
    * 回复音乐信息
    * @param string $content 要回复的音乐
    */
    private function music($music){
    list(
    $music['Title'],
    $music['Description'],
    $music['MusicUrl'],
    $music['HQMusicUrl']
    ) = $music;
    $this->data['Music'] = $music;
    }
    /**
    * 回复图文信息
    * @param string $news 要回复的图文内容
    */
    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; } //最多只允许10调新闻
    }
    $this->data['ArticleCount'] = count($articles);
    $this->data['Articles'] = $articles;
    }
    /**
    * 数据XML编码
    * @param object $xml XML对象
    * @param mixed $data 数据
    * @param string $item 数字索引时的节点名称
    * @return string
    */
    private function data2xml($xml, $data, $item = 'item') {
    foreach ($data as $key => $value) {
    /* 指定默认的数字key */
    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));
    }
    }
    }
    }
    /**
    * 对数据进行签名认证,确保是微信发送的数据
    * @param string $token 微信开放平台设置的TOKEN
    * @return boolean true-签名正确,false-签名错误
    */
    private function auth($token){
    if(empty($_GET['signature'])) return;
    /* 获取数据 */
    $data = array($_GET['timestamp'], $_GET['nonce'], $token);
    $sign = $_GET['signature'];
    /* 对数据进行字典排序 */
    sort($data,SORT_STRING);
    /* 生成签名 */
    $signature = sha1(implode($data));
    return $signature === $sign;
    }
    }
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/13 8:05:15