《PHP學習:微信公眾號開發之微信公共平臺消息回復類實例》要點:
本文介紹了PHP學習:微信公眾號開發之微信公共平臺消息回復類實例,希望對您有用。如果有疑問,可以聯系我們。
PHP實例本文實例講述了微信公眾號開發之微信公共平臺消息回復類.分享給大家供大家參考.具體如下:
PHP實例微信公眾號開發代碼我在網上看到了有不少,其實都是大同小義了都是參考官方給出的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($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.com/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.com/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.com/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($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.com/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.com/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)));
?
? $v = round($EARTH_RADIUS * $v * 10000) / 10000;
?
? return $v;
?}
}
?>
PHP實例希望本文所述對大家基于PHP的微信公眾號開發有所贊助.
《PHP學習:微信公眾號開發之微信公共平臺消息回復類實例》是否對您有啟發,歡迎查看更多與《PHP學習:微信公眾號開發之微信公共平臺消息回復類實例》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14053.html