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 ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP图片水印类的封装
Jul 06 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
php面向对象程序设计入门教程
Jun 22 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
PHP fopen中文文件名乱码问题解决方案
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
如何写php程序?
2006/12/08 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
List Installed Software Features
2007/06/11 Javascript
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
python迭代器与生成器详解
2016/03/10 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
入党积极分子培养人意见
2015/06/02 职场文书
Springboot中如何自动转JSON输出
2022/06/16 Java/Android