微信公众平台PHP开发-基本操作

微信公众平台PHP开发

1.接入服务器配置

/***
 * TOKEN :公众平台自定义令牌token
 */
define('TOKEN','weixin');

function checkSign(){
if(isset($_GET["signature"])&&isset($_GET["timestamp"])&&isset($_GET["nonce"])&&isset($_GET['echostr']){
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr=$_GET['echostr'];
    
$tmpArr = array(TOKEN, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
    return $echostr;
    exit();
}else{
    return  false;
}
}
}

2.获取Access token

define("APP_ID",'appid');
define("APP_SECRET",'appsecret');

function getToken(){
$url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.APP_ID.'&secret='.APP_SECRET;
//注意配置ip白名单
$result=json_decode(file_get_contents($url));
return $result->access_token;
}

3. 接收到的消息

function getXMLObj(){
// 获取POST数据
    $postData = file_get_contents("php://input");
    // 判断POST数据是否为空
    if (empty($postData)) {
        echo "no HTTP_RAW_POST_DATA";
        exit();
    }
    // 解析XML字符串
     libxml_disable_entity_loader(true);
    $xmlObj = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);
    return $xmlObj;
}
/**
*ToUserName=》接收的微信号
*FromUserName=》发送用户微信号
*返回时注意接收的微信号变成发送方,同理发送的用户微信号变成接收方
**/
    $fromUserName = $xmlObj->ToUserName;
    $toUserName = $xmlObj->FromUserName;
    // 获取MsgType
    $msgType = $xmlObj->MsgType;

4.获取用户信息

function getUserInfo(){
    $access_token=getToken();
$userUrl='https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$toUserName.'&lang=zh_CN';
$userResult= json_decode(file_get_contents($userUrl));
    return $userResult;
}
//用户昵称
$userResult->nickname

5. 事件消息回复

订阅回复

if (strtolower($msgType) == 'event') {        
        $event=$xmlObj->Event;
        if($event=='subscribe'){
            $content='Hello,'.$userResult->nickname;
            // 输出消息的XML模板
    $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>");
    // 对消息模板中的通配符进行替换
    $resultStr = sprintf($retTmp,$toUserName, $fromUserName,  time(), $content);
    // 输出XML描述消息
    echo $resultStr;
        }
}

点击菜单栏回复图文消息

if (strtolower($msgType) == 'event') { 
$event=$xmlObj->Event;
        if($event=='CLICK'){
            $linkUrl ='http://www.xiaolidan00.top/';
                $title='聪明一丹';
                $description="机智如我";
                $pic='https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567744921195&di=04e8e2f926658ff25096509f927d388d&imgtype=0&src=http%3A%2F%2Fimg5.duitang.com%2Fuploads%2Fitem%2F201312%2F01%2F20131201205420_i3hRN.thumb.700_0.jpeg';
                $temp = trim('<item>
                <Title><![CDATA[%s]]></Title>
                <Description><![CDATA[%s]]></Description>
                <PicUrl><![CDATA[%s]]></PicUrl>
                <Url><![CDATA[%s]]></Url>
                </item>');
                $content = sprintf($temp,$title,$description,$pic, $linkUrl);
                // 输出消息的XML模板
                $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles>%s</Articles></xml>");
                // 对消息模板中的通配符进行替换
                $resultStr = sprintf($retTmp, $toUserName, $fromUserName, time(), $content);
            echo $resultStr;
        }

}

6.接收消息并回复

接收文本消息并原样返回

    if (strtolower($msgType)== 'text') {
        $content = $xmlObj->Content;
    
// 输出消息的XML模板 小心空格会导致错误
    $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>");
    // 对消息模板中的通配符进行替换
    $resultStr = sprintf($retTmp,$toUserName, $fromUserName,  time(), $content);
    // 输出XML描述消息
    echo $resultStr;
    }

接收图片消息并原样返回

   if (strtolower($msgType)== 'image') {
        $content = $xmlObj->MediaId;
    
// 输出消息的XML模板
                $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[%s]]></MediaId></Image></xml>");
                // 对消息模板中的通配符进行替换
 $resultStr = sprintf($retTmp, $toUserName, $fromUserName, time(), $content);
    // 输出XML描述消息
    echo $resultStr;
    }

接收语音消息并原样返回

if (strtolower($msgType)== 'voice') {
        $content = $xmlObj->MediaId;
    
// 输出消息的XML模板
                $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[voice]]></MsgType><Voice><MediaId><![CDATA[%s]]></MediaId></Voice></xml>");
                // 对消息模板中的通配符进行替换
                $resultStr = sprintf($retTmp, $toUserName, $fromUserName, time(), $content);
    // 输出XML描述消息
    echo $resultStr;
    }

接收位置消息并返回经纬度文本

if (strtolower($msgType)== 'image') {
        $content="当前位置=》纬度:".$xmlObj->Location_X .",经度:".$xmlObj->Location_Y ;
    
// 输出消息的XML模板
                $retTmp = trim("<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>");
                // 对消息模板中的通配符进行替换
                $resultStr = sprintf($retTmp, $toUserName, $fromUserName, time(), $content);
    // 输出XML描述消息
    echo $resultStr;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更新日志: 新版v1.0.3发布: phpWeChat PC+微信公众开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值