序
因为微信公众号跟钉钉的后端服务有所限制
便决定转到企业微信配置原有的服务
(使用PHP搭建后端的必看!有大坑!
起
企业微信
自定义机器人
直接进入企业微信后端
点击应用管理 然后创建应用
填写好信息然后创建即可
配置机器人后端
点击启用API接收
然后填写好后端信息
URL -> 你的后端接口
Token -> 验证URL用到的令牌
EncodingAESKey -> AES密钥
填写好并且配置好后端后点击验证即可
后端
因为我的后端用的是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");
}
}
}
成功配置🎉