您现在的位置是:网站首页 > 心得笔记
第三方天气查询接口在微信中的使用
简介思路是定义一个关键字,让用户输入一个地理位置,如北京 安徽等,然后根据地理位置去第三方api去匹配 去查询相应地理位置的天气情况,并将天气情况形成一个单文本或单图文的形式反馈给用户,然后用户可以详细的去查看所输入地理位置的天气情况
思路:定义一个关键字,让用户输入一个地理位置,如北京 安徽等,然后根据地理位置去第三方api去匹配 去查询相应地理位置的天气情况,并将天气情况形成一个单文本或单图文的形式反馈给用户,然后用户可以详细的去查看所输入地理位置的天气情况。
网上有很多天气查询的接口,我这里使用的是在聚合数据里申请的一个免费的天气查询
实现代码:在前几篇文章所讲述的IndexController.api方法中编写:
<?php namespace App\Http\Controllers\Front; use App\Http\Controllers\Controller; use App\Model\Admin\Test; class TestController extends Controller { public function api() { $echoStr = isset($_GET["echostr"]) ? $_GET["echostr"] : ''; if (!empty($echoStr) && $this->checkSignature()) { echo $echoStr; exit; } else { //get post data, May be due to the different environments $postStr = file_get_contents("php://input", 'r');//php:input //写入日志 在同级目录下建立php_log.txt //chmod 777php_log.txt(赋权) chown wwwphp_log.txt(修改主) error_log(var_export($postStr,1),3,'php_log.txt'); //日志图片 //extract post data if (!empty($postStr)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //单文本自动回复_SDK $key = '1709ed943255eb42db941b88d3a71311';//聚合数据中申请的第三方接口appkey $cityname = trim($postObj->Content); $url = 'http://v.juhe.cn/weather/index?format=2&cityname=' . $cityname .'&key=' . $key; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); $arr = json_decode($res, true); $content = '城市:'.$arr['result']['today']['city']."\n时间:".$arr['result']['today']['date_y']."\n星期:".$arr['result']['today']['week']."\n今日温度:".$arr['result']['today']['temperature']; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $msgType = "text"; $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $time = time(); $resultStr = sprintf($template, $fromUsername, $toUsername, $time, $msgType, $content); echo $resultStr; } else { echo ""; exit; } } } //检查签名 private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = "weixin"; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if($tmpStr == $signature){ return true; }else{ return false; } }
效果图如下:
上一篇:微信sdk的实现
下一篇:微信公众号开发——自定义菜单