本文实例讲述了微信公众号开发之微信公共平台消息回复类。分享给大家供大家参考。具体如下:
微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,这里就给各位分享一个。
private $APPID="**";
private $APPSECRET="**";
/
文本消息回复
@param array object
@param string content
@return string
/
public function resText($object,$content,$flag=0){
$xmlText="
/
音乐消息回复
@param array object
@param array musicContent 二维数组 包含[Title][Description][MusicUrl][HQMusicUrl]字段
@return string
/
public function resMusic($object,$musicContent=array()){
$xmlMusic="
/**
- 使用特定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],$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","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的微信公众号开发有所帮助。
原文链接:https://www.f2er.com/wxmp/23426.html