微信公众平台开发笔记(三)

这次我分享的笔记主要是一些细小的功能点的实现。

首先我画了一个图解释了我做的思路,如何处理收到text文本消息。

-----------------------------------------------------------------------------------------------------------------------------------------------------------

针对这里可能使用缓存会比较好,但是百度云账号的缓存要收费。

------------------------------------------------------------------------------------------------------------------------------------------------------------------

首先我们接着上面用户刚订阅你们消息的时候返回消息的处理,效果如下


private function receiveEvent($object)
    {
    	$contentStr = "";
        switch($object -> Event)
        {
//注意这里是订阅消息微信给你提供的定义的事件
        case "subscribe":
            //关注後自动推送消息
            $contentStr = '感谢您的关注/::)
快递查询请#加上快递名称前两个汉字,加单号,如#申通123456789
图书馆查询,请#加书名,如#node开发指南
天气查询,点下面加符号,发送地址位置即可。';
            break;
        }
//返回消息到模板
    	$resultStr = $this -> transmitText($object, $contentStr);
    	return $resultStr;
    }

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

第二我接着我上次那个用户发送地理位置信息然后返回天气的处理。


	private function receiveLocation($object)
    {
			$funcFlag = 0;
//获取经纬度,详情可以参考百度地图APi
			$latitude = $object->Location_X;
          	$longitude = $object->Location_Y;
    		$contentStr = "";
			$resultStr = "";

			$weatherUrl = "http://api.map.baidu.com/telematics/v2/weather?location={$longitude},{$latitude}&output=xml&ak=CC56cc354df507bfd5fe907241cfb68e";
//下面的数据就是根据XML数据的格式来进行判断和获取
			$weatherApiStr = file_get_contents($weatherUrl);
			$weatherApiObj = simplexml_load_string($weatherApiStr);
			$placeObj = $weatherApiObj->currentCity; //读取城市
			$todaydata = $weatherApiObj->results->result[0]->data;
			$todayweather = $weatherApiObj->results->result[0]->weather;
			$todaywind = $weatherApiObj->results->result[0]->wind;
			$todaytemperature = $weatherApiObj->results->result[0]->temperature;
			//数据以用形参的方式传给模板进行封装。
			$contentStr = "{$placeObj}{$todaydata}天气{$todayweather},风力{$todaywind},温度{$todaytemperature}";
    		$resultStr = $this -> transmitText($object, $contentStr);
    		return $resultStr;
    }

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 接下来我展示下我查询快递,图书。

代码写的效率很差

