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 文件夹删除、php清除缓存程序
Aug 25 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 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
PHP开发文件系统实例讲解
2006/10/09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
XML文档面试题
2015/08/05 面试题
人力资源主管的岗位职责
2014/03/15 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
水电工程师岗位职责
2015/02/13 职场文书
西游记读书笔记
2015/06/25 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Python图像处理库PIL详细使用说明
2022/04/06 Python
公历12个月名称的由来
2022/04/12 杂记