码迷,mamicode.com
首页 > 微信 > 详细

微信开发

时间:2017-05-04 01:36:55      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:obj   公众   deb   als   simple   fine   content   .com   res   

一、打通微信与服务器之间的通讯

https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

技术分享

 

编辑index.php

<?php

define(‘TOKEN‘,‘yida‘);
$obj  = new weixin();

if(!isset($_GET[‘echostr‘])) {
    
    $obj->receive();

}else{
    
    $obj->checkSignature();
}



class weixin{
    /**
     * 验证服务器与微信间的通讯
     * @return [type] [description]
     */
    public function checkSignature() {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];    
                    
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        
        if( $tmpStr == $signature ){
            echo $_GET[‘echostr‘];
        }else{
            return false;
        }
    }

}

 

二、接收微信发送的消息及记录日志

/**
     * 接收微信的文本信息
     * @return [type] [description]
     */
    public function receive(){
        //微信接收的全局函数
        $obj = $GLOBALS[‘HTTP_RAW_POST_DATA‘];
        //将xml转换为对象(LIBXML_NOCDATA 是忽略SimpleXMLElement类中的CDATA)
        $xmlobj = simplexml_load_file($obj,‘SimpleXMLELement‘,LIBXML_NOCDATA);


        $this->addlog("接收:".$obj);
    }
    
    /**
     * 记录日志
     * @param  [type] $content [要记录的内容]
     */
    private function addlog($content){
        $logsize = 100000;
        $log = "log.txt";
        //判断文件是否存在及文件大小
        if(file_exists($log) && filesize($log)>$logsize){
            unlink($log);
        }
        //追加的方式写入
        file_put_contents($log,date(‘H:i:s‘)." ".$content.‘\n‘,FILE_APPEND);
    }

 

三、回复微信的发送信息

   /**
     * 接收微信的文本信息
     * @return [type] [description]
     */
    public function receive(){
        //微信接收的全局函数
        $obj = $GLOBALS[‘HTTP_RAW_POST_DATA‘];
        //将xml转换为对象(LIBXML_NOCDATA 是忽略SimpleXMLElement类中的CDATA)
        $xmlobj = simplexml_load_string($obj,‘SimpleXMLElement‘,LIBXML_NOCDATA);

        $this->addlog("接收:".$xmlobj);

        if(!empty($xmlobj)){
            switch (trim( $xmlobj->MsgType )){
                case ‘text‘:
                    $result = $this->receiveText($xmlobj);
                    if(!empty($result)){
                        echo $result;
                    }else{
                       $xml = "<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                                </xml>";
                      $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),$xmlobj->MsgType,‘没有这条消息‘);    
                       echo $result;    
                    }
break; } } }
/** * 回复微信内容 * @param [type] $xmlobj [description] * @return [type] [description] */ private function receiveText($xmlobj){ $content = trim($xmlobj->Content); if(strstr($content,‘你好‘)){ $xml = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),$xmlobj->MsgType,‘hello‘); return $result; } }

 四、微信回复单图文消息

   /**
     * 回复微信内容
     * @param  [type] $xmlobj [description]
     * @return [type]         [description]
     */
    private function receiveText($xmlobj){
        $content = trim($xmlobj->Content);
        if(strstr($content,‘你好‘)){
            $xml = "<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    </xml>";
            $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),$xmlobj->MsgType,‘hello‘);    
        }else if(strstr($content,‘单图文‘)){
            $result = $this->receiveImage($xmlobj);
        }
        return $result;    
    }


   /**
     * 发送单图文消息
     * @param  [type] $xmlobj [description]
     * @return [type]         [description]
     */
    private function receiveImage($xmlobj){
        $xml = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <ArticleCount>1</ArticleCount>
                <Articles>
                <item>
                <Title><![CDATA[%s]]></Title>
                <Description><![CDATA[%s]]></Description>
                <PicUrl><![CDATA[%s]]></PicUrl>
                <Url><![CDATA[%s]]></Url>
                </item>
                </Articles>
                </xml> ";
        $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),‘news‘,‘学习微信开发‘,‘新版《规定》明确将各类新媒体纳入管理范畴,
                  指出通过互联网站、应用程序、论坛、博客、微博客、公众账号、即时通信工具、网络直播等形式向社会公众提供互联网新闻信息服务‘,‘http://cms-bucket.nosdn.127.net/53164193c75f4fee90992cbe9c17086c20170503095700.jpeg?imageView&thumbnail=380y187&quality=85‘,‘http://www.baidu.com‘);
        return $result;
    }     

五、微信回复多图文消息

  /**
     * 回复微信内容
     * @param  [type] $xmlobj [description]
     * @return [type]         [description]
     */
    private function receiveText($xmlobj){
        $content = trim($xmlobj->Content);
        if(strstr($content,‘你好‘)){
            $xml = "<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    </xml>";
            $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),$xmlobj->MsgType,‘hello‘);    
        }else if(strstr($content,‘单图文‘)){
            $result = $this->receiveImage($xmlobj);
        }else if(strstr($content,‘多图文‘)){
            $result = $this->receiveImages($xmlobj);
        }
        return $result;    
    }


  /**
     * 发送多图文消息
     * @param  [type] $xmlobj [description]
     * @return [type]         [description]
     */
    private function receiveImages($xmlobj){
        $content = array();
        $content[] =array(
                    ‘Title‘=>‘学习微信开发‘,
                    ‘Description‘=>‘学习微信开发‘,‘新版《规定》明确将各类新媒体纳入管理范畴,
                         指出通过互联网站、应用程序、论坛、博客、微博客、公众账号、即时通信工具、网络直播等形式向社会公众提供互联网新闻信息服务‘,
                    ‘PicUrl‘ => ‘http://cms-bucket.nosdn.127.net/53164193c75f4fee90992cbe9c17086c20170503095700.jpeg?imageView&thumbnail=380y187&quality=85‘,
                    ‘Url‘ =>‘http://www.baidu.com‘
                    );
        $content[] =array(
                    ‘Title‘=>‘学习微信开发‘,
                    ‘Description‘=>‘学习微信开发‘,‘新版《规定》明确将各类新媒体纳入管理范畴,
                         指出通过互联网站、应用程序、论坛、博客、微博客、公众账号、即时通信工具、网络直播等形式向社会公众提供互联网新闻信息服务‘,
                    ‘PicUrl‘ => ‘http://cms-bucket.nosdn.127.net/53164193c75f4fee90992cbe9c17086c20170503095700.jpeg?imageView&thumbnail=380y187&quality=85‘,
                    ‘Url‘ =>‘http://www.baidu.com‘
                    );
        $content[] =array(
                    ‘Title‘=>‘学习微信开发‘,
                    ‘Description‘=>‘学习微信开发‘,‘新版《规定》明确将各类新媒体纳入管理范畴,
                         指出通过互联网站、应用程序、论坛、博客、微博客、公众账号、即时通信工具、网络直播等形式向社会公众提供互联网新闻信息服务‘,
                    ‘PicUrl‘ => ‘http://cms-bucket.nosdn.127.net/53164193c75f4fee90992cbe9c17086c20170503095700.jpeg?imageView&thumbnail=380y187&quality=85‘,
                    ‘Url‘ =>‘http://www.baidu.com‘
                    );
        $str = ‘<item>
                <Title><![CDATA[%s]]></Title>
                <Description><![CDATA[%s]]></Description>
                <PicUrl><![CDATA[%s]]></PicUrl>
                <Url><![CDATA[%s]]></Url>
                </item>‘;
        $news = "";
        foreach ($content as $newArray) {
            $news .= sprintf($str,$newArray[‘Title‘],$newArray[‘Description‘],$newArray[‘PicUrl‘],$newArray[‘Url‘]);
        }
        $xml = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <ArticleCount>%s</ArticleCount>
                <Articles>
                   $news
                </Articles>
                </xml> ";
        $result = sprintf($xml,$xmlobj->FromUserName,$xmlobj->ToUserName,time(),‘news‘,count($content));
        return $result;
    }     

 

微信开发

标签:obj   公众   deb   als   simple   fine   content   .com   res   

原文地址:http://www.cnblogs.com/chenchenphp/p/6804783.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!