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中显示格式化的用户输入
Oct 09 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
php实现httpclient类示例
Apr 08 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 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获取文件大小的方法
2014/02/26 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
培养自己的php编码规范
2015/09/28 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
Python实现类继承实例
2014/07/04 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python实现的快速排序算法详解
2017/08/01 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
python 接收处理外带的参数方法
2018/12/03 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python文件读取失败怎么处理
2020/06/23 Python
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
经典c++面试题五
2014/12/17 面试题
营业员个人总结的自我评价
2013/10/25 职场文书
行政文员岗位职责
2013/11/08 职场文书
《钱学森》听课反思
2014/03/01 职场文书
大学社团计划书
2014/05/01 职场文书
工程售后服务承诺书
2014/05/21 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL