Maison  >  Article  >  développement back-end  >  Développement PHP WeChat pour obtenir les articles sélectionnés par WeChat

Développement PHP WeChat pour obtenir les articles sélectionnés par WeChat

*文
*文original
2017-12-29 18:38:521652parcourir

Cet article présente principalement en détail la mise en œuvre simple du développement PHP WeChat pour interroger les informations pertinentes des articles sélectionnés par WeChat. Les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

Vérifiez quelques articles sélectionnés dans WeChat avec un nombre de clics relativement important.
N'oubliez pas de demander apikey (vous pouvez l'obtenir en vous connectant à votre compte Baidu). La fonction à compléter est :

1. "article", et le compte officiel doit renvoyer le numéro de la catégorie de l'article (Par exemple, 9. Technologie).

2. Si l'utilisateur répond wz9, 1, Tencent, il peut revenir aux articles avec le mot-clé « Tencent » dans les articles technologiques, et afficher la première page (wz9, 2, Tencent peut revenir au deuxième page, Le nombre d'articles renvoyés sur chaque page peut être personnalisé, ici je renvoie 7 articles).

Étapes détaillées :

1. Répondez à « article » et renvoyez les identifiants de toutes les catégories d'articles. Le code suivant fait partie de la méthode ResponseMsg

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

$which = mb_substr($keyword, 0, 2, 'UTF-8');

elseif($which == "文章"){
    $ch = curl_init();
    $url = &#39;http://apis.baidu.com/showapi_open_bus/weixin/weixin_article_type&#39;;
    $header = array(&#39;apikey: 你自己的apikey&#39;);

    // 添加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); //获取文章分类name和id

    foreach($res[&#39;showapi_res_body&#39;][&#39;typeList&#39;] as $v){
     $article[] = $v[&#39;id&#39;] . "、" . $v[&#39;name&#39;];
    }
    sort($article, SORT_NUMERIC);
    foreach($article as $v){
     $contentStr .= $v . "\n";
    }
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();


   }

2. À l'heure actuelle, le $resultStr de echo est la classification de tous les articles. Les utilisateurs peuvent choisir leur catégorie préférée pour afficher les articles en fonction de l'ID de catégorie. Par exemple, en répondant à wz19, 1, basket-ball, vous pouvez consulter des articles sur le basket-ball classés comme sports.
Le code spécifique pour appeler l'interface et implémenter la fonction est le suivant :

elseif($which == "wz"){
    list($art_id, $page_id, $keyname) = split(&#39;,&#39;, $keyword);
    $art_id = str_replace(&#39;wz&#39;, &#39;&#39;, $art_id);

    $ch = curl_init();
    $url = &#39;http://apis.baidu.com/showapi_open_bus/weixin/weixin_article_list?typeId=&#39; . $art_id . &#39;&page=&#39; . $page_id . &#39;&key=&#39; . urlencode($keyname);
    $header = array(&#39;apikey: 你自己的apikey&#39;);

    // 添加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);

    foreach($res[&#39;showapi_res_body&#39;][&#39;pagebean&#39;][&#39;contentlist&#39;] as $k=>$v){
     if($k <= 6){
      $arts[] = $v;
     }else{
      break;
     }
    }

    $items = "";
    foreach($arts as $v){
     $items .= "<item>
    <Title><![CDATA[" . $v[&#39;title&#39;] . "]]></Title> 
    <Description><![CDATA[" . $v[&#39;title&#39;] . "]]></Description>
    <PicUrl><![CDATA[" . $v["contentImg"] . "]]></PicUrl>
    <Url><![CDATA[" . $v[&#39;url&#39;] . "]]></Url>
    </item>";
    }

    $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>7</ArticleCount>
    <Articles>" . $items . "
    </Articles>
    </xml> ";

    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time);
    echo $resultStr;
    exit();
   }

N'oubliez pas $header = array('apikey: '); Merci de remplir votre propre apikey à ce moment, sinon l'interface refusera de retourner votre demande.

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!

Déclaration:
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