php接入企业微信的事件回调,不用框架,单页面简单处理

参考来源:PHP-企业微信二次开发-接收用户输入消息内容并响应相关业务逻辑_企业微信输入文字 返回结果-CSDN博客

<?php
require_once "WXBizMsgCrypt.php";

define(EncodingAesKey,"***");
define(Token,"***");
define(CorpId,"***");

function getmessages(){
   $sVerifyMsgSig = $_GET["msg_signature"];
   $sVerifyTimeStamp = $_GET["timestamp"];
   $sVerifyNonce = $_GET["nonce"];
   //这里如果用$_POST是获取不到数据的,这里小编吃了好几次亏。
   $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//①读取POST数据,并且返回加密后的XML格式文本。注意此时的$postStr返回的是XML密文
   $sMsg = "";//②解密XML数据  现在还是空
   $wxcpt = new WXBizMsgCrypt(Token,EncodingAesKey,CorpId);
   $errCode = $wxcpt->DecryptMsg($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $postStr, $sMsg);
   //③$sMsg已有数据,解密XML数据  将解密的XML数据返回成对象
   $postObj = simplexml_load_string($sMsg,'SimpleXMLElement', LIBXML_NOCDATA);

   //返回消息格式  消息格式有text image voice location 等具体可查看官方文档,这里就演示两个text和image。
   $RX_TYPE = trim($postObj->MsgType); // 消息的类型,如果是事件则固定为event
   //反馈事件大类
   $EVENT = trim($postObj->Event);
   //事件变化类型
   $CHANGE_TYPE = trim($postObj->ChangeType);
   //返回发送消息的企业id
// $RX_UserName=trim($postObj->FromUserName);  // 此事件该值固定为sys,表示该消息由系统生成
   //返回发送消息时间戳
   $RX_CreateTime=trim($postObj->CreateTime); // 消息创建时间 (整型)
   //返回员工UserID
   $USER_ID = trim($postObj->UserID);
   //返回外部联系人userid
   $External_User_ID = trim($postObj->ExternalUserID);
// //返回添加方式
// $STATE = trim($postObj->State);



   switch ($RX_TYPE)
            {
                case "event":    //行为操作
               $result = $RX_CreateTime."-".$CHANGE_TYPE."-".$USER_ID."-".$External_User_ID;
                    break;
//                case "change_external_chat":   //客户群操作
//                    $result = $CHANGE_TYPE;
//                    break;
//                case "change_external_tag": // 客户标签
//                    $result = $CHANGE_TYPE
//                    break;
                default:
                    $result = "unknow msg type: ".$RX_TYPE;
                    break;
            }
//④根据需求处理消息,如将消息存入数据库等等。现在暂且存放在log日志中。
   file_put_contents('log.txt',"“".$result."”\r\n", FILE_APPEND);//输出log
   //自动回复---------------------------------------
}

$wechatObj = new WXBizMsgCrypt(Token,EncodingAesKey,CorpId);

if (!isset($_GET['echostr'])) {
    // 开始接收事件
// echo "没有进入到回调配置!";
   $getmessages=getmessages();
}else{
   //接受验证数据
   $sVerifyMsgSig = $_GET["msg_signature"];
   $sVerifyTimeStamp = $_GET["timestamp"];
   $sVerifyNonce = $_GET["nonce"];
   $sVerifyEchoStr = $_GET["echostr"];
   $sEchoStr = "";
   $errCode = $wechatObj ->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
//回调验证判断
      if ($errCode == 0) {
        echo $sEchoStr;
      } else {
        print("ERR: " . $errCode . "\n\n");
      }

   }
?>

Sqlite3 sqlalchemy技巧

<< 1 >>

Powered By Z-BlogPHP 1.7.0

@2021 yunfeng.net.cn 版权所有
浙ICP备16007973号-1