复旦大学论坛

 找回密码
 注册(开放注册)
搜索
查看: 124467|回复: 1

CI框架整合微信公共平台接口

[复制链接]
发表于 2016-7-12 12:43:12 | 显示全部楼层 |阅读模式
#CI框架控制器
<?PHP if ( ! defined(‘BASEPATH‘)) exit(‘No direct script Access allowed‘);
/***
CI框架整合微信  
2014.9.15
作者:黄国金
**/
define(‘TOKEN‘, ‘hgj123‘);
class Weixin extends CI_Controller
{

    #构造函数
    function __construct()
    {   
        #调用父类的构造函数
        parent::__construct();
        #以get的形式获取参数
        parse_str($_SERVER[‘QUERY_STRING‘], $_GET);
    }

    #在微信平台上设置的对外 URL
    public function message()
    {
        #判断是否接入微信的验证
        if ($this->_valid())
        {
            #判判断是不是验证过
            $echostr = $this->input->get(‘echostr‘);
            if (!empty($echostr))
            {   #未验证
                $this->load->view(‘valid_vIEw‘, array(‘output‘ => $echostr));
            }
            else
            {
                # 处理用户消息
                $this->_responseMsg();
            }
        }
        else#验证失败
        {
            $this->load->view(‘valid_vIEw‘, array(‘output‘ => ‘Error!‘));
        }
    }
    #用于接入微信的验证
    private function _valid()
    {   #获取token
        $token = TOKEN;
        $signature = $this->input->get(‘signature‘);
        $timestamp = $this->input->get(‘timestamp‘);
        $nonce = $this->input->get(‘nonce‘);
        $tmp_arr = array($token, $timestamp, $nonce);
        sort($tmp_arr);
        $tmp_str = implode($tmp_arr);
        $tmp_str = sha1($tmp_str);
        return ($tmp_str == $signature);
    }

    #处理用户发送过来的消息
    private function _responseMsg()
    {
        #获取获取表单提交过来的数据
        $post_str = file_get_contents(‘PHP://input‘);
        #判断是否为空
        if (!empty($post_str))
        {
            #解析微信传过来的 XML 内容
            $post_obj = simpleXML_load_string($post_str, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
            $from_username = $post_obj->FromUserName;
            $to_username = $post_obj->ToUserName;
            #接受用户输入的内容
            $keyWord = trim($post_obj->Content);
            #如果内容不为空
            if (!empty($keyWord))
            {
                #文本类型的消息,本示例只支持文本类型的消息
                $type = "text";
                $content = $this->_parseMessage($keyWord);
                #数据数组
                $data = array(
                    ‘to‘ => $from_username,
                    ‘from‘ => $to_username,
                    ‘type‘ => $type,
                    ‘content‘ => $content,
                );
                #分配数据
                $this->load->view(‘response_vIEw‘, $data);
            }
            else
            {#如果为空
                $type = "text";
                $content = "请输入文字";
                #数据数组
                $data = array(
                    ‘to‘ => $from_username,
                    ‘from‘ => $to_username,
                    ‘type‘ => $type,
                    ‘content‘ => $content,
                );
                #分配数据
                $this->load->view(‘response_vIEw‘, $data);
            }
        }
        else
        {   #错误
            $this->load->view(‘valid_vIEw‘, array(‘output‘ => ‘Error!‘));
        }
    }

    #解析用户输入的字符串
    private function _parseMessage($keyWord)
    {   
        #开启错误日记
        log_message(‘debug‘, $keyWord);
        #处理用户的关键字
        return ‘你好~!~‘;
    }
}
#输出界面  vIEw试图
<XML>
<ToUserName><![CDATA[<?=$to?>]]></ToUserName>
<FromUserName><![CDATA[<?=$from?>]]></FromUserName>
<CreateTime><?=time()?></CreateTime>
<MsgType><![CDATA[<?=$type?>]]></MsgType>
<Content><![CDATA[<?=$content?>]]></Content>
<FuncFlag>0</FuncFlag>
</XML>
您需要登录后才可以回帖 登录 | 注册(开放注册)

本版积分规则

手机访问本页请
扫描左边二维码
         本网站声明
本网站所有内容为网友上传,若存在版权问题或是相关责任请联系站长!
站长联系QQ:12726567   myubbs.com
         站长微信
请扫描右边二维码
www.myubbs.com

小黑屋|手机版|Archiver|复旦大学论坛 ( 渝ICP备17000839号-8 )

GMT+8, 2024-3-29 05:11 , Processed in 0.081150 second(s), 15 queries .

Powered by 高考信息网 X3.3

© 2001-2013 大学排名

快速回复 返回顶部 返回列表