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 fread()使用技巧
Jan 22 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
php中隐形字符65279(utf-8的BOM头)问题
Aug 16 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Python3访问并下载网页内容的方法
2015/07/28 Python
Python2.x与Python3.x的区别
2016/01/14 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
python字符串反转的四种方法详解
2019/12/02 Python
Python tkinter和exe打包的方法
2020/02/05 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
优秀通讯员事迹材料
2014/01/28 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
行政管理专业求职信
2014/07/06 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
网络妈妈观后感
2015/06/08 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android