腾讯微校 消息回复类应用 thinkphp 实现

编程入门 行业动态 更新时间:2024-10-26 14:33:36

<a href=https://www.elefans.com/category/jswz/34/1770070.html style=腾讯微校 消息回复类应用 thinkphp 实现"/>

腾讯微校 消息回复类应用 thinkphp 实现

整体采用thinkPHP框架,为MVC结构:
- Application-wxtest:保存整个微校模块部分代码
- Application-wxtest-View:View层,前端部分代码
- Application-wxtest-Controller:Control层,后端部分代码

IndexController.class.php

该文件为微校应用入口,基于微校开发文档给出的demo中的app.php

  1. 按照微校应用创建流程填写基本信息,其中应用启用地址为.php/wxtest/index?type=open,后到我的应用/应用详情 根据页面提供修改代码中的API_KEYAPI_SECRET
  2. index()进入,按照case跳转至相应的函数
    open()函数下主要补充token 的值用于令牌验证,代码无误后接口测试成功
    trigger()为微校默认应用触发地址,主要实现了获取微校转发来的消息和向微校返回结果。
 public function trigger() {$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$RX_TYPE = trim($postObj->MsgType);//获取消息类型switch ($RX_TYPE)//根据消息类型回复{case: $result = $this->receiveText($postObj);//文本case://图片...  }echo $result;}else {echo "╭(╯^╰)╮";exit;}}

实现时主要问题出在不了解微校向应用服务器返回结果形式和应用服务器返回结果形式。 微校转发的消息和微信公众平台开发收到的消息形式相同,返回结果也和公众平台回复类似。

$GLOBALS['HTTP_RAW_POST_DATA']$_POST的区别

  • PHP默认只识别application/x-www.form-urlencoded标准的数据类型,对型如text/xml的内容无法解析为$_POST数组,会保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。如果post过来的数据不是PHP能够识别的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等
  • 另外还有一项 php://input 也可以实现此这个功能php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data“。参考china_skag博客文章

    simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。

 //接收文本消息private function receiveText($object){//主要是给出回复文本的content$result = $this->transmitText($object, $content);return $result;}//回复文本消息private function transmitText($object, $content){$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>";//收到的消息格式和发送格式相同$result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);//格式化字符串%s的位置替换为后面的变量return $result;}

更多推荐

腾讯微校 消息回复类应用 thinkphp 实现

本文发布于:2024-02-12 17:23:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688710.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:腾讯   消息   thinkphp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!