美文网首页
最简单的PHP接入微信消息事件

最简单的PHP接入微信消息事件

作者: 像牛嗷嗷 | 来源:发表于2017-11-07 21:51 被阅读13次

    话不多说直接Coding

    <?php
    
    header("Content-Type:text/html; charset=utf-8");  
    define("TOKEN", "weixin");  
    
    $wechatObj = new wechatCallbackapiTest();  
    //$wechatObj->valid();  
    $wechatObj->responseMsg();
    // 校验
    // 校验
    
    
    class wechatCallbackapiTest  
    {  
        public function valid()  
        {  
            $echoStr = $_GET["echostr"];  
      
            //valid signature , option  
            if($this->checkSignature()){  
                header('content-type:text');  
                echo $echoStr;  
                exit;  
            }  
        }   
      
        public function responseMsg()
        {
            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    
            //extract post data
            if (!empty($postStr)){
                     
                    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                    $fromUsername = $postObj->FromUserName;
                    $toUsername = $postObj->ToUserName;
                    $type = $postObj->MsgType;
                    $customrevent = $postObj->Event;
                    $keyword = trim($postObj->Content);
                    $scanresult=trim($postObj->ScanCodeInfo->ScanResult);
                    $time = time();
                    $textTpl = "<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                                <FuncFlag>0</FuncFlag>
                                </xml>";             
                    if($type=="event" and $customrevent=="subscribe"){
                        $contentStr = "欢迎关注\n";                 
                        $msgType = "text";
                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                        echo $resultStr;
                    }   
                    //省略微信多类事件。。。
                    else{
                    
                        $this->textMsg($fromUsername,$toUsername,$time);
                    }
    
            }else {
                echo "";
                exit;
            }
        }
      
        private function checkSignature()  
        {  
            $signature = $_GET["signature"];  
            $timestamp = $_GET["timestamp"];  
            $nonce = $_GET["nonce"];      
              
            $token = TOKEN;  
            $tmpArr = array($token, $timestamp, $nonce);  
            sort($tmpArr);  
            $tmpStr = implode( $tmpArr );  
            $tmpStr = sha1( $tmpStr );  
    
            if( $tmpStr == $signature ){  
                return true;  
            }else{  
                return false;  
            }  
        }
        //接入多客服
        protected function textMsg($fromUsername,$toUsername,$time){
            $textTpl="<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[transfer_customer_service]]></MsgType>
                    
                    </xml>";
            //$msgType="transfer_customer_service";
            $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time);
            echo $resultStr;
        }
        
    }  
      
    ?>
    

    相关文章

      网友评论

          本文标题:最简单的PHP接入微信消息事件

          本文链接:https://www.haomeiwen.com/subject/xgjsmxtx.html