zoukankan      html  css  js  c++  java
  • 微信图文推送

    <?php
    //微信文档地址
    //http://qydev.weixin.qq.com/wiki/index.php?title=消息类型及数据格式
    
    
    //用户扫码带参数二维码并关注后,微信服务器会根据带参数二维码,访问该接口
    function pushmes(){
        //获取扫描二维码回传信息
        //旧的获取post所有信息的方式,在PHP 5.6后会警告即将废除
        //$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        //新的获取post提交的所有信息的方式
        $postStr = file_get_contents('php://input');
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        
        //发送者账号(openid)
        $openid = (string)$postObj->FromUserName;//o5-P4snElQIi859NmTB3bZ_ryGF0
        
        //判断扫码前是否已关注微信公众号
        $EventKey = trim((string)$postObj->EventKey);
        $keyArray = explode("_", $EventKey);
        if (count($keyArray) == 1){ //扫码前已关注微信公众号
            //...
        }else{ //扫码并关注前,该用户未关注微信公众号
            //...
        }
        
        
        //记录日志
        $log_filename = "pushmes.log";
        $log_content = "
    
    
    =====function pushmes ====时间:" . date ( "Y-m-d H:i:s" ) . "======================================================
    
    ";
        $log_content .= "提交信息====XML:" . $postStr . "====
    
    
    
    ";
        $log_content .= "提交信息====openid:" . $openid . "====
    
    ";
        file_put_contents ( $log_filename, $log_content, FILE_APPEND );
        
        
        
        
        //获取access_token,这里获取方法已经封装,具体怎么获取access_token,查阅资料
        $token_res = $this->setrequest("http://vicclub.tech-trans.com.cn/yzc_ui/DataHandler.ashx?method=GetToken");
        $access_token = $token_res['Data']['token'];
        
        
        
        if($access_token){
            /*
             //注释的为推送内容数组格式,微信不会对数组中汉字经json转义后的字符串再反转义成汉字,所以尽量直接写json串,并将汉字直接放在json串中
             $postArr = array();
             $postArr['touser']  = $openid;
             $postArr['msgtype'] = "news";
             $postArr['news']['articles'] = array();
             //如果 $postArr['news']['articles'] 中只有一条信息数组内容,则推送的是单图文
             $postArr['news']['articles'][] = array('title'=>'测试第一个标题','description'=>"测试第一个描述","url"=>"www.baidu.com","picurl"=>'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg');
             $postArr['news']['articles'][] = array('title'=>'测试第二个标题','description'=>"测试第二个描述","url"=>"www.baidu.com","picurl"=>'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg');
             $postArr['news']['articles'][] = array('title'=>'测试第三个标题','description'=>"测试第三个描述","url"=>"www.baidu.com","picurl"=>'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg');
             //发送给微信接口前要转成json格式
             $postArr = json_encode($postArr);
             */
            
            
            //以下为直接合成json串方式    
            $title1 = '测试第一个标题';
            $title2 = '测试第二个标题';
            $title3 = '测试第三个标题';
                
            $description1 = '测试第一个描述';
            $description2 = '测试第二个描述';
            $description3 = '测试第三个描述';
            
            //推送图文的链接地址
            $url1 = "www.baidu.com";
            $url2 = "www.baidu.com";
            $url3 = "www.baidu.com";
            //推送图文对应标题显示的图片
            $picurl1 = 'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg';
            $picurl2 = 'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg';
            $picurl3 = 'http://img1.imgtn.bdimg.com/it/u=3342737063,3964532796&fm=27&gp=0.jpg';
            
            //合成json串
            $postArr = '{"touser":"'.$openid.'","msgtype":"news","news":{"articles":[{"title":"'.$title1.'","description":"'.$description1.'","url":"'.$url1.'","picurl":"'.$picurl1.'"},{"title":"'.$title2.'","description":"'.$description2.'","url":"'.$url2.'","picurl":"'.$picurl2.'"},{"title":"'.$title3.'","description":"'.$description3.'","picurl":"'.$picurl3.'"}]}}';
            //单图文即写一条title即可,例
            //$postArr = '{"touser":"'.$openid.'","msgtype":"news","news":{"articles":[{"title":"'.$title1.'","description":"'.$description1.'","url":"'.$url1.'","picurl":"'.$picurl1.'"}]}}';
            //开始推送
            $res = $this->api_notice_increment("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token, $postArr);
            
            echo json_encode(array('status'=>0,'mes'=>'多图文推送成功'));
                
        }
    }
    
    function api_notice_increment($url, $data){
        $ch = curl_init();
        $header = "Accept-Charset: utf-8";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $tmpInfo = curl_exec($ch);
        if (curl_errno($ch)) {
            curl_close( $ch );
            return $ch;
        }else{
            curl_close( $ch );
            return $tmpInfo;
        }
    
    }
    
    ?>
  • 相关阅读:
    项目部署到tomcat,浏览器能够访问,手机不能访问。
    项目部署到tomcat上
    MySQL触发器的使用
    支付宝接口的使用
    Oracle RAC管理及维护命令详解
    SQL调优(SQL TUNING)并行查询提示(Hints)之pq_distribute的使用
    Oracle12c中容错&amp;性能新特性之表空间组
    一个典型的多表参与连接的复杂SQL调优(SQL TUNING)引发的思考
    默然回首繁忙而充实的2016
    一副美丽而庞大的SQL TUNING计划美图
  • 原文地址:https://www.cnblogs.com/dreamhome/p/8878230.html
Copyright © 2011-2022 走看看