【微信公众平台开发】封装获取天气预报功能

微信公众平台小功能多点,可以增加用户的粘性,不会感觉你微信没内容,就把你给取消关注了。所以得折腾各种有的没的东西。

个人封装天气预报功能代码如下(说明下:网上有很多此类代码,但是要自己理解,就得实际折腾)

<?php
header('Content-Type:text/html;charset=utf-8');
class WeChatMsgType
{
	private  $toUserName;
	private  $fromUserName;
	private  $xmlModle;
	private  $createTime;

	public function SetUserInfo($toUserName,$fromUserName) //设置用户信息
	{
		$this->toUserName = $toUserName;
		$this->fromUserName = $fromUserName;
		$this->createTime = time();
	}

	public function WeatherMsg($cityName)	//天气预报信息
	{
		$url = "http://api.map.baidu.com/telematics/v3/weather?location=".$cityName."&output=json&ak=11ffd27d38deda622f51c9d314d46b17";
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$output = curl_exec($ch);
		curl_close($ch);
		$result = json_decode($output, true);
		if ($result["error"] != 0){
			return $result["status"];
		}
		$curHour = (int)date('H',time());

		$weather = $result["results"][0];

		$ImageTexts = array();

		$ImageTexts[0] = self::SetImageTextInfo($weather['currentCity'].'天气预报',"", "", "");
		//$aa=var_export(urldecode(urlencode($weather)),true);
		//file_put_contents("debug.txt", date("Y-m-d H:i:s",time()).$aa.PHP_EOL,FILE_APPEND);
		for($i=0; $i<count($weather['weather_data']); $i++)
		{
			$ImageTexts[$i+1] = self::SetImageTextInfo($weather["weather_data"][$i]["date"]."\n".
            $weather["weather_data"][$i]["weather"]." ".
            $weather["weather_data"][$i]["wind"]." ".
            $weather["weather_data"][$i]["temperature"],
					"", (($curHour >= 6) && ($curHour < 18))?$weather["weather_data"][$i]["dayPictureUrl"]:$weather["weather_data"][$i]["nightPictureUrl"], "");
		}

		return self::ImageTextMsg($ImageTexts);
	}

	public function SetImageTextInfo($sTitle, $sDescription, $sPicUrl, $Url)
	{
		$item = "<item>
				<Title><![CDATA[%s]]></Title>
				<Description><![CDATA[%s]]></Description>
				<PicUrl><![CDATA[%s]]></PicUrl>
				<Url><![CDATA[%s]]></Url>
				</item>
				";
		$ret=sprintf($item, $sTitle, $sDescription, $sPicUrl,$Url);
		return $ret;
	}

	public function ImageTextMsg($ImageTexts)
	{
		$this->xmlModle = "<xml>
				<ToUserName><![CDATA[%s]]></ToUserName>
				<FromUserName><![CDATA[%s]]></FromUserName>
				<CreateTime>%s</CreateTime>
				<MsgType><![CDATA[news]]></MsgType>
				<ArticleCount>%d</ArticleCount>
				<Articles>
				";
		foreach ($ImageTexts as $item)
		{
			$this->xmlModle = $this->xmlModle.$item;
		}
		$this->xmlModle = $this->xmlModle."</Articles></xml>" ;

		$ret=sprintf($this->xmlModle, $this->fromUserName, $this->toUserName, $this->createTime,count($ImageTexts));
		return $ret;
	}
}
?>

调用用法:

$weChatMsgType = new WeChatMsgType();
$weChatMsgType->SetUserInfo($this->toUserName, $this->fromUserName);
$resultStr=$weChatMsgType->WeatherMsg("北京");

注:上面ak同百度周边搜索篇说明一样,不懂看前面

【微信公众平台开发】封装获取天气预报功能,布布扣,bubuko.com

时间: 2024-08-24 15:24:55

【微信公众平台开发】封装获取天气预报功能的相关文章

微信公众平台开发(85) 获取用户地理位置

本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现. 推送XML数据包示例: <xml> <ToUserName><![CDATA[t

微信公众平台开发(86) 获取用户基本信息

本文介绍在微信公众平台上如何使用高级接口开发获取用户基本信息的功能. 一.获取用户基本信息接口 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 获取用户基本信息 开发者可通过OpenID来获取用户基本信息.请使用https协议. 接口调用请求说明 http请求方式: GE

微信公众平台开发(96) 多个功能整合

思路: 通过用户发送的关键字判断的方式来判断功能,再调用回复相应的内容.当一个功能不匹配的时候,则进入下一个功能判断. 程序示例如下: 1 //接收文本消息 2 private function receiveText($object) 3 { 4 $keyword = trim($object->Content); 5 if (strstr($keyword, "天气")){ 6 $city = str_replace('天气', '', $keyword); 7 includ

微信公众平台开发-access_token获取及应用(含源码)

微信公众平台开发-access_token获取及应用(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 很多系统中都有access_token参数,对于微信公众平台的access_token参数,微信服务器判断该公众平台所拥有的权限,允许或者禁止公众平台进行当前的操作. 一.access_token作用及使用场景 (一)access_token的作用 access_token由公众号的AppID和AppSecret组成,所以具有识别公众号的作用. (二)access_token的使用场景

***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

微信公众平台开发(76) 获取用户基本信息

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

微信公众平台开发(27) 功能整合

原文:http://www.cnblogs.com/imaker/p/5491433.html 一.简介 在前面的几篇微信功能开发文档中,各个微信的功能都是独立的,单一微信只能提供一种功能,这样不符合大众开发者和客户的需求.所以在这一篇文章中,我们将对前面开发出来的微信功能进行简单整合,以供读者参考. 二.思路分析 一种简单的做法是,截取关键字,然后进行判断,执行相应功能代码.这种做法比较适合功能不多,简单的微信:另一种做法是,给各功能编号,然后记录用户选择的功能状态,用户每次查询的时候,首先判

微信公众平台开发(89) 高级群发接口

在这篇微信公众平台高级接口开发教程中,我们将介绍如何开发高级群发接口功能. 本文分为以下四个部分: 准备群发内容 选择群发对象 执行群发 接收群发结果 一.准备群发内容 群发内容可以是文本.图片.语音.视频.图文.群发文本只需要文本内容,其他内容需要获得相应的media_id. 1. 文本内容 文本内容就是一段文字,比如:"微信公众平台开发最佳实践" 2. 图片.语音.视频 要求如下: ? 图片(image): 128K,支持JPG格式 ? 语音(voice):256K,播放长度不超过

微信公众平台开发教程--方培工作室,PHP语言版本

准备工作 微信公众平台的注册 介绍如何注册一个微信公众账号. 入门教程 微信公众平台开发入门教程 内容:1.申请SAE作为服务器; 2.启用开发模式; 3.微信公众平台PHP SDK; 4.接收发送消息类型解析; 5.微信公众平台开发模式原理; 6.快速开发天气预报功能. 入门教程是下面所有教程的基础. 基础接口 微信公众平台开发(2) 天气预报 介绍了使用中国天气网气象数据,实现微信上的天气预报功能. 微信公众平台开发(3) 中英翻译 介绍了使用有道翻译的接口,在微信公众平台上,开发中英互译的

微信公众平台开发文摘

微信公众平台消息接口开发(1)启用接口 微信公众平台自定义菜单接口开发(1) 微信公众平台消息接口开发(3)中英翻译 微信公众平台开发(4)天气预报 微信公众平台消息接口开发(5)股票查询 微信公众平台消息接口开发(6)电话号码链接与网址链接 微信公众平台消息接口开发(7)快递查询 微信公众平台消息接口开发(8)小黄鸡(小贱鸡)机器人 微信公众平台消息接口开发(9)骑行西藏自定义菜单 微信公众平台消息接口开发(10)语音触发(非识别) 微信公众平台消息接口开发(11)地理位置查询附近商家 微信公