private function receiveText($object)
    {
      	$fromUsername = trim($object->FromUserName);
	    $toUserName = trim($object->ToUserName);
        $funcFlag = 0;
        $keyword = trim($object->Content);//获取消息内容
		$str1 = strtolower($keyword);
//中文字符串的处理
		$str2 = mb_substr($str1,1,20,'utf-8');
//去第一个字符串的#的
		$str3 = substr($str1,0,1);
		$str4 = mb_substr($str1,0,3,'utf-8');
        $resultStr = "";
        $contentStr = "";
        //返回数据
        //设置回复关键词18
        if
        ($str3 == "#")
        {
			$strkuaidiType = mb_substr($str1,1,2,'utf-8');
			$strkuadiNumber = mb_substr($str1,3,20,'utf-8');

			switch($str4)
			{
			  case "#申通":
            $kuadiUrl = "http://www.aikuaidi.cn/rest/?key=2ef070342b7b4cd2b9fc1fd401c013ff&order={$strkuadiNumber}&id=shentong&show=xml";
			$kuaidiStr = file_get_contents($kuadiUrl);
            $kuaidiObj = simplexml_load_string($kuaidiStr);
			foreach($kuaidiObj->Data->Order as $a)
			{
				foreach($a->Time as $b)
				{
					foreach($a->Content as $c)
					{
						$m.="{$b}{$c}";
					}	
				}
            }
			  $contentStr = "你的{$strkuaidiType}快递,单号为{$strkuadiNumber}{$m}";
			  break;
			  case "#圆通":
              $kuadiUrl = "http://www.aikuaidi.cn/rest/?key=2ef070342b7b4cd2b9fc1fd401c013ff&order={$strkuadiNumber}&id=yuantong&show=xml";
			  $kuaidiStr = file_get_contents($kuadiUrl);
              $kuaidiObj = simplexml_load_string($kuaidiStr);
			foreach($kuaidiObj->Data->Order as $a)
			{
				foreach($a->Time as $b)
				{
					foreach($a->Content as $c)
					{
						$m1.="{$b}{$c}";
					}	
				}
            }
			  $contentStr = "你的{$strkuaidiType}快递,单号为{$strkuadiNumber}{$m1}";
			  break;
			  case "#韵达":
              $kuadiUrl = "http://www.aikuaidi.cn/rest/?key=2ef070342b7b4cd2b9fc1fd401c013ff&order={$strkuadiNumber}&id=yunda&show=xml";
			$kuaidiStr = file_get_contents($kuadiUrl);
            $kuaidiObj = simplexml_load_string($kuaidiStr);
			foreach($kuaidiObj->Data->Order as $a)
			{
				foreach($a->Time as $b)
				{
					foreach($a->Content as $c)
					{
						$m1.="{$b}{$c}";
					}	
				}
            }
			  $contentStr = "你的{$strkuaidiType}快递,单号为{$strkuadiNumber}{$m1}";
			  break;
			  case "#中通":
              $kuadiUrl = "http://www.aikuaidi.cn/rest/?key=2ef070342b7b4cd2b9fc1fd401c013ff&order={$strkuadiNumber}&id={$strkuaidiType}&show=xml";
			$kuaidiStr = file_get_contents($kuadiUrl);
              $kuaidiObj = simplexml_load_string($kuaidiStr);
			foreach($kuaidiObj->Data->Order as $a)
			{
				foreach($a->Time as $b)
				{
					foreach($a->Content as $c)
					{
						$m1.="{$b}{$c}";
					}	
				}
            }
			  $contentStr = "你的{$strkuaidiType}快递,单号为{$strkuadiNumber}{$m1}";
			  break;
			  case "#顺丰":
              $kuadiUrl = "http://www.aikuaidi.cn/rest/?key=2ef070342b7b4cd2b9fc1fd401c013ff&order={$strkuadiNumber}&id=shunfeng&show=xml";
			$kuaidiStr = file_get_contents($kuadiUrl);
              $kuaidiObj = simplexml_load_string($kuaidiStr);
			foreach($kuaidiObj->Data->Order as $a)
			{
				foreach($a->Time as $b)
				{
					foreach($a->Content as $c)
					{
						$m1.="{$b}{$c}";
					}	
				}
            }
			  $contentStr = "你的{$strkuaidiType}快递,单号为{$strkuadiNumber}{$m1}";
			  break;
			  default:
			  $libUrl = "http://opac.niit.edu.cn/opac/search_rss.php?location=ALL&title={$str2}&doctype=ALL&lang_code=ALL&match_flag=forward&displaypg=20&showmode=list&orderby=DESC&sort=CATA_DATE&onlylendable=yes";
			  $libstr = file_get_contents($libUrl);
			  $libObj = simplexml_load_string($libstr);
			//get XML
			  for ($i=0; $i<=5; $i++)
			  {
				$contentStr.="{$libObj->channel->item[$i]->title} {$libObj->channel->item[$i]->link} ";
			  }
			  break;
					  
			}
        $resultStr = $this -> transmitText($object, $contentStr, $funcFlag);
        return $resultStr;
        }
}

 

代码大家看一下我用的是爱快递的API,最后今天就到这了,买了个大水表,累死了。

个人新开的csdn博客:http://blog.csdn.net/qazwsx2345,欢迎支持。

---------------------------------------------------------------------------------------------------------

最后致谢Treey,from  Http://www.gbtags.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值