微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件

一页代码实现微信基本回复和点击事件功能,部署上去sae或者bae,妥妥的基本免费的服务器

不懂代码都基本每个人都可以做自己的微信公众号了

<?php

define("TOKEN", "mzh");        //换成你的token
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET[‘echostr‘])) {     //验证微信
    $wechatObj->valid();
}else{                     //回复消息
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }

    //回复消息
    public function responseMsg()
	{
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    if (!empty($postStr)){
        $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
        $RX_TYPE = trim($postObj->MsgType);

        switch ($RX_TYPE)
        {
            case "text":
                $resultStr = $this->receiveText($postObj);
                break;
            case "image":
                $resultStr = $this->receiveImage($postObj);
                break;
            case "location":
                $resultStr = $this->receiveLocation($postObj);
                break;
            case "voice":
                $resultStr = $this->receiveVoice($postObj);
                break;
            case "video":
                $resultStr = $this->receiveVideo($postObj);
                break;
            case "link":
                $resultStr = $this->receiveLink($postObj);
                break;
            case "event":
                $resultStr = $this->receiveEvent($postObj);
                break;
            default:
                $resultStr = "unknow msg type: ".$RX_TYPE;
                break;
        }
        echo $resultStr;
    }else {
        echo "";
        exit;
    }
	}

    //接收文本消息
    private function receiveText($object)
    {
        $keyword = trim($object->Content);
        $url = "http://api100.duapp.com/movie/?appkey=DIY_miaomiao&name=".$keyword;
        $output = file_get_contents($url,$keyword);
        $contentStr = json_decode($output, true);
        if (is_array($contentStr)){
            $resultStr = $this->transmitNews($object, $contentStr);
        }else{
            $resultStr = $this->transmitText($object, $contentStr);
        }
        return $resultStr;
    }

    //接收事件,关注等
    private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "你关注了我";    //关注后回复内容
                break;
            case "unsubscribe":
                $contentStr = "";
                break;
            case "CLICK":
                $contentStr =  $this->receiveClick($object);    //点击事件
                break;
            default:
                $contentStr = "receive a new event: ".$object->Event;
                break;
        }

        return $contentStr;
    }

    //接收图片
    private function receiveImage($object)
    {
        $contentStr = "你发送的是图片,地址为:".$object->PicUrl;
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }

    //接收语音
    private function receiveVoice($object)
    {
        $contentStr = "你发送的是语音,媒体ID为:".$object->MediaId;
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }

    //接收视频
    private function receiveVideo($object)
    {
        $contentStr = "你发送的是视频,媒体ID为:".$object->MediaId;
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }

    //位置消息
    private function receiveLocation($object)
    {
        $contentStr = "你发送的是位置,纬度为:".$object->Location_X.";经度为:".$object->Location_Y.";缩放级别为:".$object->Scale.";位置为:".$object->Label;
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }

    //链接消息
    private function receiveLink($object)
    {
        $contentStr = "你发送的是链接,标题为:".$object->Title.";内容为:".$object->Description.";链接地址为:".$object->Url;
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }

//点击菜单消息
    private function receiveClick($object)
    {
         switch ($object->EventKey)
         {
             case "1":
             $contentStr = "猫咪酱个性DIY服装,
我们专业定制个性【班服,情侣装,亲子装等,有长短T恤,卫衣,长短裤】
来图印制即可,给你温馨可爱的TA,
有事可直接留言微信";
             break;
            
             case "2":

             $contentStr = "你点击了菜单: ".$object->EventKey;
             break;
            
             case "3":
             $contentStr = "是傻逼";
             break;
            
             default:
             $contentStr = "你点击了菜单: ".$object->EventKey;
             break;
         }
       
       
        //两种回复
        if (is_array($contentStr)){
            $resultStr = $this->transmitNews($object, $contentStr);
        }else{
            $resultStr = $this->transmitText($object, $contentStr);
        }
        return  $resultStr;
    }
   
   
   
   
   
   
   
   
   
   
   
   
   
    //回复文本消息
    private function transmitText($object, $content)
    {
        $textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[%s]]></Content>
        </xml>";
        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);
        return $resultStr;
    }

//回复图文
    private function transmitNews($object, $arr_item)
    {
        if(!is_array($arr_item))
            return;

$itemTpl = "    <item>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
        <PicUrl><![CDATA[%s]]></PicUrl>
        <Url><![CDATA[%s]]></Url>
     </item>";
        $item_str = "";
        foreach ($arr_item as $item)
            $item_str .= sprintf($itemTpl, $item[‘Title‘], $item[‘Description‘], $item[‘PicUrl‘], $item[‘Url‘]);

$newsTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[news]]></MsgType>
        <Content><![CDATA[]]></Content>
        <ArticleCount>%s</ArticleCount>
        <Articles>
        $item_str</Articles>
        </xml>";

$resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item));
        return $resultStr;
    }
   
   
    //音乐消息
    private function transmitMusic($object, $musicArray, $flag = 0)
    {
        $itemTpl = "<Music>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
        <MusicUrl><![CDATA[%s]]></MusicUrl>
        <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
        </Music>";

$item_str = sprintf($itemTpl, $musicArray[‘Title‘], $musicArray[‘Description‘], $musicArray[‘MusicUrl‘], $musicArray[‘HQMusicUrl‘]);

$textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[music]]></MsgType>
        $item_str
        <FuncFlag>%d</FuncFlag>
        </xml>";

$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
        return $resultStr;
    }
   
   
   
}
?>
时间: 2024-11-18 03:53:03

微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件的相关文章

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

[050] 微信公众平台开发入门视频教程已发布

2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制.临时有事等原因,未能参加,希望能够提供录制视频的观看地址.视频教程的主要内容包括: 1.移动APP发展趋势(Native APP.Web APP.Light APP) 2.微信公众平台基础知识(服务号/订阅号.公众账号注册的注意事项.微信认证) 3.开发模式的使用(启用开发模式.接收与响应消息.回复文本/图文/音乐

微名汇-微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.

微信公众平台开发入门教程(图文)

关键字:微信公众平台开发入门 作者:C++研究室 背景知识:微信公众平台的开发需要有一定的PHP基础知识,PHP是一种HTML内嵌式的语言,广泛用于网站开发.微信服务器和开发者的服务器间有两种数据传输方式,分别是XML和JSON.其中XML主要用在接受发送普通消息和事件推送中,而用户管理.创建自定义菜单和高级群发等则需要用到JOSN格式数据. 在这篇微信公众平台开发教程中,你可以跟着教程一起在整体上感性了解微信公众平台的开发框架,可以帮助你更好的去入手. 我们将使用微信公众账号西安校园创客空间作

[一车大师]微信公众平台开发入门

由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下. 在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯及XML语言基础.如果你还没有,那么请先学习相关知识. 我们将使用微信公众账号一车大师(账号:yichemaster,关注微信公众号运营和开发的可以搜索公众号yichemaster,或扫描下方二维码关注一车大师)作为讲解的例子. 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公

微信公众平台开发入门教程(PHP从入门到精通)

微信,我的入门之路 主要针对大学生,像我一样曾经迷惘的人 务必看第三章个人体会,会很有用 这一个月的学习经验分享 最后第三章我学习php的入门经验 本人是一个大三的学生,眼看明年就要毕业了.要学点什么?就接触了微信公众号.下面是我开学到现在一个月的学习成果,也是我的入门的经验了吧.(以前我是学习硬件的,这一个月也是摸索到现在.下面是我的入门之路,及遇到问题,我解决问题的经验和技巧吧,希望能帮到那些像我一样的人,也希望和那些人一起成长.)开始吧: 在这篇微信公众平台开发教程中,我们假定你已经有了P

微信公众平台开发入门教程(资源来自网络)

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 了解数据收发原理及消息格式 开发实现微信天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境. 申请

微信公众平台开发入门教程(转自 方倍工作室)

原文地址:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 关键字:微信公众平台开发作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 了解数据收发原理及消息格式 开发实现微信天气预报功能

微信公众平台开发入门

 随着微信的迅猛发展,现在微信公众号开发已经越来越流行了!本文介绍微信公众号的一些入门知识及账号的注册! 我们要学习微信公众号的开发,先要去微信公众平台注册一个账号,需要的技术基础有PHP.MySQL.Json.CSS.JavaScript...,不过微信公众号的开发对这些技术要求不是特别的高,不会也没关系,懂得网络搜索也可以! 微信平台有2个: ? 一是公众平台.官网地址: https://mp.weixin.qq.com.主要接入微信开放平台 公众账号开发,提供类似于轻应用的服务.也是

微信公众平台开发入门教程(2)接口配置

开发模式:1. 简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动.微信公众平台分订阅号和服务号.企业号三类平台,利用公众账号平台进行自媒体活动,简单来说就是进行一对多的媒体性行为活动,如商家通过申请公众微信服务号实现展示商家微官网.微社区.微会员.微推送.微支付.微活动,微报名,微分享.微名片等,还可以实现部分轻应用功能.已经形成了一种主流的线上线下微信互动营销方式. 至2014年开