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

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

/**

* 微信公共平台消息回复类

*

*

*/

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<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="

%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的微信公众号开发有所帮助。

微信公众 mysql回复图片_微信公众号开发之微信公共平台消息回复类实例相关推荐

  1. 微信公共平台消息回复类

    <?php /**  * 微信公共平台消息回复类  *  *  */ class BBCweixin{    private $APPID="******";  privat ...

  2. php微信消息管理接口_PHP微信接口 公共平台消息回复类库

    原标题:PHP微信接口 公共平台消息回复类库 各位观众老爷,大家好! 今天给大家带来的是 PHP微信接口 公共平台消息回复类库! 这个是参考了官方给出的demo文件进行修改的微信公众号开发代码,需要的 ...

  3. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

  4. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  5. 微信公众号开发--开通测试号及验证消息来自服务器

    微信公众号开发--开通测试号及验证消息来自服务器 一.服务器配置 1.开通测试号 2.域名申请(ngrok) 2.1.注册 2.2.下载客户端 二.验证消息来自服务器 一.服务器配置 1.开通测试号 ...

  6. 微信公众号开发之微信公众平台与公众号第三方平台区别

    微信公众号开发分为微信公众平台和公众号第三方平台. 首先需要一个认证服务号,然后在设置,基本配置里面配置公众号开发信息和服务器配置. 这是我们会得到开发者ID(AppID),开发者密码(AppSecr ...

  7. 公众号开发模式下客服消息开发

    当用户和公众号产生特定动作的交互时,微信将会把消息数据推送给开发者,开发者可以在一段时间内调用客服接口,通过POST一个JSON数据包来发送消息给普通用户.此接口主要用于客服等有人工消息处理环节的功能 ...

  8. php订阅号发送消息,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息...

    2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...

  9. 微信公众 mysql回复图片_微信公众平台开发消息回复总结介绍

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

最新文章

  1. 《我想进大厂》之网络篇夺命连环12问
  2. 微信说中国人的国庆长假 境内游西湖外滩上榜
  3. 【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?...
  4. cookie 的使用
  5. 怎么下载学习通上的PDF
  6. 和大家分享一个小TIP
  7. python post请求实例_Python使用requests发送POST请求实例代码
  8. jquery分页插件的修改
  9. 钱准备好了吗?中国移动将在10月公布5G套餐资费
  10. 开始使用Power BI桌面
  11. 生活随记 - 2020国庆第四天
  12. java对接芯烨XP58系列打印机,网络驱动
  13. javaWeb上传文件(jsp上传文件)
  14. 亚马逊云服务器账号注册,免费申请12个月aws亚马逊云详细教程
  15. 2020校园招聘公司列表!计算机/互联网 技术类岗位!,一直更新!
  16. 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
  17. 如何查区块链项目的服务器地址,怎么查区块链服务器地址
  18. ADSO中的表和视图
  19. 《STL源码剖析》-- stl_uninitialized.h
  20. 一步步教你创建自己的数字货币(代币)进行ICO

热门文章

  1. android动态获取悬浮窗,Android 悬浮窗实现
  2. 威廉森《宏观经济学》第五版笔记和课后答案
  3. 比亚迪没有奇迹:一个奶不大的孩子,一个走向平凡的车企
  4. shopify开发经验
  5. 1.10 环的同态和理想
  6. 官宣:传智播客品牌全新升级为「传智教育」
  7. “提升业务决策效率:探索FICO Blaze决策引擎的应用“
  8. vs调试时报错:变量已被优化掉,因而不可用
  9. 阿里一员工被判刑,涉及金额66亿,获利千万
  10. Root Moto X Style XT1570 国行系统