php微信公众号开发之关键词回复

 更新时间:2018年10月20日 09:00:11   作者:dq_095  
这篇文章主要为大家详细介绍了php微信公众号开发之关键词回复,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了php微信公众号开发之关键词回复的具体代码,供大家参考,具体内容如下

目标:

  • 消息回复
  • 关键词回复
  • utf8编码


index.php

<?php
/**
 * wechat php test
 */

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

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);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[%s]]></MsgType>
              <Content><![CDATA[%s]]></Content>
              <FuncFlag>0</FuncFlag>
              </xml>";       
        if(!empty( $keyword ))
        {
          $msgType = "text";
          switch ($keyword)
          {
          case "1";
          $contentStr = "公司简介!";
          break;
          case "2";
          $contentStr = "最新优惠!";
          break;
          default;
          $contentStr = "欢迎光临!";

          }

          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
          echo $resultStr;
        }else{
          echo "Input something...";
        }

    }else {
      echo "";
      exit;
    }
  }

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

?>

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

相关文章

  • php ctype函数中文翻译和示例

    php ctype函数中文翻译和示例

    这篇文章主要介绍了php ctype函数中文翻译和示例,相关函数示例列出了多个,需要的朋友可以参考下
    2014-03-03
  • php的declare命令及用法详解

    php的declare命令及用法详解

    declare是用来设定一段代码的执行指令,declare结构用于全局范围,影响到其后的所有代码,今天小编给大家普及php的declare命令及用法知识,感兴趣的朋友一起看看吧
    2021-06-06
  • 详解php与ethereum客户端交互

    详解php与ethereum客户端交互

    本篇文章给大家讲述了php与ethereum客户端交互的相关知识点,对此有需要的朋友可以跟着学习下。
    2018-04-04
  • 使用淘宝IP库获取用户ip地理位置

    使用淘宝IP库获取用户ip地理位置

    以前用过GOOGLE地图和百度地图获取过用户地理位置,现在又多了一个方法,那就是使用淘宝IP库获取用户ip地理位置,一起来看代码吧。
    2013-10-10
  • PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径

    PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径

    这篇文章主要介绍了PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径,可以对每个搜索引擎单独统计,需要的朋友可以参考下
    2014-06-06
  • PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF

    PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF

    这篇文章主要介绍了PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF的相关资料,需要的朋友可以参考下
    2016-02-02
  • Ubuntu 16.04中Laravel5.4升级到5.6的步骤

    Ubuntu 16.04中Laravel5.4升级到5.6的步骤

    这篇文章主要给大家介绍了关于在Ubuntu 16.04中Laravel5.4升级到5.6的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2018-12-12
  • laravel异步监控定时调度器实例详解

    laravel异步监控定时调度器实例详解

    这篇文章主要给大家介绍了关于laravel异步监控定时调度器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • thinkPHP内置字符串截取函数用法详解

    thinkPHP内置字符串截取函数用法详解

    这篇文章主要介绍了thinkPHP内置字符串截取函数用法,结合实例形式分析了thinkPHP内置的字符串截取函数功能与具体使用方法,以及针对无法添加省略号的源码修改技巧,需要的朋友可以参考下
    2016-11-11
  • php自定义的格式化时间示例代码

    php自定义的格式化时间示例代码

    时间刚好是5分钟前,则对应的时间戳就会被格式化为5分钟前,自定义的格式化时间方法如下,感兴趣的朋友可以参考下
    2013-12-12

最新评论