本文实例讲述了微信公众号开发之微信公共平台消息回复类。分享给大家供大家参考。具体如下:
微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,这里就给各位分享一个。
/**
* 微信公共平台消息回复类
*
*
*/
class BBCweixin{
private $APPID="******";
private $APPSECRET="******";
/*
*文本消息回复
*@param array object
*@param string content
*@return string
*/
public function resText($object,$content,$flag=0){
$xmlText="
$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.="
$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="
$newTplItem="
$newTplFoot="
$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="
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在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1
功能强大的PHP集成开发环境