跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

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

本文实例讲述了微信公众号开发之微信公共平台消息回复类。分享给大家供大家参考。具体如下:微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,这里就给各位分享一个。

微信 WeLM WeLM不是一个直接的对话机器人,而是一个补全用户输入信息的生成模型。

下载代码如下:/*** 微信公共平台消息回复类***/ class BBCweixin{private $APPID="******";private $APPSECRET="******";/**文本消息回复*@param array object*@param string content*@return string*/ public function resText($object,$content,$flag=0){$xmlText="%s%d";$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="";$xmlImage.="";$xmlImage.="";$xmlImage.="%s";$xmlImage.="";$xmlImage.="";$xmlImage.="";$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="FromUserName}]]>ToUserName}]]>{$CreateTime}%s";$newTplItem="";$newTplFoot="%s";$Content='';$itemsCount=count($newsData);$itemsCount=$itemsCount if($itemsCount){foreach($newsData as $key=>$item){if($key$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="%s";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的微信公众号开发有所帮助。

相关文章