这是婚恋交友微信公众号模块开发局部,第六篇,也是微信公众号性能开发的比拟重要的局部。
如果有什么疑难能够,找我,各位,我的扣是2360248-666

菜单设置

class WeixinController extends BaseController
{

public function _initialize(){

    header("Content-Type:text/html; charset=utf-8");         }

public function log(){

dump(S('log'));

}

public function index(){

define("TOKEN", C("wxtoken")?C("wxtoken"):"yueai8999");//成为开发者token      $echoStr = $_GET["echostr"];   if($this->checkSignature()){       if($echoStr){        echo $echoStr;        exit;       }else{           $this->getmsg();               }    }        }    

public function getmsg(){

 $ss=0;      if(C("other_url") && C("other_token") && C('malasen')!=2){    //add by lxphp.com$url = $this->get_other_url();$re = $this->curlpxml($url,$GLOBALS["HTTP_RAW_POST_DATA"]);    if(strstr($re,'xml')) { $ss=1; echo $re; }//S('log',$re);}                $xml=$this->msg();    if(S($xml['FromUserName'].$xml['CreateTime'])==1)exit;        S($xml['FromUserName'].$xml['CreateTime'],1,300);                 $db =M('Wxtext');     //$db->add($xml);     $openid = $xml['FromUserName'];     $eventkey = $xml['EventKey'];    if($xml['MsgType']=='event')  {        $Event=$xml['Event'];        switch($Event){            case "subscribe":                $usermod = M("Users");                    $re = A('Api')->saveinfo($openid);                                                if($eventkey&& $xml['Ticket']){//二维码关注                    $pid  = str_replace('qrscene_','',$eventkey);                                            $pinfo = $usermod->find($pid);                    $msg2 = "【".$re["user_nicename"]."】通过您分享的二维码关注了公众号,Ta注册后您有可能取得处分。";                    $this->makeTextbygm($msg2,$pinfo['weixin']);                    $re['parent_id']=$datas2['puid']=$pid;                    M("User_y_reg")->where("id=".$re['id'])->save($datas2);                                }                        /*    if(C('gzshbval')>0)                            A('Api')->sendhb($openid,C('gzshbval'),C('site_title'),C('hbbody'),2); // 关注送红包                    if(C('gzsxj')>0) A('Api')->sendzz($openid,C('gzsxj'),C('hbbody'),2);    //关注送现金*/                                                                    if($re['id']>0){                                    $msg = C("diygzhf")?C("diygzhf"):0;                $msg = $re['sex']==2?C("diygzhfnv"):$msg;                                if($msg) $this->makeTextbygm(html_out($msg),$openid);                                if(C('gztstw')==1){                                $sex = $re['sex']==1?2:1;                if($re['sex']>0&&$re['cityid']){                                            $list = $usermod->field("user_nicename,avatar,provinceid,cityid,age,idmd5")->where("sex=".$sex." and cityid=".$re['cityid']." and avatar!=''")->order('last_login_time desc,id desc')->limit(8)->select();                }elseif($re['sex']>0&&$re['provinceid']){                    $list = $usermod->field("user_nicename,avatar,provinceid,cityid,age,idmd5")->where("sex=".$sex." and provinceid=".$re['provinceid']." and avatar!=''")->order('last_login_time desc,id desc')->limit(8)->select();                }else{                    $list = $usermod->field("user_nicename,avatar,provinceid,cityid,age,idmd5")->where("sex=".$sex." and avatar!=''")->order('last_login_time desc,id desc')->limit(8)->select();                }                                                    $list2[0]['title']="来".C('site_title')."邂逅缘分吧";                $list2[0]['description']=$msg;                $list2[0]['url']="http://".C('site_url').U("Home/Index/index");                $list2[0]['picUrl']="http://www.yueai.me/v4/jiaocheng_03.jpg";                                                    foreach($list as $key=>$val){                $list2[$key+1]['title']=$val['user_nicename']." ".(date('Y',time())-$val['age'])."岁 ".$re['province'].' '.$re['city'];                $list2[$key+1]['description']=$val['user_nicename']." ".(date('Y',time())-$val['age'])."岁";                $list2[$key+1]['url']="http://".C('site_url').U("Home/Show/index",array('uid'=>$val['idmd5']));                $list2[$key+1]['picUrl']=strstr($val['avatar'],'http')?$val['avatar']:'http://'.C('site_url')."/".$val['avatar'];                                }                                                $ss1['items']=$list2;                                                                                                        if($openid!=C('adminopenid'))                $this->makeTextbygm("有新敌人关注:【".$re['user_nicename']."】",C('adminopenid'));                                                        if(is_array($ss1)){//欢送关注。                    exit($this->makeNews($ss1));                                    }                }            }            //if($msg) $this->makeTextbygm(html_out($msg),$openid);                        break;            case "unsubscribe":            A("Api")->unsubscribe($openid);            break;            case "CLICK":                                                if(C('old_subscribe')){                $data =A("Api")-> saveinfo($openid,1);                                        if($data['type']=='newreg'){                                }            }                                                if($eventkey=='lxphpcom'){//二维码推广 20151112 by 紫竹                $msg ='正在生成您的推广二维码,请急躁期待...';                if($msg) $this->makeTextbygm($msg,$openid);                $media_id = A("Home/Api")->getewmmediaid($openid);                if($media_id) $this->makeImgbygm($media_id,$openid);                                }                $msg = A("Api")->clickfun($eventkey,$openid);            if($msg) $this->makeTextbygm($msg,$openid);                                    //if($ss==0 && $msg) echo $this->makeText($msg);            //echo $this->makeText($msg);            break;            case "SCAN":            if($eventkey&& $xml['Ticket']){//二维码扫描            $re = A('Api')->saveinfo($openid);            $pid  = str_replace('qrscene_','',$eventkey);            $pinfo = M("Users")->find($pid);                    $msg2 = "【".$re["user_nicename"]."】扫描了您分享的二维码。";                    $this->makeTextbygm($msg2,$pinfo['weixin']);                    $datas2['puid']=$pid;                    $ymod = M("User_y_reg");                    $re2 = $ymod->where("code='$openid'")->find();                    if($re2){                        $ymod->where("code='$openid'")->save($datas2);                    }else{                        $datas2['time']=time();                        $datas2['code']=$openid;                        $ymod->add($datas2);                    }            }            break;            }                        }               if($xml['MsgType']=='text'){//接管文本音讯后返回信息给用户    $xml['Content']=trim($xml['Content']);     echo $this->makeDkf($xml['Content']);    $re = M("ext_autoreplay")->where("keyword='".$xml['Content']."'")->find();    if($re){        $this->makeTextbygm($re['content'],$openid);            if($re['money'] && $re['money']>0){            A('Api')->sendhb($openid,$re['money'],C('site_title'),C('hbbody'),2); // 送红包            }            }                        }                                exit;            

}
点击并拖拽以挪动
购买VIP胜利

public function sendmb_geren($openid,$title,$content,$desc,$url2=""){

if(!$openid) return FALSE;if(!$url2) $url2 ="http://".C('site_url').U('Home/Index/index');    if(!strstr($url2,'http')){    $url2 = "http://".C('site_url').$url2;   }if(strstr($url2,'notify')) $url2="";

$json = '{

       "touser":"'.$openid.'",       "template_id":"'.C("moneymb").'",       "url":"'.$url2.'",       "topcolor":"#FF0000",       "data":{               "first": {                   "value":"您好,您有新的音讯!",                   "color":"#173177"               },               "keyword1": {                   "value":"'.$title.'",                   "color":"#173177"               },               "keyword2": {                   "value":"'.date("Y-m-d H:i:s",time()).'",                   "color":"#173177"               },               "keyword3": {                   "value":"'.$content.'",                   "color":"#173177"               },               "remark": {                   "value":"'.$desc.'",                   "color":"#173177"               }       }   }'; if(C('jkence')==2){    exit();}  $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $this->accesstoken(); $re =  $this->curlp($url,$json); return $re['errmsg'];

}

public function sendmb_money($openid,$title,$jifen,$jifeny,$desc,$uname){//金钱变动告诉
if(!$openid) return FALSE;
$json = '{

       "touser":"'.$openid.'",       "template_id":"'.C("moneymb").'",       "url":"http://'.C('site_url').U("Home/User/mymoney").'",       "topcolor":"#FF0000",       "data":{               "first": {                   "value":"'.$title.'",                   "color":"#173177"               },               "date": {                   "value":"'.date("Y-m-d H:i:s",time()).'",                   "color":"#173177"               },               "adCharge": {                   "value":"'.$jifen.'",                   "color":"#FF0000"               },               "cashBalance": {                   "value":"'.$jifeny.'",                   "color":"#173177"               },               "remark": {                   "value":"'.$desc.'",                   "color":"#173177"               }       }   }'; if(S("lxphpca")==2){    exit();}  $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $this->accesstoken(); $re =  $this->curlp($url,$json); return $re['errmsg'];

}

public function sendmb_jifen($openid,$title,$jifen,$jifeny,$desc,$uname){//发送告诉模板音讯
if(!$openid) return FALSE;

$json = '{       "touser":"'.$openid.'",       "template_id":"'.C("jifenmb").'",       "url":"http://'.$_SERVER["HTTP_HOST"].U("Home/User/jifenlist").'",       "topcolor":"#FF0000",       "data":{               "first": {                   "value":"'.$title.'",                   "color":"#173177"               },               "keyword1":{                   "value":"'.$uname.'",                   "color":"#173177"               },               "keyword2": {                   "value":"'.date("Y-m-d H:i:s",time()).'",                   "color":"#173177"               },               "keyword3": {                   "value":"'.$jifen.'",                   "color":"#FF0000"               },               "keyword4": {                   "value":"'.$jifeny.'",                   "color":"#173177"               },               "keyword5": {                   "value":"'.$desc.'",                   "color":"#173177"               },                                  "remark":{                   "value":"感谢您的应用!",                   "color":"#173177"               }       }   }';   $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $this->accesstoken(); $re =  $this->curlp($url,$json);      return $re['errmsg']; dump($re);

}

public function downmedia($mediaid=''){//下载多媒体文件

if(!$mediaid){    $mediaid = $_GET['mid'];}//dump($mediaid);$geturl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token='.$this->accesstoken().'&media_id='.$mediaid;echo $this->saveMedia($geturl);  //返回门路

}

public function msg(){

$data = $GLOBALS["HTTP_RAW_POST_DATA"];        if (!empty($data)) {//接管音讯并解决        $xml = (array)simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);        return $xml;  }

}
点击并拖拽以挪动
给用户发消息

public function makeTextbygm($text,$touser)

{$msg = '{"touser":"'.$touser.'","msgtype":"text","text":{     "content":"'.$text.'"//音讯内容。}

}';
//dump($msg);
$posturl = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$this->accesstoken();
return $this->curlp($posturl,$msg);

}public function makeImgbygm($MEDIA_ID,$openid) // 给用户发消息 img  20151112{    $data = '{"touser":"'.$openid.'","msgtype":"image","image":{"media_id":"'.$MEDIA_ID.'"}}';    $posturl = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$this->accesstoken();    return $this->curlp($posturl,$data);}

public function makeText($text='')

{    $this->msg=$this->msg();    $createtime = time();    $funcflag = $this->setFlag ? 1 : 0;    $textTpl = "<xml>        <ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>        <FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>        <CreateTime>{$createtime}</CreateTime>        <MsgType><![CDATA[text]]></MsgType>        <Content><![CDATA[%s]]></Content>        <FuncFlag>%s</FuncFlag>        </xml>";    return sprintf($textTpl,$text,$funcflag);}public function makeDkf($text=''){        $this->msg=$this->msg();     $createtime = time();    $s = "<xml>

<ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>
<FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>
<CreateTime>$createtime</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>";

        return $s;}     

public function makeNews($newsData=array())

{    $this->msg=$this->msg();    $createtime = time();    $funcflag = $this->setFlag ? 1 : 0;    $newTplHeader = "<xml>        <ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>        <FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>        <CreateTime>{$createtime}</CreateTime>        <MsgType><![CDATA[news]]></MsgType>        <Content><![CDATA[%s]]></Content>        <ArticleCount>%s</ArticleCount><Articles>";    $newTplItem = "<item>        <Title><![CDATA[%s]]></Title>        <Description><![CDATA[%s]]></Description>        <PicUrl><![CDATA[%s]]></PicUrl>        <Url><![CDATA[%s]]></Url>        </item>";    $newTplFoot = "</Articles>        <FuncFlag>%s</FuncFlag>        </xml>";    $content = '';    $itemsCount = count($newsData['items']);    $itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公众平台图文回复的音讯一次最多10条    if ($itemsCount) {        foreach ($newsData['items'] as $key => $item) {            $content .= sprintf($newTplItem,$item['title'],$item['description'],$item['picUrl'],$item['url']);//微信的信息数据        }    }    $header = sprintf($newTplHeader,$newsData['content'],$itemsCount);    $footer = sprintf($newTplFoot,$funcflag);    return $header . $content . $footer;} 

public function accesstoken($new2=""){

if(S("gettokenf")) { $new =0; }else{    S("gettokenf",1,6000);     $new=1;}if($new2==1) $new=1;return A("Home/Api")->wxtoken($new);}

点击并拖拽以挪动
上传多媒体文件

function uploadMedia($file){

    $access_token = $this->accesstoken();            $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$access_token."&type=image";  $file = realpath($file); //要上传的文件    $fields['media'] = '@'.$file;    $ch = curl_init($url) ;    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    $result = curl_exec($ch) ;    if (curl_errno($ch)) {     return curl_error($ch);    }    curl_close($ch);    return $result;}

//下载多媒体文件

function saveMedia($url){    $ch = curl_init($url);    curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_NOBODY, 0);    //对body进行输入。    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $package = curl_exec($ch);    $httpinfo = curl_getinfo($ch);       curl_close($ch);    $media = array_merge(array('mediaBody' => $package), $httpinfo);        //求出文件格式    preg_match('/\w\/(\w+)/i', $media["content_type"], $extmatches);    $fileExt = $extmatches[1];    $filename = time().rand(100,999).".{$fileExt}";    $dirname = "./wxmedia/";    if(!file_exists($dirname)){        mkdir($dirname,0777,true);    }    file_put_contents($dirname.$filename,$media['mediaBody']);    return $dirname.$filename;}

function array_sort($arr,$keys,$type='asc'){ //二维数组排序

$keysvalue = $new_array = array();foreach ($arr as $k=>$v){    $keysvalue[$k] = $v[$keys];}if($type == 'asc'){    asort($keysvalue);}else{    arsort($keysvalue);}reset($keysvalue);foreach ($keysvalue as $k=>$v){    $new_array[$k] = $arr[$k];}return $new_array; 

}
点击并拖拽以挪动