微信公众号开发完整教程(二) PHP7.0版本,TP5.0框架

标签: 微信公众号开发
9人阅读 评论(0) 收藏 举报
分类:

因为工作的需要,这一两年对微信公众号和小程序,项目制作的比较多。所以我才打算写一篇全面的制作教程,当然了,最好的教程是微信工作平台的文档。我这里只是讲述一下我的工作中的制作流程。所有相关文章的源码,我托管在我自己的github上面,欢迎关注:地址点击打开链接。接下来开始我们的教程。

上述第一节我讲述了开发者模式的开启和简单的获取access_token并缓存,以及简单的测试,这一节我们暂时并不需要使用这个

access_token的参数,大部分先讲述我们的测试代码的那一部分,并完善一下:(其中我会引入百度地图和图灵机器人等技术),因为公司开发的时候使用到这样的技术,所以我就给大家讲述一下:开始:

1.消息的接受:

接受消息时微信会根据用户的内容将消息进行划分。分别有文本消息、图片消息、语言消息、视频、连接等消息。当用户与公众平台产生了消息互动每次消息都会请求自定义的URL地址。在请求的过程中各种参数是使用xml格式传输。接受消息即从微信请求的过程中获取相关的数据。

代码中使用的变量替换,使用了PHP的函数

sprintf

大家可以查阅一下,它的作用无非就是让变量可以依次替换掉。

1.1.接受文本消息:

格式如上:代码如下:文字模板

// 文字模板
$textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
</xml>";

测试的结果大家在第一节已经看到,我再次就不在演示

1.2接受图片消息:


代码如下:

// 图片模板
$picTpl="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Image>
<MediaId><![CDATA[%s]]></MediaId>
</Image>
</xml>";

代码如下:


测试结果为:



1.3:接受语言消息:

模板如下:


代码如下:

}elseif($msgType=="voice"){
$contentStr ="语音消息MediaId为:".$postObj->MediaId.'具体内容为:'.$postObj->Recognition;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,'text', $contentStr);
echo $resultStr;
}

结果如下:上述代码中我们使用了一个:


再附上一张我测试有结果的图:


1.4接受视频消息:

文档如下:


代码如下:

elseif($msgType=="video"){
$contentStr ="视频消息MediaId为:".$postObj->MediaId;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,'text', $contentStr);
echo $resultStr;
}

1.5:接受地理位置:

代码:

elseif($MsgType == 'location'){
            $contentStr = "经度为:".$postObj->Location_Y.'维度'.$postObj->Location_X.'具体地址为:'.$postObj->Label;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);
    file_put_contents('2', $resultStr);
    echo $resultStr;
        }

结果如下:


1.6:接受链接消息:

文档如下:


代码如下:

elseif($MsgType == 'link'){
            $contentStr = '消息的标题为'.$postObj->Title;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);
    file_put_contents('2', $resultStr);
    echo $resultStr;
        }

结果如下:


上述几种情况都是使用的text模板接受的消息。设置微信回复的内容。接下来我们对回复内容的格式进行丰富:

2.消息的回复:

2.1回复文本消息:

格式如下:

代码如下:


2.2:回复图片的消息:

代码如下:



结果如下:


2.3回复语音的消息:

模板:

$voiceTpl="<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Voice>
        <MediaId><![CDATA[%s]]></MediaId>
    </Voice>
    </xml>";

回复代码:

elseif($keyword == '语音'){
                // 关于此MediaId需要从素材库中获得,没有可以临时使用消息返回的媒体ID
                $MediaId = '3XlXZ4-r2OTNYTFAkcmpWv4QjWtwg_15B4PytQJVwOAwHpOfc38mGZTSDkDXx9po';
                $resultStr = sprintf($voiceTpl, $fromUsername, $toUsername, $time, 'voice',$MediaId);
         echo $resultStr;
            }

结果如下:


2.4:回复视频的消息:

模板如下:


在线调试接口上传视频素材:



视频模板:

$VideoTpl="<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Video>
        <MediaId><![CDATA[%s]]></MediaId>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
    </Video>
    </xml>";

回复代码如下:

elseif($keyword=="视频"){
//关于此MediaId需要从素材库中获得,没有可以使用临时消息返回的媒体id
$MediaId="xxMyAoPbUt1u3q5Z95xrhafNzyvL3Tg08E-9Ub2m6db_Elj4XAJHr2pUOqLhREyB";
$Title = $Description ="视频还是好看的";
$resultStr = sprintf($VideoTpl, $fromUsername, $toUsername, $time, 'video', $MediaId, $Title,$Description);
echo $resultStr;
}

