• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

微信公众号开发之微信公共平台消息回复类实例_php技巧

php 搞代码 4年前 (2022-01-26) 47次浏览 已收录 0个评论

本文实例讲述了微信公众号开发之微信公共平台消息回复类。分享给大家供大家参考。具体如下:

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

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

希望本文所述对大家基于PHP的微信公众号开发有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:微信公众号开发之微信公共平台消息回复类实例_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址