找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 557|回复: 0
打印 上一主题 下一主题

php微信开发之百度天气预报

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 05:30:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例为大家分享了php微信百度天气预报的开发代码,供大家参考,具体内容如下
1.登录百度ak申请:http://lbsyun.baidu.com/apiconsole/key

2.实现天气信息功能

baiduWeather.php
$ak,
   'location' => $location,
   'output' => $output
  );

  $querystring = http_build_query($querystring_arrays);
  //生成sn
  $sn = md5(urlencode($uri.'?'.$querystring.$sk));
  $targetUrl = sprintf($url,$ak,urlencode($location),$output,$sn);

  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$targetUrl);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  $result = curl_exec($ch);
  curl_close($ch);
  $result = json_decode($result,true);

  if($result["error"]!=0){
   return $result["status"];
  }

  $curHour = (int)date('H',time());
  $weather = $result["results"][0];
  $weatherArray[]=array("Title"=>$weather['currentCity']."天气预报","Description"=>"","icUrl"=>"","Url"=>"");
  for($i = 0;$i
    $weather["weather_data"][$i]["data"]."\n".
    $weather["weather_data"][$i]["weather"].
    $weather["weather_data"][$i]["wind"].
    $weather["weather_data"][$i]["temperature"],
    "Description"=>"",
    "icUrl"=>(($curHour>=6)&&($curHour""
   );
  }
  return $weatherArray;
}
3.实现天气消息事件
responseMsg();
}else{
$wechatObj->valid();
}

class wechatCallbackapiTest
{
//验证签名
public function valid()
{
  $echoStr = $_GET["echostr"];
  if($this->checkSignature()){
   header('content-type:text');
   echo $echoStr;
   exit;
  }
}

public 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)){
   $this->logger("R ".$postStr);
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
   $RX_TYPE = trim($postObj->MsgType);

   //消息类型分离
   switch ($RX_TYPE)
   {
    case "event":
     $result = $this->receiveEvent($postObj);
     break;
    case "text":
     $result = $this->receiveText($postObj);
     break;
    default:
     $result = "unknown msg type: ".$RX_TYPE;
     break;
   }
   echo $result;
  }else {
   echo "";
   exit;
  }
}

//接收事件消息
public function receiveEvent($object)
{
  $content = "";
  switch ($object->Event)
  {
   case "subscribe":
    $content = "欢迎关注Nicky的公众号 ";
    $content .= (!empty($object->EventKey))?("\n来自二维码场景 ".str_replace("qrscene_","",$object->EventKey)):"";
    break;
   case "unsubscribe":
    $content = "取消关注";
    break;
  }
  $result = $this->transmitText($object, $content);
  return $result;
}

//接收文本消息
public function receiveText($object)
{
  $keyword = trim($object->Content);

  //自动回复模式

  if (strstr($keyword, "天气")){
   $city = str_replace('天气','',$keyword);
   include("baiduweather.php");
   $content = getWeatherInfo($city);
  }
  $result = $this->transmitNews($object, $content);
  return $result;
}

//回复图文消息
public function transmitNews($object, $newsArray)
{
  if(!is_array($newsArray)){
   return;
  }
  $itemTpl = "
   
   
   
  [U][/U]

";
  $item_str = "";
  foreach ($newsArray as $item){
   $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
  }
  $xmlTpl = "


%s

%s

$item_str
";

  $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));
  return $result;
}


//日志记录
public function logger($log_content)
{
  if(isset($_SERVER['HTTP_APPNAME'])){ //SAE
   sae_set_display_errors(false);
   sae_debug($log_content);
   sae_set_display_errors(true);
  }else if($_SERVER['REMOTE_ADDR'] != "127.0.0.1"){ //LOCAL
   $max_size = 10000;
   $log_filename = "log.xml";
   if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
   file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND);
  }
}

}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
            
            
您可能感兴趣的文章:
  • 利用中国天气预报接口实现简单天气预报
  • php使用百度天气接口示例
  • PHP调用API接口实现天气查询功能的示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端