Jadual Kandungan
php实现基于微信公众平台开发SDK(demo)扩展的方法,sdkdemo
Rumah pembangunan bahagian belakang tutorial php php实现基于微信公众平台开发SDK(demo)扩展的方法,sdkdemo_PHP教程

php实现基于微信公众平台开发SDK(demo)扩展的方法,sdkdemo_PHP教程

Jul 13, 2016 am 10:11 AM
php WeChat

php实现基于微信公众平台开发SDK(demo)扩展的方法,sdkdemo

本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法。分享给大家供大家参考。具体分析如下:

该扩展基于官方的微信公众平台SDK,这里只做了简单地封装,实现了一些基本的功能(如天气查询,翻译,自动聊天机器人,自定义菜单接口)仅供学习之用.代码如下:

复制代码 代码如下:
define("TOKEN", "xingans");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
   //签名验证公共接口
   public function valid()
   {
       $echoStr = $_GET["echostr"];
       if($this->checkSignature()){
           echo $echoStr;
           exit;
       }
   }
 
   //主入口处理函数
   public function responseMsg()
   {
       $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
       if (!emptyempty($postStr)){
           $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
           $msgType=trim($postObj->MsgType);
          
           switch($msgType){
               case 'text':
                   $resultStr=$this->handleText($postObj);
                   break;
               case 'event':
                   $resultStr=$this->handleEvent($postObj);
                   break;
               default:
                   $resultStr=$this->handleDefault($postObj);
                   break;
           }
           echo $resultStr;
          
       }else {
           echo "Error";
           exit;
       }
   }
  
   //处理文本消息
      private function handleText($obj){
          $keyword=trim($obj->Content);
          if(preg_match('/天气/',$keyword)){
              $contentStr=$this->handleWeather($obj);
          }elseif(preg_match('/翻译/',$keyword)){
              $contentStr=$this->handleTranslation($obj);
          }else{
              $contentStr=$this->handleChat($obj);
          }
          return $this->handleStr($obj,$contentStr);
      }
     
      //处理天气
      private function handleWeather($obj){
          $keyword=mb_substr($obj->Content,-2,2,'utf-8');
          $zone=mb_substr($obj->Content,0,-2,'utf-8');
          if($keyword=='天气' && !emptyempty($zone)){
              $zoneArr=json_decode(file_get_contents('http://api.k780.com:88/?app=weather.city&format=json'),true);
              $zoneArr=$zoneArr['result'];
              $cityId='';
              foreach($zoneArr as $value){
                  if($zone==$value['citynm']){
                      $cityId=$value['weaid'];
                      break;
                  }
              }
             
              if(!emptyempty($cityId)){
                  $data=file_get_contents("http://api.k780.com:88/?app=weather.today&weaid=$cityId&appkey=10638&sign=3736578f099375665f9f141a6326b757&format=json");
                  $data=json_decode($data);
                  $contentStr="今天是:".$data->result->days.",".$data->result-> week.",".$data->result->citynm."天气:".$data->result->weather."n温度:".$data->result->temperature.",
                  ".$data->result->wind_direction.",".$data->result->wind_power.", 最低温度:".$data->result->temp_low.",最高温度:".$data->result->temp_high;
              }else{
                  $contentStr='找不到输入的城市!';
              }   
          }else{
              $contentStr='输入的查询格式不正确!';
          }
          return $contentStr;
      }
     
      //处理翻译
      private function handleTranslation($obj){
       $keyword=mb_substr($obj->Content,0,2,'utf-8');
       $words=mb_substr($obj->Content,2,220,'utf-8');
       if($keyword=='翻译' && !emptyempty($words)){
           $data=file_get_contents('http://fanyi.youdao.com/openapi.do?keyfrom=zfsblog&key=364295447&type=data&doctype=json&version=1.1&q='.urlencode($words));       
           $data=json_decode($data,true);
          
           switch($data['errorCode']){
               case '0':
                   $contentStr=$data['translation'][0];
                   break;
               case '20':
                   $contentStr='要翻译的文本过长';
                   break;
               case '30':
                   $contentStr='无法进行有效的翻译';
                   break;
               case '40':
                   $contentStr='不支持的语言类型';
                   break;
               case '50':
                   $contentStr='无效的key';
                   break;
               default:
                   $contentStr='Error';
                   break;
           }
       }else{
           $contentStr='输入的翻译格式不正确!';
       }
       return $contentStr;
      }
     
      //处理聊天信息
      private function handleChat($obj){
       $keywords=$obj->Content;
       $curlPost=array("chat"=>$keywords);
       $ch = curl_init();//初始化curl
       curl_setopt($ch, CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php');//抓取指定网页
       curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
       curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
       curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
       $data = curl_exec($ch);//运行curl
       curl_close($ch);
      
       if(!emptyempty($data)){
           $contentStr=$data;
       }else{
           $ran=rand(1,5);
          
           switch($ran){
               case 1:
                   $contentStr= "小九今天累了,明天再陪你聊天吧";
                   break;
               case 2:
                   $contentStr= "小九睡觉喽~~";
                   break;
               case 3:
                   $contentStr= "呼呼~~呼呼~~";
                   break;
               case 4:
                   $contentStr= "你话好多啊,不跟你聊了";
                   break;
               case 5:
                   $contentStr= "你话好多啊,不跟你聊了";
                   break;
           }
       }
       return $contentStr;
      }
     
      //创建自定义菜单
      public function createMenu($data,$token){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);     
        curl_close($ch);
        return $result;
      }
     
      //查询自定义菜单
   function getMenu($token){
       $url="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=$token";
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,true) ; //获取数据返回
       curl_setopt($ch, CURLOPT_BINARYTRANSFER,true) ; //在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回   
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
       return $output = curl_exec($ch);       
      }
     
      //删除自定义菜单
      public function deleteMenu($token){
       $url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$token;
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
       $result = curl_exec($ch);
       curl_close($ch);
       return $result;
      }

      //处理事件消息
      private function handleEvent($obj){
          $content='';
          switch($obj->Event){
              case 'subscribe':
                  $content.="welcome-欢迎关注该公众号号!";
                  break;
              case 'unsubscribe':
                  $content.="感谢您一直以来对该公众号的关注,再见!";
                  break;
              default:
                  $content.="";
                  break;
          }
          return $this->handleStr($obj,$content);
      }
     
      //处理回复消息字符串
      private function handleStr($obj,$content='',$flag=0){
       $textTpl = "";
       return sprintf($textTpl, $obj->FromUserName, $obj->ToUserName, time(), $content,$flag);
      }
  
   //签名验证函数
   private function checkSignature()
   {
       $signature = $_GET["signature"];
       $timestamp = $_GET["timestamp"];
       $nonce = $_GET["nonce"];   
       $token = TOKEN;
       $tmpArr = array($token, $timestamp, $nonce);
       sort($tmpArr, SORT_STRING);
       $tmpStr = implode( $tmpArr );
       $tmpStr = sha1( $tmpStr );
       if( $tmpStr == $signature ){
           return true;
       }else{
           return false;
       }
   }
}

