最近微信公共账号很火
一、注册
去https://mp.weixin.qq.com/申请注册一个公共账号
根据提示一步一步将各种信息完整(官方客服问答:http://kf.qq.com/faq/120911VrYVrA130619v6zaAn.html)
二、账号类型
公共账号类型有两种:订阅号与服务号(详细区别见:http://kf.qq.com/faq/120911VrYVrA130805byM32u.html)
订阅号:为媒体和个人提供一种新的信息传播方式,构建与读者之间更好的沟通与管理模式。
服务号:给企业和组织提供更强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台。
主要区别:
1、服务号可以申请自定义菜单,而订阅号不能;
2、服务号每月只能群发一条信息,订阅号可以每天群发一条消息;
3、服务号群发的消息有消息提醒,订阅号群发的消息没有,并直接放入订阅号文件夹当中;
三、功能
1、群发功能:每月可手动群发一条信息(可图可文可语音视频)
2、高级功能:分为两类:编辑模式、开发模式(只可启用一种)
(a)编辑模式:指所有的公众号运营者都可以通过简单的编辑,设置“按关键字回复”等功能。您可以设定常用的文字/语言/图片/录音作为回复消息,并制定自动回复的规则。当订阅用户的行为符合自动回复规则的时候,就会收到自动回复的消息。
(b)开发模式:为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。
tip:微信公众平台编辑模式和开发模式互相切换后对原保存在内容不会做更改的,原来保存的内容是不会丢失的。
四、模式开发配置
1、服务器配置(用于接收用户信息)
需要绑定接受消息的URL与自定义的Token。
2、开发者凭据(用于)
只有服务号与通过微信认证的才会有AppId、AppSecre;
用于获取access_token。
具备以上2项,就可以自行开发。官方也有在线接口测试(http://mp.weixin.qq.com/debug)
tip:在线测试的所有操作皆会真实影响账号
3、下载sample
在 http://mp.weixin.qq.com/wiki/index.php?title=接入指南 连接中找到“PHP示例代码下载:下载”
将官方sample下载下来并且置于之前设置的URL的路径下(URL:http://www...../sample.php)
文件名可任意更改,只要与URL匹配就好;
五、代码讲解
1、验证
- define("TOKEN", "weixin");//此处“weixin”改成在官网中自定义填写的Token
- $wechatObj = new wechatCallbackapiTest();
- $wechatObj->valid();//验证方法,仅第一次验证时使用,成功验证后注释掉
- //$wechatObj->responseMsg (); // 添加这句,验证成功后取消注释。此方法用于接收数据与发送数据
2、接收数据
- public function responseMsg()
- {
- //get post data, May be due to the different environments
- $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
- //extract post data
- if (!empty($postStr)){
- $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
- $fromUsername = $postObj->FromUserName; //获取发送者账号(OpenID)
- $toUsername = $postObj->ToUserName; //获取接受者账号
- $keyword = trim($postObj->Content); //获取发送者发出的字符
- $time = time(); //获取当前时间
- $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>"; //此为文本回复的模板,可参照官网(皆为xml)
- if(!empty( $keyword ))//无论发什么,只要不为空
- {
- $msgType = "text"; //类型为文本回复
- $contentStr = "Welcome to wechat world!";//发送内容
- $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);//除了第一个参数外,剩下每个参数对应着$textTpl中每个%s
- echo $resultStr;
- }else{
- echo "Input something...";
- }
- }else {
- echo "";
- exit;
- }
- }
在接收数据时,亦可再添加几句
- $msgType = $postObj->MsgType;
- $event = $postObj->Event;
- $eventKey = $postObj->EventKey;
(a)普通类型$msgType为(文本text、图片image、语音voice、视频video、地理位置location、连接ink)
(b)事件推送$msgType为event。
事件推送需根据$event再分类:
subscribe(订阅)、unsubscribe(取消订阅)、ticket(二维码,已关注为SCAN、为关注为subscribe)、LOCATION(地理位置)、CLICK(菜单点击事件:事件KEY值与自定义菜单接口中KEY值对应)、VIEW(菜单点击事件:事件KEY值为设置的跳转URL)
4、回复模板(http://mp.weixin.qq.com/wiki/index.php?title=发送被动响应消息)
1) 回复文本消息
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[text]]></MsgType>
- <Content><![CDATA[你好]]></Content>
- </xml>
2 )回复图片消息
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[image]]></MsgType>
- <Image>
- <MediaId><![CDATA[media_id]]></MediaId>
- </Image>
- </xml>
3 )回复语音消息
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[voice]]></MsgType>
- <Voice>
- <MediaId><![CDATA[media_id]]></MediaId>
- </Voice>
- </xml>
4 )回复视频消息
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[video]]></MsgType>
- <Video>
- <MediaId><![CDATA[media_id]]></MediaId>
- <Title><![CDATA[title]]></Title>
- <Description><![CDATA[description]]></Description>
- </Video>
- </xml>
5 )回复音乐消息
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[music]]></MsgType>
- <Music>
- <Title><![CDATA[TITLE]]></Title>
- <Description><![CDATA[DESCRIPTION]]></Description>
- <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
- <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
- <ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>
- </Music>
- </xml>
6 )回复图文消息(第一个item为大图模式,item个数上线为10)
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[fromUser]]></FromUserName>
- <CreateTime>12345678</CreateTime>
- <MsgType><![CDATA[news]]></MsgType>
- <ArticleCount>2</ArticleCount>
- <Articles>
- <item>
- <Title><![CDATA[title1]]></Title>
- <Description><![CDATA[description1]]></Description>
- <PicUrl><![CDATA[picurl]]></PicUrl>
- <Url><![CDATA[url]]></Url>
- </item>
- <item>
- <Title><![CDATA[title]]></Title>
- <Description><![CDATA[description]]></Description>
- <PicUrl><![CDATA[picurl]]></PicUrl>
- <Url><![CDATA[url]]></Url>
- </item>
- </Articles>
- </xml>