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


Posted in PHP onOctober 20, 2018

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

目标:

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

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

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 相关文章推荐
php小型企业库存管理系统的设计与实现代码
May 16 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
php去除二维数组的重复项方法
Nov 03 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
php面向对象值单例模式
May 03 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 PHP
php微信公众号开发之图片回复
Oct 20 #PHP
php5.x禁用eval的操作方法
Oct 19 #PHP
django中的ajax组件教程详解
Oct 18 #PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 #PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 #PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 #PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 #PHP
You might like
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
python基于ID3思想的决策树
2018/01/03 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
python em算法的实现
2020/10/03 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
简单介绍Object类的功能、常用方法
2013/10/02 面试题
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
闭幕式主持词
2014/04/02 职场文书
文明寝室申报材料
2014/05/12 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
消费者理赔投诉书
2015/07/02 职场文书
新年寄语2016
2015/08/17 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB