php版微信开发之接收消息,自动判断及回复相应消息的方法


Posted in PHP onSeptember 23, 2016

本文实例讲述了php版微信开发之接收消息,自动判断及回复相应消息的方法。分享给大家供大家参考,具体如下:

微信的api现在己经强大到可以随意调用我们网站或指定数据库的内容进行自能回复现推送消息了,这里就来给大家介绍一个微信开发的笔记.

发送1,2,3,7测试相应的消息,菜单模式需要升级为服务号,或者订阅人数超过500以上.

1. 用户发送的消息都是通过你提交的开发者URL来接收,这里订阅号就可以搞定,发送过来的都是xml格式数据,需要解析,代码如下:

$data = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!emptyempty($data)) {//接收消息并处理
$xml = (array)simplexml_load_string($data, ‘SimpleXMLElement', LIBXML_NOCDATA);
return $xml;
}

回复也是需要返回XML的数据格式.

2. 主动发送给用户消息,查询用户信息,创建自定义菜单(现在订阅号也可以用),以及一些高级功能,都是需要获取appid 和 AppSecret 以便得到 access_token.

access_token 这东西,除接收信息,每个接口都要用到,access_token 的时间为 7200毫秒过期需要重新获取.

更多请参考:http://mp.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5.

目前我已经实现了,接收消息,自动判断回复相应消息新闻,创建自定义菜单,点击自定义菜单后执行相应操作,用户列表之类,感觉目前开发模式和订阅模式没什么区别.

这里有一个测试回复的测试例子,代码如下:

<?php
/**
 * wechat php test
 */
//define your token
define("TOKEN", "你的申请上的token");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
 public function valid()
  {
    $echoStr = $_GET["echostr"];
    //valid signature , option
    if($this->checkSignature()){
     $this->responseMsg();
     exit;
    }
  }
  public function responseMsg()
  {
 //get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    //extract post data
 if (!emptyempty($postStr)){
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $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>
    <FuncFlag>0</FuncFlag>
    </xml>";
  if(!emptyempty( $keyword ))
        {
         $contentStr = $this->keyrep($keyword);
   if( emptyempty($contentStr) )
   {
   $contentStr ="你是故意的吧,没文化真可怕";//你是故意的吧,没文化真可怕;
   }
   //$contentStr = @iconv('UTF-8','gb2312',$keyword);
         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
         echo $resultStr;
        }else{
         $contentStr = '没文化真可怕,居然不会打字!';//$this->keyrep($keyword);
         //$contentStr = @iconv('UTF-8','gb2312',$keyword);
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
         echo $resultStr;
        }
    }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;
 }
 }
 function keyrep($key)
 {
 //return $key;
 if( $key=='嗨' || $key=='在吗' || $key=='你好' ){
  $mt = mt_rand(1,17);
  $array = array(1=>'自杀中,稍后再说...',2=>'有事找我请大叫!',3=>'我正在裸奔,已奔出服务区',4=>'我现在位置:WC; 姿势:下蹲; 脸部:抽搐; 状态:用力中。。。。',5=>'去吃饭了,如果你是帅哥,请一会联系我,如果你是美女...............就算你是美女,我也要先吃饱肚子啊',6=>'
洗澡中~谢绝旁观!!^_^0',7=>'有熊出?],我去诱捕,尽快回来。',8=>'你好,我是500,请问你是250吗?',9=>'喂!乱码啊,再发',10=>'
不是我不理你,只是时间难以抗拒!',11=>'你刚才说什么,我没看清楚,请再说一遍!',12=>'发多几次啊~~~发多几次我就回你。',13=>'此人已死,有事烧纸!',14=>'乖,不急哦…',15=>'你好.我去杀几个人,很快回来.',16=>'本人已成仙?有事请发烟?佛说有烟没火成不了正果?有火没烟成不了仙。',17=>'
你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复,反正我看不见其实我在~就是不回你拿我怎么着?'
);
  return $array[$mt];
 }
 if( $key=='靠' || $key=='啊' || $key=='阿' )
 {
  $mt = mt_rand(1,19);
  $array = array(1=>'人之初?性本善?玩心眼?都滚蛋。',2=>'今后的路?我希望你能自己好好走下去?而我 坐车',3=>'笑话是什么?就是我现在对你说的话。',4=>'人人都说我丑?其实我只是美得不明显。',5=>'A;猪是怎么死的?B;你还没死我怎么知道',6=>'
奥巴马已经干掉和他同姓的两个人?奥特曼你要小心了。 ',7=>'有的人活着?他已经死了?有的人活着?他早该死了。',8=>'"妹妹你坐船头?哥哥我岸上走"据说很傻逼的人看到都是唱出来的。',9=>'我这辈子只有两件事不会?这也不会?那也不会。',10=>'
过了这个村?没了这个店?那是因为有分店。',11=>'我以为你只是个球?没想到?你真是个球。',12=>'你终于来啦,我找你N年了,去火星干什么了?我现在去冥王星,回头跟你说个事,别走开啊',13=>'你有权保持沉默,你所说的一切都将被作为存盘记录。你可以请代理服务器,如果请不起网络会为你分配一个。',14=>'本人正在被国际刑警组织全球范围内通缉,如果您有此人的消息,请拨打当地报警电话',15=>'洗澡中~谢绝旁观!!^_^0',16=>'嘀,这里是移动秘书, 美眉请再发一次,我就与你联系;姐姐请再发两次,我就与你联系;哥哥、弟弟就不要再发了,因为发了也不和你联系!',17=>'
其实我在~就是不回你拿我怎么着?',18=>'你刚才说什么,我没看清楚,请再说一遍!',19=>'乖,不急。。。');
  return $array[$mt];
 }
 if( $key =='请问' )
 {
  $mt = mt_rand(1,5);
  $array = array(1=>'"我脸油吗"反光??反正我不清楚',2=>'走,我请你吃饭',3=>'此人已死,有事烧纸!',4=>'喂!什么啊!乱码啊,再发',5=>'笑话是什么??就是我现在对你说的话。');
  return $array[$mt];
 }
 return "";
 }
 function keylist()
 {
 $array = array(1=>'嗨',2=>'你好',3=>'靠',4=>'在吗',5=>'请问');
 }
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
PHP类的特性实例分析
Sep 28 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
PHPMailer发送邮件
Dec 28 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
禁止直接访问php文件代码分享
May 05 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 #PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 #PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 #PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 #PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 #PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 #PHP
php利用递归实现删除文件目录的方法
Sep 23 #PHP
You might like
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
做个自己站内搜索引擎
2006/10/09 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php导出生成word的方法
2015/12/25 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
js正则相关知识点专题
2018/05/10 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
前台文员的岗位职责
2013/11/14 职场文书
结婚典礼证婚词
2014/01/08 职场文书
房展策划方案
2014/06/07 职场文书
雾霾停课通知
2015/04/24 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书