星座运势

星座运势根据一个人出生日期(阳历)所属的星座,来判定该星座在每一个时间段(一般为日,周,月,年等)发生事情的吉凶。

星座运势–手机新浪网

手机新浪网提供星座运势查询服务,地址如下: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)星座运势相关推荐

  1. 微信公众号最佳实践 ( 10.2)回复QQ表情和Emoji表情

    回复QQ表情和Emoji表情 微信的的文字发送方有一个笑脸表情等表情符,单击该表情后,我们可以发送这些表情,这些表情包括QQ表情和Emoji表情(也叫符号表情) 如图示: 微信用户和微信公众号都能直接 ...

  2. 微信公众号最佳实践 ( 4.7)获取用户地理位置

    开通了上报地理位置接口的微信公众号,在用户关注并进入微信公众号回话时,会弹框让用户确认是否允许微信公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在微信公众号详情页面进行操作. 本章代码还需 ...

  3. 微信公众号最佳实践 ( 8.8)智能聊天机器人

    智能聊天机器人 小i机器人,是上海至臻网络科技有限公司开发的智能机器人产品,是全球用户量最大的中文聊天机器人.该机器人,能查询新闻.地图.餐饮.机票等各类生活资讯. iBotCloud iBotClo ...

  4. 微信公众号最佳实践 ( 4.3)语音识别

    4.3.1 接取识别结果 开通语音识别功能以后,用户每次发送语音给微信公众号,微信会在推送语音消息XML数据包中添加一个Recongnition字段,该字段为语音识别出的文本内容. 注:由于客户端缓存 ...

  5. 微信公众号最佳实践 ( 3.2) 被动回复用户消息

    '公众号' 被动回复 "用户" 发送的六种类型的消息 其中图文可分为'单图文'和'多图文' 回复文本消息 回复图片消息 回复语音消息 回复视频消息 回复音乐消息 回复图文消息 请注 ...

  6. 微信公众号最佳实践 ( 4.4)客服接口

    当用户和公众号产生特定动作的交互时(具体动作请见下方列表),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户 ...

  7. 微信公众号最佳实践 ( 9.1)会员卡

    会员卡 会员卡一般是指企业发行的用于识别顾客身份的卡片,普片用于服务行业,他是公司宣传的理想载体,能够吸引新顾客,留住老顾客,增强顾客忠诚度的作用,还能实现打折,积分等功能. 页面布局 准备素材,包括 ...

  8. 微信公众号最佳实践 ( 7.2)交通信息查询

    交通信息查询 交通信息是是属于公共信息,已经有很多大型网站提供了响应的查询和查看功能,但是这些信息的后台数据往往并不对外开放,一是因为获取成本高,二是怕添加一个新的竞争对手,但好在很多第三方网站提供了 ...

  9. 微信公众号最佳实践 ( 8.7)一站到底

    一站到底 <一站到底>是一个益智答题类节目.趣味十足,在挑战中挖掘个性. 实现方案 首先,我们需要有一个题库,用户答题的内容均从题库中获取. 该题库SQL语句如下: -- -- 表的结构 ...

最新文章

  1. 【 C 】assert.h 简明介绍
  2. arthas 排查内存溢出_小学妹问我:如何利用可视化工具排查问题?
  3. CDH-5.7.1离线安装
  4. Spring Boot + Vue 前后端分离开发,权限管理的一点思路
  5. ABAP web service schema node的处理
  6. 本地虚拟机上的docker安装mysql_Linux虚拟机上安装docker,并使用docker安装mysql,tomcat...
  7. python快递费用计算_[Python]简单用Python写个查询快递的程序最后附源代码
  8. 赛锐信息:SAP之工厂设置
  9. 最近发现一个爬虫开源项目weixin_crawler
  10. LAMP环境搭建教程
  11. Pulseaudio调用alsalib open()流程(十五)
  12. 发牌游戏 java_解析扑克牌游戏发牌算法——java实现
  13. 使用Gradle编译Java项目
  14. java 车牌号正则_最新车牌号码(包括新能源车牌)正则表达式
  15. window10_vs2015安装教程
  16. catia怎么创建约束快捷键_CATIA怎么设置快捷键?
  17. Hash冲突解决方法
  18. 机器人潘森护盾_新版潘森无伤抗塔 还能抵消死歌大招?E技能护盾机制全解析...
  19. 企业微信 发送或接收 图片失败,怎么办?
  20. Python 自动化办公 —— PyPDF2 库的基本使用

热门文章

  1. JM员工福利与健康平台,企业关怀Always Online
  2. SEO(搜索引擎优化)友情链接策略
  3. 洞道干燥及计算机控制实验报告,化工原理洞道干燥实验报告模版
  4. 曲柄滑块机构运动规律
  5. 操作系统与文件与编程语言与python与pycharm的下载
  6. 使用 JavaScript 控制 HTML5 视频播放器
  7. 3D商城是什么样的?
  8. 如何成为快速阅读高手?
  9. 保险业务与系统——LOMA 290 保险公司运营——第五讲——营销活动及营销策略
  10. ganache-cli的安装与使用