微信大众,平台开辟(三) 订阅事务(subscribe)处理惩罚
添加时间:2013-6-25 点击量:
一、简介
新用户存眷微信大众,平台,将产生一个订阅事务,即subscribe事务,默认代码中没有对这一事务进行响应答复处理惩罚。
在新用户存眷大众,平台后,可能想知道该平台供给了哪些功能,以及如何应用该平台,通俗一点讲就是该平台的“应用申明书”。
本文将具体讲述对subscribe事务的处理惩罚过程,答复响应信息提拔交互性。
二、思路解析
微信今朝供给了五种消息类型,分别为:
- 文本消息(text);
- 消息(image);
- 地理地位消息(location);
- 链接消息(link);
- 事务推送(event);
接管到消息后,起首须要对消息类型做出断定,然后再针对不合类型的消息做出处理惩罚。在事务推送中,事务类型又分为三种,subscribe(订阅)、unsubscribe(作废订阅)、CLICK(自定义菜单点击事务),还须要再加一次断定;断定为subscribe事务后,按照设定好的迎接消息,答复给用户。
三、断定消息类型
¥postObj = simplexml_load_string(¥postStr, SimpleXMLElement, LIBXML_NOCDATA);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
申明:
¥RX_TYPE = trim(¥postObj->MsgType); 获得消息类型;
case text:
¥resultStr = ¥this->handleText(¥postObj); 应用handleText() 函数处理惩罚文本消息;
case event:
¥resultStr = ¥this->handleEvent(¥postObj); 应用handleEvent() 函数处理惩罚事务推送;
四、断定事务类型
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
申明:
若是是subscribe事务,设定答复内容为“感激您存眷【卓锦姑苏】...”;
五、完全代码
<?php
/
wechat php test
/
//define your token
define(TOKEN, zhuojin);
¥wechatObj = new wechatCallbackapiTest();
¥wechatObj->responseMsg();
//¥wechatObj->valid();
class wechatCallbackapiTest
{
/public function valid()
{
¥echoStr = ¥_GET[echostr];
//valid signature , option
if(¥this->checkSignature()){
echo ¥echoStr;
exit;
}
}/
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);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
echo ¥resultStr;
}else {
echo ;
exit;
}
}
public function handleText(¥postObj)
{
¥Username = ¥postObj->FromUserName;
¥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>;
if(!empty( ¥keyword ))
{
¥msgType = text;
¥contentStr = Welcome to wechat world!;
¥resultStr = sprintf(¥textTpl, ¥Username, ¥toUsername, ¥time, ¥msgType, ¥contentStr);
echo ¥resultStr;
}else{
echo Input something...;
}
}
public function handleEvent(¥object)
{
¥contentStr = ;
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
¥resultStr = ¥this->responseText(¥object, ¥contentStr);
return ¥resultStr;
}
public function responseText(¥object, ¥content, ¥flag=0)
{
¥textTpl = <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>;
¥resultStr = sprintf(¥textTpl, ¥object->FromUserName, ¥object->ToUserName, time(), ¥content, ¥flag);
return ¥resultStr;
}
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;
}
}
}
?>
六、存眷
请存眷 卓锦姑苏 微信大众,帐号,卓锦姑苏 基于SAE 平台开辟,针对于主流的微信功能进行开辟测试。
您可以存眷 卓锦姑苏 大众,帐号进行功能测试,以及获取新的应用开辟。
1. 登录微信客户端,伴侣们 -> 添加伴侣 -> 搜号码 -> zhuojinsz,查找并存眷。
2. 扫描二维码:
卓锦姑苏 功能列表。
David Camp
- 技巧交换,请加QQ群:213260412
- 营业合作,请接洽作者QQ:562866602
Great People Share Knowledge...
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永
一、简介
新用户存眷微信大众,平台,将产生一个订阅事务,即subscribe事务,默认代码中没有对这一事务进行响应答复处理惩罚。
在新用户存眷大众,平台后,可能想知道该平台供给了哪些功能,以及如何应用该平台,通俗一点讲就是该平台的“应用申明书”。
本文将具体讲述对subscribe事务的处理惩罚过程,答复响应信息提拔交互性。
二、思路解析
微信今朝供给了五种消息类型,分别为:
- 文本消息(text);
- 消息(image);
- 地理地位消息(location);
- 链接消息(link);
- 事务推送(event);
接管到消息后,起首须要对消息类型做出断定,然后再针对不合类型的消息做出处理惩罚。在事务推送中,事务类型又分为三种,subscribe(订阅)、unsubscribe(作废订阅)、CLICK(自定义菜单点击事务),还须要再加一次断定;断定为subscribe事务后,按照设定好的迎接消息,答复给用户。
三、断定消息类型
¥postObj = simplexml_load_string(¥postStr, SimpleXMLElement, LIBXML_NOCDATA);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
申明:
¥RX_TYPE = trim(¥postObj->MsgType); 获得消息类型;
case text:
¥resultStr = ¥this->handleText(¥postObj); 应用handleText() 函数处理惩罚文本消息;
case event:
¥resultStr = ¥this->handleEvent(¥postObj); 应用handleEvent() 函数处理惩罚事务推送;
四、断定事务类型
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
申明:
若是是subscribe事务,设定答复内容为“感激您存眷【卓锦姑苏】...”;
五、完全代码
<?php
/
wechat php test
/
//define your token
define(TOKEN, zhuojin);
¥wechatObj = new wechatCallbackapiTest();
¥wechatObj->responseMsg();
//¥wechatObj->valid();
class wechatCallbackapiTest
{
/public function valid()
{
¥echoStr = ¥_GET[echostr];
//valid signature , option
if(¥this->checkSignature()){
echo ¥echoStr;
exit;
}
}/
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);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
echo ¥resultStr;
}else {
echo ;
exit;
}
}
public function handleText(¥postObj)
{
¥Username = ¥postObj->FromUserName;
¥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>;
if(!empty( ¥keyword ))
{
¥msgType = text;
¥contentStr = Welcome to wechat world!;
¥resultStr = sprintf(¥textTpl, ¥Username, ¥toUsername, ¥time, ¥msgType, ¥contentStr);
echo ¥resultStr;
}else{
echo Input something...;
}
}
public function handleEvent(¥object)
{
¥contentStr = ;
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
¥resultStr = ¥this->responseText(¥object, ¥contentStr);
return ¥resultStr;
}
public function responseText(¥object, ¥content, ¥flag=0)
{
¥textTpl = <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>;
¥resultStr = sprintf(¥textTpl, ¥object->FromUserName, ¥object->ToUserName, time(), ¥content, ¥flag);
return ¥resultStr;
}
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;
}
}
}
?>
六、存眷
请存眷 卓锦姑苏 微信大众,帐号,卓锦姑苏 基于SAE 平台开辟,针对于主流的微信功能进行开辟测试。
您可以存眷 卓锦姑苏 大众,帐号进行功能测试,以及获取新的应用开辟。
1. 登录微信客户端,伴侣们 -> 添加伴侣 -> 搜号码 -> zhuojinsz,查找并存眷。
2. 扫描二维码:
卓锦姑苏 功能列表。
David Camp
- 技巧交换,请加QQ群:213260412
- 营业合作,请接洽作者QQ:562866602
Great People Share Knowledge...
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永