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 深入理解strtotime函数的使用详解
May 23 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
golang与PHP输出excel示例
Jul 22 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
python中time、datetime模块的使用
2020/12/14 Python
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
营销总经理的岗位职责
2013/12/15 职场文书
中国文明网签名寄语
2014/01/18 职场文书
小松树教学反思
2014/02/11 职场文书
决心书范文
2014/03/11 职场文书
五年级小学生评语
2014/12/26 职场文书
医院病假条怎么写
2015/08/17 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS