Maison > développement back-end > tutoriel php > Développement PHP WeChat pour obtenir la météo de la ville

Développement PHP WeChat pour obtenir la météo de la ville

*文
Libérer: 2023-03-18 20:04:01
original
1793 Les gens l'ont consulté

Cet article présente principalement en détail la mise en œuvre simple du développement PHP WeChat pour interroger des informations relatives à la météo de la ville. Les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

PHP WeChat interroge la météo de la ville. Tout d'abord, vous devez trouver une API pour obtenir la météo. Ici, j'utilise l'apistore de Baidu. L'URL pour appliquer et utiliser l'API : http://apistore.baidu.com. /apiworks/servicedetail/112.html

Connectez-vous à votre compte Baidu et utilisez votre téléphone mobile pour envoyer une demande d'obtention de l'apikey. Avec apikey, vous pouvez suivre son exemple pour demander la météo de la ville. (Vous pouvez effectuer une recherche selon le nom chinois de la ville, le pinyin, le numéro de la ville, etc.)

Développement PHP WeChat pour obtenir la météo de la ville

Vous pouvez faire le test localement maintenant, et une fois la demande terminée , mettez-le dans le script de votre propre espace de nom de domaine à l'intérieur.
Exemple de script de test : (à noter que l'apikey est renseigné par vous-même)

header('Content-type:text/html;charset=UTF-8');

$ch = curl_init();
$url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname=上海';
$header = array(
 'apikey: ',//你的apikey
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行HTTP请求
curl_setopt($ch , CURLOPT_URL , $url);
$res = curl_exec($ch);

$res = json_decode($res, true);
echo "<pre class="brush:php;toolbar:false">";
print_r($res);
echo "
Copier après la connexion
"; $contentStr = ""; foreach($res as $k=>$v){ if($k == "retData"){ $contentStr = "城市:" . $v['city'] . "\n"; $contentStr .= "日期:" . $v['date'] . "\n"; $contentStr .= "天气:" . $v['weather'] ."\n"; $contentStr .= "平均气温:" . $v['temp'] . "℃\n"; $contentStr .= "最低气温:" . $v['l_tmp'] ."℃\n"; $contentStr .= "最高气温:" . $v['h_tmp'] . "℃\n"; $contentStr .= "风力:" . $v['WS'] . "\n"; $contentStr .= "风向:" . $v['WD'] . "\n"; $contentStr .= "日出时间:" . $v['sunrise'] . "\n"; $contentStr .= "日落时间:" . $v['sunset'] . "\n"; $contentStr .= "经度:" . $v['longitude'] . "\n"; $contentStr .= "纬度:" . $v['latitude']; } } echo $contentStr;

Si vous remplissez votre propre apikey, vous devriez pouvoir obtenir la météo demandée :

Développement PHP WeChat pour obtenir la météo de la ville

Si des données normales peuvent être renvoyées, elles peuvent alors être placées dans votre espace de nom de domaine. (L'URL renseignée par le centre de développement dans la plateforme publique, qui a des fonctions telles que la connexion à l'interface WeChat)

Le code suivant fait partie de réponseMsg :

 public function responseMsg(){
 
<span style="white-space:pre"> </span>//get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据

 //extract post data
 if(!empty($postStr)){
  
  //解析post来的XML为一个对象$postObj
  $postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
 
  $fromUsername = $postObj->FromUserName; //请求消息的用户
  $toUsername = $postObj->ToUserName; //"我"的公众号id
  $keyword = trim($postObj->Content); //用户发送的消息内容
  $time = time(); //时间戳
  $msgtype = &#39;text&#39;; //消息类型:文本
  $textTpl = "<xml>
 <ToUserName><![CDATA[%s]]></ToUserName>
 <FromUserName><![CDATA[%s]]></FromUserName>
 <CreateTime>%s</CreateTime>
 <MsgType><![CDATA[%s]]></MsgType>
 <Content><![CDATA[%s]]></Content>
 </xml>";

  if($postObj->MsgType == &#39;event&#39;){ //如果XML信息里消息类型为event
  if($postObj->Event == &#39;subscribe&#39;){ //如果是订阅事件
   $contentStr = "欢迎订阅misaka去年夏天!\n更多精彩内容:http://blog.csdn.net/misakaqunianxiatian";
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
   echo $resultStr;
   exit();
  }
  }

  $which = mb_substr($keyword, 0, 2, &#39;UTF-8&#39;);//获取要返回什么样的信息

  if($which== "翻译"){ //如果要进行翻译
  //调用有道翻译API进行翻译

  }elseif($which == "天气"){
  $wea = $which;
  $city = str_replace($wea, "", $keyword);

  $ch = curl_init();
  $url = &#39;http://apis.baidu.com/apistore/weatherservice/cityname?cityname=&#39; . $city;
  $header = array(&#39;apikey: &#39;); //此处的apikey使用自己申请的apikey,填在冒号之后

  // 添加apikey到header
  curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  // 执行HTTP请求
  curl_setopt($ch , CURLOPT_URL , $url);
  $res = curl_exec($ch);
  $res = json_decode($res, true);
  $contentStr = "";
  foreach($res as $k=>$v){

   if($k == "retData"){
   $contentStr = "城市:" . $v[&#39;city&#39;] . "\n";
   $contentStr .= "日期:" . $v[&#39;date&#39;] . "\n";
   $contentStr .= "天气:" . $v[&#39;weather&#39;] ."\n";
   $contentStr .= "平均气温:" . $v[&#39;temp&#39;] . "℃\n";
   $contentStr .= "最低气温:" . $v[&#39;l_tmp&#39;] ."℃\n";
   $contentStr .= "最高气温:" . $v[&#39;h_tmp&#39;] . "℃\n";
   $contentStr .= "风力:" . $v[&#39;WS&#39;] . "\n";
   $contentStr .= "风向:" . $v[&#39;WD&#39;] . "\n";
   $contentStr .= "日出时间:" . $v[&#39;sunrise&#39;] . "\n";
   $contentStr .= "日落时间:" . $v[&#39;sunset&#39;] . "\n";
   $contentStr .= "经度:" . $v[&#39;longitude&#39;] . "\n";
   $contentStr .= "纬度:" . $v[&#39;latitude&#39;];
   }
  }
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
  echo $resultStr;
  exit();

  }else{
  $contentStr = "输入翻译XXX可以进行翻译(=・ω・=)\n\n输入天气XX可以查询城市天气";
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
  echo $resultStr;
  exit();
  }
Copier après la connexion

Après l'achèvement (n'oubliez pas de remplir apikey), entrez la météo de Shanghai dans votre compte d'abonnement, et vous devriez pouvoir consulter la météo à Shanghai ce jour-là.

Recommandations associées :

Un résumé des messages d'erreur courants dans le développement et la configuration des comptes publics WeChat

Le compte public WeChat implémente la fonction de gestion des utilisateurs

Explication détaillée de l'accès TP au paiement du compte public WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal