PHP微信开发之文本自动回复


Posted in PHP onJune 23, 2016

首先,先去微信公众平台注册一个账号(注册要填的东西挺多的),注册好之后,登录进去。可以看到左侧的“开发者中心”,开启开发者中心前好像还要你完善一些资料,按照步骤完善即可。进入开发者中心之后,先去编辑

PHP微信开发之文本自动回复

修改配置,修改配置的时候,注意:

PHP微信开发之文本自动回复

URL是你自己的域名下的PHP脚本(往下读有该脚本的demo),该脚本用于和微信接口对接。比如http://www.example.com/weixin.php 

Token是上述脚本里的定义的一个常量,比如你的PHP脚本里定义了: 

define("TOKEN", "my_weixin"); 

 那么,在填写Token时,你就填abcdefgh

EncodingAESKey是消息加密用。你可以自己写一个43为的数字和字母的组合,也可以选择“随机生成”,一般选择随机生成即可。

填好之后,保存(如果保存时,提示Token验证失败,那么请确认token一致并多点几次保存试试)。 

保存好之后,点击修改配置旁的:“开启”。

然后,就可以编辑你的PHP脚本了。(如果你没有自己的域名,可以使用新浪云的免费的SAE,并最好完成实名认证)
 demo的脚本如下:关注该公众平台(比如订阅号之后),功能是:输入hehe则返回hello world!!!如果输入其他字符,则返回输入heeh试试。 

header('content-type:text/html;charset=utf-8');

define("TOKEN", "my_weixin"); //define your token
$wx = new wechatCallbackapiTest();

if($_GET['echostr']){
 $wx->valid(); //如果发来了echostr则进行验证
}else{
 $wx->responseMsg(); //如果没有echostr,则返回消息
}


class wechatCallbackapiTest{

 public function valid(){ //valid signature , option

  $echoStr = $_GET["echostr"];
  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"]; //接收微信发来的XML数据

  //extract post data
 if(!empty($postStr)){
    
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"的公众号id
   $keyword = trim($postObj->Content); //消息内容
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型:文本
   $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";

  if($keyword == 'hehe'){
    $contentStr = 'hello world!!!';
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();            
   }else{
    $contentStr = '输入hehe试试';
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();
   }

  }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;
 }
 }
}

如果发送消息,系统提示:该公众平台暂时不能提共服务,请稍后再试。那么多半是代码语法有问题,检查好语法错误再试试。

附:

在新用户关注你的公众号时,自动返回信息:(把这段代码加在判断$keyword之前)。

if($postObj->MsgType == 'event'){ //如果XML信息里消息类型为event
    if($postObj->Event == 'subscribe'){ //如果是订阅事件
     $contentStr = "欢迎订阅misaka去年夏天!\n更多精彩内容:http://blog.csdn.net/misakaqunianxiatian";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
     echo $resultStr;
     exit();
    }
   }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
PHP将XML转数组过程详解
Nov 13 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
Symfony2创建页面实例详解
Mar 18 PHP
yii通过小物件生成view的方法
Oct 08 PHP
php注册审核重点解析(数据访问)
May 23 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
php微信高级接口群发 多客服
Jun 23 #PHP
php英文单词统计器
Jun 23 #PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 #PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 #PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 #PHP
PHP生成静态HTML文档实现代码
Jun 23 #PHP
PHP微信支付开发实例
Jun 22 #PHP
You might like
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
用 javascript 实现的点击复制代码
2007/03/24 Javascript
JavaScript Array扩展实现代码
2009/10/14 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
python条件和循环的使用方法
2013/11/01 Python
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
python实现自动清理重复文件
2020/08/24 Python
快速创建python 虚拟环境
2020/11/28 Python
Python try except else使用详解
2021/01/12 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
邮政员工辞职信
2014/01/16 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android