希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/931541.htmlTechArticlephp实现基于微信公众平台开发SDK(demo)扩展的方法,sdkdemo 本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法。分享给大家供大...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Terangkan ungkapan perlawanan (Php 8) dan bagaimana ia berbeza dari suis. Terangkan ungkapan perlawanan (Php 8) dan bagaimana ia berbeza dari suis. Apr 06, 2025 am 12:03 AM

Dalam Php8, ungkapan perlawanan adalah struktur kawalan baru yang mengembalikan hasil yang berbeza berdasarkan nilai ungkapan. 1) Ia sama dengan pernyataan suis, tetapi mengembalikan nilai dan bukannya blok pernyataan pelaksanaan. 2) Ekspresi perlawanan secara ketat (===), yang meningkatkan keselamatan. 3) Ia mengelakkan kemungkinan ketinggalan dalam penyataan suis dan meningkatkan kesederhanaan dan kebolehbacaan kod.

Apakah pemalsuan permintaan lintas tapak (CSRF) dan bagaimana anda melaksanakan perlindungan CSRF di PHP? Apakah pemalsuan permintaan lintas tapak (CSRF) dan bagaimana anda melaksanakan perlindungan CSRF di PHP? Apr 07, 2025 am 12:02 AM

Dalam PHP, anda boleh mencegah serangan CSRF dengan menggunakan token yang tidak dapat diramalkan. Kaedah khusus termasuk: 1. Menjana dan membenamkan token CSRF dalam bentuk; 2. Sahkan kesahihan token semasa memproses permintaan.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Perbezaan antara program H5 dan mini dan aplikasi Perbezaan antara program H5 dan mini dan aplikasi Apr 06, 2025 am 10:42 AM

H5. Perbezaan utama antara program mini dan aplikasi ialah: Senibina Teknikal: H5 adalah berdasarkan teknologi web, dan program mini dan aplikasi adalah aplikasi bebas. Pengalaman dan Fungsi: H5 adalah ringan dan mudah digunakan, dengan fungsi terhad; Program mini adalah ringan dan mempunyai interaktif yang baik; Aplikasi berkuasa dan mempunyai pengalaman yang lancar. Keserasian: H5 adalah serasi, aplikasinya dan aplikasinya yang serasi dengan platform. Kos Pembangunan: H5 mempunyai kos pembangunan yang rendah, program mini sederhana, dan aplikasi tertinggi. Senario yang berkenaan: H5 sesuai untuk paparan maklumat, applet sesuai untuk aplikasi ringan, dan aplikasi sesuai untuk fungsi kompleks.

Terangkan jenis yang ketat (mengisytiharkan (strict_types = 1);) dalam php. Terangkan jenis yang ketat (mengisytiharkan (strict_types = 1);) dalam php. Apr 07, 2025 am 12:05 AM

Jenis yang ketat dalam PHP didayakan dengan menambah mengisytiharkan (strict_types = 1); di bahagian atas fail. 1) Ia memaksa jenis pemeriksaan parameter fungsi dan pulangan nilai untuk mengelakkan penukaran jenis tersirat. 2) Menggunakan jenis yang ketat dapat meningkatkan kebolehpercayaan dan kebolehprediksi kod, mengurangkan pepijat, dan meningkatkan kebolehkerjaan dan kebolehbacaan.

Bagaimanakah anda dapat mengelakkan kelas daripada dilanjutkan atau kaedah yang ditindas dalam PHP? (kata kunci akhir) Bagaimanakah anda dapat mengelakkan kelas daripada dilanjutkan atau kaedah yang ditindas dalam PHP? (kata kunci akhir) Apr 08, 2025 am 12:03 AM

Dalam PHP, kata kunci akhir digunakan untuk mencegah kelas daripada diwarisi dan kaedah ditimpa. 1) Apabila menandakan kelas sebagai muktamad, kelas tidak boleh diwarisi. 2) Apabila menandakan kaedah sebagai muktamad, kaedah itu tidak boleh ditulis semula oleh subkelas. Menggunakan kata kunci akhir memastikan kestabilan dan keselamatan kod anda.

Masa Depan PHP: Adaptasi dan Inovasi Masa Depan PHP: Adaptasi dan Inovasi Apr 11, 2025 am 12:01 AM

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

PHP vs Python: Memahami Perbezaan PHP vs Python: Memahami Perbezaan Apr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

See all articles