加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php微信公众平台开发(四)回复功能开发

发布时间:2020-12-12 21:54:45 所属栏目:PHP教程 来源:网络整理
导读:一、简介 微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。 二、思路分析 用户发送过来的文本信息,我们可以提取关

一、简介

微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。

二、思路分析

用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。

关键代码如下:

如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。

三、完整代码

<div class="jb51code">
<pre class="brush:php;">
<?php
/**

  • wechat php test
    */

//define your token
define("TOKEN","zhuojin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();
//$wechatObj->valid();

class wechatCallbackapiTest
{
/*public function valid()
{
$echoStr = $_GET["echostr"];

//valid signature,option
if($this->checkSignature()){
  echo $echoStr;
  exit;
}

}*/

public function responseMsg()
{
//get post data,May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

 //extract post data
if (!empty($postStr)){

     $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
    $RX_TYPE = trim($postObj->MsgType);

    switch($RX_TYPE)
    {
      case "text":
        $resultStr = $this->handleText($postObj);
        break;
      case "event":
        $resultStr = $this->handleEvent($postObj);
        break;
      default:
        $resultStr = "Unknow msg type: ".$RX_TYPE;
        break;
    }
    echo $resultStr;
}else {
  echo "";
  exit;
}

}

public function handleText($postObj)
{
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "

%s 0 "; if(!empty( $keyword )) { $msgType = "text";
  if($keyword=="你好"){
    $contentStr = "hello";
  }elseif($keyword=="苏州"){
    $contentStr = "上有天堂,下有苏杭";
  }else{
    $contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
  }
  $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
  echo $resultStr;
}else{
  echo "Input something...";
}

}

public function handleEvent($object)
{
$contentStr = "";
switch ($object->Event)
{
case "subscribe":
$contentStr = "感谢您关注【卓锦苏州】"."n"."微信号:zhuojinsz"."n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."n"."目前平台功能如下:"."n"."【1】 查天气,如输入:苏州天气"."n"."【2】 查公交,如输入:苏州公交178"."n"."【3】 翻译,如输入:翻译I love you"."n"."【4】 苏州信息查询,如输入:苏州观前街"."n"."更多内容,敬请期待...";
break;
default :
$contentStr = "Unknow Event: ".$object->Event;
break;
}
$resultStr = $this->responseText($object,$contentStr);
return $resultStr;
}

public function responseText($object,$content,$flag=0)
{
$textTpl = "

%s %d "; $resultStr = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$flag); return $resultStr; }

private 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;
}

}
}

?>

四、测试

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读