因为微信公众号跟钉钉的后端服务有所限制

便决定转到企业微信配置原有的服务

(使用PHP搭建后端的必看!有大坑!

企业微信

自定义机器人

直接进入企业微信后端

点击应用管理 然后创建应用

填写好信息然后创建即可

配置机器人后端

点击启用API接收

然后填写好后端信息

URL -> 你的后端接口

Token -> 验证URL用到的令牌

EncodingAESKey -> AES密钥

填写好并且配置好后端后点击验证即可

后端

因为我的后端用的是PHP

所以下面的讲解都是基于PHP

下载官方提供的源代码

PHP

解压后我们可以看到有以下文件

其中

  • Sample.php提供了示例以供开发者参考。
  • errorCode.php, pkcs7Encoder.php, sha1.php, jsonparse.php文件是实现这个类的辅助类,开发者无须关心其具体实现。

获取代码

打开Sample.php

黄色部分就是企业微信会Get给我们的参数

而蓝色部分就是验证Url部分的代码

建立接口文件

新建个main.php作为接口

然后因为这个Sample.php导入了WXBizMsgCrypt.php这个文件

所以接口文件代码如下

<?php
//导入原生类
include_once "./official/WXBizMsgCrypt.php";

define("TOKEN", "你设置的TOKEN");
define("EncodingAESKey","你设置的EncodingAESKey");
define("CorpID", "企业号");

//进入企业微信服务器验证
$wechat = new wechatapi();
$wechat->valid();

class wechatapi{
    public function valid(){
        //接收随机字符串
        $sVerifyMsgSig = urldecode($_GET["msg_signature"]);
        $sVerifyTimeStamp = urldecode($_GET["timestamp"]);
        $sVerifyNonce = urldecode($_GET["nonce"]);
        $sVerifyEchoStr = urldecode($_GET["echostr"]);

        $sEchoStr = "";

        $wxcpt = new WXBizMsgCrypt(TOKEN, EncodingAESKey, CorpID);
        $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
        if ($errCode == 0) {
            //print("done VerifyURL, sEchoStr : \n");
            var_dump($sEchoStr);
            //
            // 验证URL成功,将sEchoStr返回
            // HttpUtils.SetResponce($sEchoStr);
        } else {
            print("ERR: " . $errCode . "\n\n");
        }
    }
}

注:CorpID可在后台->我的企业->企业信息->企业ID获取

上传并验证

把代码丢到自己的服务器上

然后复制路径

填写到上面流程的Url框中

然后点击保存

不出意外的话😂

会显示openapi回调地址请求不通过

大坑

本人在搭建的时候也是如此

无论怎么调参数

都无法解决这个问题

耗费楼主四个小时的时间(php小白)

就在查看了上百篇废话连篇相互“借鉴”的博客以及文章后

此处看到了一行小小的一句话

瞬间…………

于是在把main.php改成如下后

<?php
//导入原生类
include_once "./official/WXBizMsgCrypt.php";

define("TOKEN", "你设置的TOKEN");
define("EncodingAESKey","你设置的EncodingAESKey");
define("CorpID", "企业号");

//进入企业微信服务器验证
$wechat = new wechatapi();
$wechat->valid();

class wechatapi{
    public function valid(){
        //接收随机字符串
        $sVerifyMsgSig = urldecode($_GET["msg_signature"]);
        $sVerifyTimeStamp = urldecode($_GET["timestamp"]);
        $sVerifyNonce = urldecode($_GET["nonce"]);
        $sVerifyEchoStr = urldecode($_GET["echostr"]);

        $sEchoStr = "";

        $wxcpt = new WXBizMsgCrypt(TOKEN, EncodingAESKey, CorpID);
        $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
        if ($errCode == 0) {
            //print("done VerifyURL, sEchoStr : \n");
            //var_dump($sEchoStr);
            echo $sEchoStr;
            //
            // 验证URL成功,将sEchoStr返回
            // HttpUtils.SetResponce($sEchoStr);
        } else {
            print("ERR: " . $errCode . "\n\n");
        }
    }
}

成功配置🎉

一些相关开发文档

接收消息与事件

错误码查询

企业微信接口调试

服务端开发文档

客户端开发文档

工具与资源

最后修改:2022 年 05 月 19 日
要不?请我吃一下沙县连锁大酒店?