微信公众号最佳实践 ( 8.2)星座运势
星座运势
星座运势根据一个人出生日期(阳历)所属的星座,来判定该星座在每一个时间段(一般为日,周,月,年等)发生事情的吉凶。
星座运势–手机新浪网
手机新浪网提供星座运势查询服务,地址如下:
http://astro.sina.cn/fortune/starent
实际查询页面的一个地址如下:
http://astro.sina.cn/fortune/starent?type=day&ast=1&vt=4
开发实现
根据上述接口,开发一个根据星座名查询运势的功能,相应代码如下:
astrology.php函数方法代码如下:
<?php//var_dump(getAstrologyInfo("巨蟹座"));function getAstrologyInfo($entity)
{$capitals = array('白羊座' => '1','金牛座' => '2','双子座' => '3','巨蟹座' => '4','狮子座' => '5','处女座' => '6','天秤座' => '7','天蝎座' => '8','射手座' => '9','摩羯座' => '10','水瓶座' => '11','双鱼座' => '12');if (!array_key_exists($entity, $capitals)){return "星座名只有以下这些:\n白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座 摩羯座 水瓶座 双鱼座";}$astrologyArray[] = array("Title" =>$entity."运势", "Description" =>"", "PicUrl" =>"http://pic14.nipic.com/20110519/2457331_223610757000_2.jpg", "Url" =>"http://astro.sina.cn/fortune/starent?type=day&ast=".$capitals[$entity]."&vt=4");return $astrologyArray;
}?>
index.php整体代码如下所示:
<?phpdefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {$wechatObj->responseMsg();
}else{$wechatObj->valid();
}
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 "event":$resultStr = $this->receiveEvent($postObj);break;default:$resultStr = "";break;}echo $resultStr;}else {echo "";exit;}}private function receiveText($object){$keyword = trim($object->Content);$resultStr = "";$contentStr = "";include("astrology.php");$contentStr = getAstrologyInfo($keyword);$resultStr = $this->transmitNews($object, $contentStr);return $resultStr;}private function receiveEvent($object){$contentStr = "";switch ($object->Event){case "subscribe":$contentStr = "欢迎关注,发送星座名查询星座运势";}$resultStr = $this->transmitText($object, $contentStr);return $resultStr;}private function transmitText($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 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>";$result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item));return $result;}}?>
微信公众号最佳实践 ( 8.2)星座运势相关推荐
- 微信公众号最佳实践 ( 10.2)回复QQ表情和Emoji表情
回复QQ表情和Emoji表情 微信的的文字发送方有一个笑脸表情等表情符,单击该表情后,我们可以发送这些表情,这些表情包括QQ表情和Emoji表情(也叫符号表情) 如图示: 微信用户和微信公众号都能直接 ...
- 微信公众号最佳实践 ( 4.7)获取用户地理位置
开通了上报地理位置接口的微信公众号,在用户关注并进入微信公众号回话时,会弹框让用户确认是否允许微信公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在微信公众号详情页面进行操作. 本章代码还需 ...
- 微信公众号最佳实践 ( 8.8)智能聊天机器人
智能聊天机器人 小i机器人,是上海至臻网络科技有限公司开发的智能机器人产品,是全球用户量最大的中文聊天机器人.该机器人,能查询新闻.地图.餐饮.机票等各类生活资讯. iBotCloud iBotClo ...
- 微信公众号最佳实践 ( 4.3)语音识别
4.3.1 接取识别结果 开通语音识别功能以后,用户每次发送语音给微信公众号,微信会在推送语音消息XML数据包中添加一个Recongnition字段,该字段为语音识别出的文本内容. 注:由于客户端缓存 ...
- 微信公众号最佳实践 ( 3.2) 被动回复用户消息
'公众号' 被动回复 "用户" 发送的六种类型的消息 其中图文可分为'单图文'和'多图文' 回复文本消息 回复图片消息 回复语音消息 回复视频消息 回复音乐消息 回复图文消息 请注 ...
- 微信公众号最佳实践 ( 4.4)客服接口
当用户和公众号产生特定动作的交互时(具体动作请见下方列表),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户 ...
- 微信公众号最佳实践 ( 9.1)会员卡
会员卡 会员卡一般是指企业发行的用于识别顾客身份的卡片,普片用于服务行业,他是公司宣传的理想载体,能够吸引新顾客,留住老顾客,增强顾客忠诚度的作用,还能实现打折,积分等功能. 页面布局 准备素材,包括 ...
- 微信公众号最佳实践 ( 7.2)交通信息查询
交通信息查询 交通信息是是属于公共信息,已经有很多大型网站提供了响应的查询和查看功能,但是这些信息的后台数据往往并不对外开放,一是因为获取成本高,二是怕添加一个新的竞争对手,但好在很多第三方网站提供了 ...
- 微信公众号最佳实践 ( 8.7)一站到底
一站到底 <一站到底>是一个益智答题类节目.趣味十足,在挑战中挖掘个性. 实现方案 首先,我们需要有一个题库,用户答题的内容均从题库中获取. 该题库SQL语句如下: -- -- 表的结构 ...
最新文章
- 【 C 】assert.h 简明介绍
- arthas 排查内存溢出_小学妹问我:如何利用可视化工具排查问题?
- CDH-5.7.1离线安装
- Spring Boot + Vue 前后端分离开发,权限管理的一点思路
- ABAP web service schema node的处理
- 本地虚拟机上的docker安装mysql_Linux虚拟机上安装docker,并使用docker安装mysql,tomcat...
- python快递费用计算_[Python]简单用Python写个查询快递的程序最后附源代码
- 赛锐信息:SAP之工厂设置
- 最近发现一个爬虫开源项目weixin_crawler
- LAMP环境搭建教程
- Pulseaudio调用alsalib open()流程(十五)
- 发牌游戏 java_解析扑克牌游戏发牌算法——java实现
- 使用Gradle编译Java项目
- java 车牌号正则_最新车牌号码(包括新能源车牌)正则表达式
- window10_vs2015安装教程
- catia怎么创建约束快捷键_CATIA怎么设置快捷键?
- Hash冲突解决方法
- 机器人潘森护盾_新版潘森无伤抗塔 还能抵消死歌大招?E技能护盾机制全解析...
- 企业微信 发送或接收 图片失败,怎么办?
- Python 自动化办公 —— PyPDF2 库的基本使用