好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

微信公众号开发之微信公共平台消息回复类

微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,下面给各位分享一个.

初次接触的时候写的一些,有点乱…也没去整理…最近都不想工作了,各种烦,午饭也没吃,就是想表达一下我过的不好,–请忽略个人情绪往下看,代码如下:

<?php  /**    * 微信公共平台消息回复类    *    *    */   class  BBCweixin{      private   $APPID = "******" ;    private   $APPSECRET = "******" ;    /*     *文本消息回复     *@param array object     *@param string content     *@return string     */     public   function  resText( $object , $content , $flag =0){     $xmlText ="<xml>                    <ToUserName><![CDATA[%s]]></ToUserName>                    <FromUserName><![CDATA[%s]]></FromUserName>                    <CreateTime>%s</CreateTime>                    <MsgType><![CDATA[text]]></MsgType>                    <Content><![CDATA[%s]]></Content>                    <FuncFlag>%d</FuncFlag>                    </xml>";        $resultStr =sprintf( $xmlText , $object ->FromUserName, $object ->ToUserName,time(), $content , $flag );     echo   $resultStr ; exit ();   }    /*     *图片消息回复     *@param array object     *@param string url     *@return string     */     public   function  resImage( $object , $media_id ){     $xmlImage = "<xml>" ;     $xmlImage .= "<ToUserName><![CDATA[%s]]></ToUserName>" ;     $xmlImage .= "<FromUserName><![CDATA[%s]]></FromUserName>" ;     $xmlImage .= "<CreateTime>%s</CreateTime>" ;     $xmlImage .= "<MsgType><![CDATA[image]]></MsgType>" ;     $xmlImage .= "<Image><MediaId><![CDATA[%s]]></MediaId></Image>" ;     $xmlImage .= "</xml>" ;     $resultStr =sprintf( $xmlImage , $object ->FromUserName, $object ->ToUserName,time(), $media_id );     echo   $resultStr ; exit ();   }    /*     *图文消息回复     *@param array object     *@param array newsData 二维数组 必须包含[Title][Description][PicUrl][Url]字段     *@return string     */     public   function  resNews( $object , $newsData = array ()){        $CreateTime =time();        $FuncFlag =0;        $newTplHeader ="<xml>          <ToUserName><![CDATA[{ $object ->FromUserName}]]></ToUserName>          <FromUserName><![CDATA[{ $object ->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 );        $itemsCount = $itemsCount <10? $itemsCount :10; //微信公众平台图文回复的消息一次最多10条         if ( $itemsCount ){         foreach ( $newsData   as   $key => $item ){          if ( $key <=9){         $Content .=sprintf( $newTplItem , $item [ 'Title' ], $item [ 'Description' ], $item [ 'PicUrl' ], $item [ 'Url' ]);      }        }    }        $header =sprintf( $newTplHeader ,0, $itemsCount );        $footer =sprintf( $newTplFoot , $FuncFlag );        echo   $header . $Content . $footer ; exit ();   }      /*     *音乐消息回复     *@param array object     *@param array musicContent 二维数组 包含[Title][Description][MusicUrl][HQMusicUrl]字段     *@return string     */     public   function  resMusic( $object , $musicContent = array ()){      $xmlMusic ="<xml>                      <ToUserName><![CDATA[%s]]></ToUserName>                      <FromUserName><![CDATA[%s]]></FromUserName>                      <CreateTime>%s</CreateTime>                      <MsgType><![CDATA[music]]></MsgType>                      <Music>       <Title><![CDATA[%s]]></Title>                      <Description><![CDATA[%s]]></Description>                      <MusicUrl><![CDATA[%s]]></MusicUrl>                      <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>                      </Music>                      </xml>";     if ( empty empty ( $musicContent [0][ 'HQMusicUrl' ])){      $musicContent [0][ 'HQMusicUrl' ]= $musicContent [0][ 'MusicUrl' ];    }     $resultStr =sprintf( $xmlMusic , $object ->FromUserName, $object ->ToUserName,time(), $musicContent [0][ 'Title' ], $musicContent [0][ 'Description' ], $musicContent [0][ 'MusicUrl' ], $musicContent [0][ 'HQMusicUrl' ]);     echo   $resultStr ; exit ();   }    /*     *上传多媒体文件接口     *@param      *@param array mediaArr filename、filelength、content-type     *@return object     */     public   function  uploadMedia( $accessToken , $type = 'image' , $mediaArr ){     $url = "http://file.api.weixin.qq测试数据/cgi-bin/media/upload?access_token=" . $accessToken . "&type=" . $type ;     $doPost =self::curlPost( $mediaArr , $url );     return   $doPost ;   }    /*     *GPS,谷歌坐标转换成百度坐标     *@param lnt     *@param lat     *@return array     */     public   function  mapApi( $lng , $lat , $type ){     $map = array ();     if ( $type == 'gps' ){      $url = "http://map.yanue.net/gpsApi.php?lat=" . $lat . "&lng=" . $lng ;      $res =json_decode( file_get_contents ( $url ));      $map [ 'lng' ]= $res ->baidu->lng;      $map [ 'lat' ]= $res ->baidu->lat;    }     if ( $type == 'google' ){      $url = "http://api.map.baidu测试数据/ag/coord/convert?from=2&to=4&mode=1&x=" . $lng . "&y=" . $lat ;      $res =json_decode( file_get_contents ( $url ));      $map [ 'lng' ]= base64_decode ( $res [0]->x);      $map [ 'lat' ]= base64_decode ( $res [0]->y);    }     return   $map ;   }      /**************************************************************     *     *  使用特定function对数组中所有元素做处理     *  @param  string  &$array     要处理的字符串     *  @param  string  $function   要执行的函数     *  @return boolean $apply_to_keys_also     是否也应用到key上     *  @access public     *     *************************************************************/     public   function  arrayRecursive(& $array ,  $function ,  $apply_to_keys_also  = false)   {     static   $recursive_counter  = 0;     if  (++ $recursive_counter  > 1000) {      die ( 'possible deep recursion attack' );    }     foreach  ( $array   as   $key  =>  $value ) {      if  ( is_array ( $value )) {      self::arrayRecursive( $array [ $key ],  $function ,  $apply_to_keys_also );     }  else  {       $array [ $key ] =  $function ( $value );     }        if  ( $apply_to_keys_also  &&  is_string ( $key )) {       $new_key  =  $function ( $key );       if  ( $new_key  !=  $key ) {        $array [ $new_key ] =  $array [ $key ];       unset( $array [ $key ]);      }     }    }     $recursive_counter --;   }      /**************************************************************     *     *  将数组转换为JSON字符串(兼容中文)     *  @param  array   $array      要转换的数组     *  @return string      转换得到的json字符串     *  @access public     *     *************************************************************/     public   function  JSON( $array ) {    self::arrayRecursive( $array ,  'urlencode' , true);     $json  = json_encode( $array );     return  urldecode( $json );   }    /*     *创建菜单     *     */     public   function  creatMenu( $shop_id , $data ){     $jsonArray =self::JSON( $data );     $AccessToken =self::accessToken( $weiXin [0][ 'key' ], $weiXin [0][ 'secret' ]);     $MENU_URL = "https://api.weixin.qq测试数据/cgi-bin/menu/create?access_token=" . $AccessToken ;     return  self::curlPost( $jsonArray , $MENU_URL );   }    /*     *客服消息回复     *@param array jsonArray Array {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}     *@return string     */        public   function  customService( $jsonArray , $hash ){     if ( empty empty ( $jsonArray )){      return  false;     }     $db =M();     $sql = "select * from bbc_wechats where hash='" . $hash . "'" ;     $weChast = $db ->query( $sql );     $AccessToken =self::accessToken( $weChast [0][ 'key' ], $weChast [0][ 'secret' ]);     $TokenUrl = "https://api.weixin.qq测试数据/cgi-bin/message/custom/send?access_token=" . $AccessToken ;        $CustomRes =self::curlPost( $jsonArray , $TokenUrl );     return   $CustomRes ;    }     /*        *获取access_token      *@return objectStr      */      public   function  accessToken( $appid , $secret ){       $access_token =BBCcache::getCache( 'accesstoken' . $appid );      if ( $access_token ){       $AccessTokenRet = $access_token ;     } else {       $TookenUrl = "https://api.weixin.qq测试数据/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}" ;       $AccessTokenRes =@ file_get_contents ( $TookenUrl );       $AccessToken =json_decode( $AccessTokenRes );       $AccessTokenRet = $AccessToken ->access_token;      BBCcache::setCache( 'accesstoken' . $appid , $AccessToken ->access_token,3600);     }      return   $AccessTokenRet ;    }     /*      *向远程接口POST数据      *@data Array {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}      *@return objectArray      */      public   function  curlPost( $data , $url ){       $ch  = curl_init();       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_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);         $info  = curl_exec( $ch );        if  (curl_errno( $ch )) {       echo   'Errno' .curl_error( $ch );     }       curl_close( $ch );      return  json_decode( $info );    }    //根据经纬度计算距离和方向     function  getRadian( $d ){     return   $d  * M_PI / 180;   }      function  getDistance ( $lat1 ,  $lng1 ,  $lat2 ,  $lng2 ){     $EARTH_RADIUS =6378.137; //地球半径      $lat1  =getRadian( $lat1 );     $lat2  = getRadian( $lat2 );       $a  =  $lat1  -  $lat2 ;     $b  = getRadian( $lng1 ) - getRadian( $lng2 );       $v  = 2 * asin(sqrt(pow(sin( $a /2),2) +  cos ( $lat1 ) *  cos ( $lat2 ) * pow(sin( $b /2),2))); //开源软件:phpfensi测试数据        $v  =  round ( $EARTH_RADIUS  *  $v  * 10000) / 10000;       return   $v ;   }    }    ?>  

查看更多关于微信公众号开发之微信公共平台消息回复类的详细内容...

  阅读:41次