• 微信开发_微信教程__微信通讯框架V1.0


    做个广告先,

    PHP千人群(6848027)

    C++群 (1414577)

    看雪汇编&反汇编群(15375777)

    看雪汇编&反汇编2群(4915800)

    转载不一定注明出处,只要推荐下群就可以哈,各位亲~

    微信开发_微信教程__微信通讯框架V1.0

    <?php
    /**
     * 微信消息框架 by 牛牛 Q 184377367
     */
    class WeChat {
    
        public $token       = null;
        public $msgType     = null;
        public $event       = null;
        public $eventKey    = null;
        public $keyword     = null;
        public $context     = array();
        public $insHandle   = array();
    
        public function Valid($retstr) {
                
            if ($this->CheckSignatrue()) {
                echo $retstr;
                exit;
            }
        }
        
        public function RegisterHandle(WeChatInterface $ins){
            array_push($this->insHandle, $ins);
        }
        
       
        public function GetPostContent() {
             
            //get post data, May be due to the different environments
            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
            
            //extract post data
         
            if (!empty($postStr)) {
                $postObj        = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                
                $this->context['fromUserName']  = $postObj->FromUserName;
                $this->context['toUserName']    = $postObj->ToUserName;
                $this->context['time']          = $postObj->CreateTime;
                $this->keyword                  = trim($postObj->Content);
                $this->msgType  = $postObj->MsgType;
              //  $this->msgType  = 'event';
                $this->event    = $postObj->Event;
                $this->eventKey = $postObj->EventKey;
                $this->ActionRouter();
       
            } else {
                echo "";
                exit;
            }
        }
    
        private function CheckSignatrue() {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce     = $_GET["nonce"];
        
            $tmpArr = array($this->token, $timestamp, $nonce);
            sort($tmpArr);
            $tmpStr = implode($tmpArr);
            $tmpStr = sha1($tmpStr);
            if ($tmpStr == $signature) {
                return true;
            } else {
                return false;
            }
        }
        
        
        /*
         * 事件消息
         */
        public function OnEvent($event, $eventkey, $context ){
           
            if ( count($this->insHandle)>0 ){
                foreach ( $this->insHandle as $ins ){
                   
                    $ins->OnEvent($event, $eventkey, $context);
                }
            }
        }
        
        /*
         * 文字消息
         */
        public function OnText($keyword,$context){
           if ( count($this->insHandle)>0 ){
               foreach ( $this->insHandle as $ins ){
                   
                    $ins->OnText($keyword,$context);
                }
            }
        }
        
        private function ActionRouter(){
            
            switch ($this->msgType)
            {
                case 'event':
                   
                    $this->OnEvent($this->event, $this->eventKey, $this->context);
                    break;
                case 'text':
                    $this->OnText($this->keyword, $this->context);
                    break;
                default :
                    exit();
                    
            }
        }
        
    
    }
    
    ?>
    <?php
    /**
     * 微信消息框架 by 牛牛 Q 184377367
     */
    interface WeChatInterface{
        
        public function OnEvent($event, $eventkey, $context);
        public function OnText($keyword,$context);
    
    }
    
    ?>
    <?php
    /**
     * 微信消息框架 by 牛牛 Q 184377367
     * 操作类必须实现
     * WeChatInterface接口中的方法(OnEvent,OnText)
     *  OnEvent
     *  OnText
     *  微信有事件消息触发OnEvent,文本消息触发OnText
        
     */
    class WeChatIns implements WeChatInterface {
    
        public function OnEvent($event, $eventkey, $context) {
           
                $this->PostNews($context);
         
            
        }
    
        public function OnText($keyword, $context) {
            $this->PostNews($context);
        }
        
        public function PostText(){
      
        }
    
        public function PostNews($context){
             
            $ary[0]['Title']         = '测试';
            $ary[0]['Description']   = '测试';
            $ary[0]['PicUrl']        = 'http://xxx.jpg';
            $ary[0]['Url']           = 'http://qq.com';
             echo WeChatUtil::CreateNewsXML($ary, $context);
            
            
        }
        
      
        
        
    }
    
    ?>
    <?php
    /**
     * 微信消息框架 by 牛牛 Q 184377367
     */
    class WeChatUtil {
    
     
    
       static public function CreateNewsXML( $ary ,$context) {
            $count = count($ary);
            $textTpl = "<xml>
                    <ToUserName><![CDATA[".$context['fromUserName']."]]></ToUserName>
                    <FromUserName><![CDATA[".$context['toUserName']."]]></FromUserName>
                    <CreateTime>".time()."</CreateTime>
                    <MsgType><![CDATA[news]]></MsgType>
                    <Content><![CDATA[这里是内容]]></Content>
                    <ArticleCount>".$count."</ArticleCount>
                    <Articles>";
                    
                    foreach($ary as $k=>$v){
                         $textTpl.="<item>
                            <Title><![CDATA[".$v['Title']."]]></Title>
                            <Description><![CDATA[".$v['Description']."]]>
                            </Description>
                            <PicUrl><![CDATA[".$v['PicUrl']."]]></PicUrl>
                            <Url><![CDATA[".$v['Url']."]]></Url>
                        </item>";
                    }
                    $textTpl.="</Articles><FuncFlag>0</FuncFlag></xml>";
                    return $textTpl;
            
           
        }
        
    
        
    
    }
    
    ?>
    <?php
    /**
     * 微信消息框架 by 牛牛 Q 184377367
     */
            /*
              import 是TP函数,换成include吧  0 0
            */
            import('ORG.WeChatInterface');
            import('ORG.WeChatIns');
            import('ORG.WeChat');
            
          
            $wechatObj = new WeChat();
            //微信TOKEN
            $wechatObj->token = '';
            $wechatObj->RegisterHandle( new WeChatIns() );
            if (isset( $_GET['echostr'] )) {
                $wechatObj->Valid( $_GET['echostr'] );
            } else {
                $wechatObj->GetPostContent();
            }
    
    ?>
  • 相关阅读:
    windows phone 网络开发三部曲(一)各种包的各种抓法
    Windows phone UI虚拟化和数据虚拟化(二)
    Windows phone UI虚拟化和数据虚拟化(一)
    LongListSelector 控件 在 wp7 和wp8中的不同之处
    wp8 longlistselector 动态加载datatemplate
    解读Python发送邮件
    浅谈Python时间模块
    中文分词技术一:概念
    MySQL常用命令
    初步认识Hive
  • 原文地址:https://www.cnblogs.com/cfas/p/3525916.html
Copyright © 2020-2023  润新知