结果如下:


2.5:回复图文消息:

文档信息:

图文模板:

// 图文模板
$newsTpc="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>%d</ArticleCount>
<Articles>%s</Articles>
</xml>";

回复代码:

elseif($keyword=="图文"){
$data = array(
array('Title'=>'图文消息','Description'=>'效果好像还不错啊','PicUrl'=>'http://mmbiz.qpic.cn/mmbiz_jpg/E3TENE8JsTAqus3ic5qEtt4wl14ibBu4UaobarzTVOP18Awt83hkZM0aI9XStapN4xay6JI4lfm0H7QnKSfxQyVA/0','Url'=>'http://xiaomi.com')
);
file_put_contents('2',$data[0]['Title']);
for ($i=0; $i <count($data); $i++) {
$Articles .="<item>
<Title><![CDATA[{$data[$i]['Title']}]]></Title>
<Description><![CDATA[{$data[$i]['Description']}]]></Description>
<PicUrl><![CDATA[{$data[$i]['PicUrl']}]]></PicUrl>
<Url><![CDATA[{$data[$i]['Url']}]]></Url>
</item>";
}
$count = count($data);
$resultStr = sprintf($newsTpc, $fromUsername, $toUsername, $time, 'news',$count,$Articles);
echo $resultStr;
}

结果如下:


到此为止我们对所有的接受和回复的代码进行的书写和演示,所有的源码我会放在我的github上面,大家可以下载和关注,这一节到此为止,下一节开始使用我们的access_token开始我们的自定义菜单。

查看评论

TP5框架初步认识微信公众号

            一 、初步认识微信公众号查看微信指南:https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;id=mp142113...
  • awake720
  • awake720
  • 2018年03月05日 16:17
  • 119

微信公众号分享php代码(tp5)

public function ticket(){ if(request() -> isAjax()){ //包装curl的方法 fu...
  • Revival_Liang
  • Revival_Liang
  • 2017年10月09日 18:04
  • 310

微信公众号 几种移动端UI框架介绍

微信公众号 几种移动端UI框架介绍 微信公众号开发,主要是移动端网页的页面开发,在这里推荐3个移动端UI框架:WeUI、SUI和Mint UI。 1. WeUI 1.1 We...
  • e_wsq
  • e_wsq
  • 2017年04月05日 14:19
  • 4644

半小时学会微信公众平台开发(完整版教程)

半小时学会微信公众号开发: 图文并茂教程
  • dobingT001
  • dobingT001
  • 2015年10月13日 14:55
  • 6223

微信公众号开发,原来这么简单?[java框架]

可能你不知道,有个框架叫wx-tools(小心翼翼地说) Wx-tools是基于微信公众平台API的轻量级框架。 基于Wx-tools你可以开速开发一个订阅号/服务号的web应用后台。 博主...
  • antgan
  • antgan
  • 2016年12月15日 22:13
  • 55281

微信公众号 全套免费 mx7f 教程视频 百度网盘

微信公众号 全套免费 教程视频   https://pan.baidu.com/s/1mhEUQpi  密码: 请评论留言,自动回复...
  • mr_jianrong
  • mr_jianrong
  • 2017年05月29日 23:54
  • 3556

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

2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制、临时有事等原因,...
  • lyq8479
  • lyq8479
  • 2014年04月30日 16:07
  • 68703

C#微信公众号开发系列教程二(新手接入指南)

此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽。 目录 C#微信公众号开发系列教程一(调试环境部...
  • CsharpDonet
  • CsharpDonet
  • 2014年12月16日 10:59
  • 1974

微信公众号第三方平台开发PYTHON教程 PART 6

在讲之前,我需要先去更新一下我刚才写教程的一个缺陷。 当然在本节之前,你需要先阅读前面几节的内容: 微信公众号第三方平台开发python教程 Part 1 微信公众号第三方平台开发python教程 ...
  • lktse
  • lktse
  • 2016年05月17日 19:22
  • 835

教你3分钟快速开发微信公众号[订阅号][服务号]

java微信公众号开发框架 微信开发框架 快速开发
  • antgan
  • antgan
  • 2016年06月20日 00:48
  • 15341
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 3万+
    积分: 1268
    排名: 4万+
    博客专栏
    最新评论