企业微信php接入核心是理清身份凭证、请求链路和安全校验三环节:需配置corpid/agentid/secret,用curl获取并缓存2小时有效期的access token,通过签名验证与aes解密处理回调消息,调用/message/send接口发送文本等消息。

企业微信接入PHP开发框架,核心是把企业微信的认证、消息收发、用户管理等能力,通过PHP代码稳定对接进来。关键不在于写多少代码,而在于理清身份凭证、请求链路和安全校验这三个环节。只要配置准确、调用规范,整个流程并不复杂。
一、前置准备:获取企业微信凭证
登录企业微信管理后台(work.weixin.qq.com),进入「应用管理」→「自建应用」→「创建应用」。创建后,在应用详情页拿到三组关键参数:
- CorpID:企业唯一标识,全局不变,类似身份证号
- AgentID:当前应用的ID,整数类型,用于指定消息发送目标
- Secret:应用密钥,用于换取Access Token,务必保密
建议将这三项存为配置数组,避免硬编码:
$config = [
'corp_id' => 'wwxxxxxxxxxxxxxx',
'agent_id' => 1000001,
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
];
二、获取并缓存Access Token
所有API调用都需携带有效的Access Token,它有效期2小时,需本地缓存并自动刷新。推荐用cURL替代file_get_contents,更可控:
function getAccessToken($config) {
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$config['corp_id']}&corpsecret={$config['secret']}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if (isset($response['access_token'])) {
return $response['access_token'];
}
throw new Exception('获取Token失败:' . $response['errmsg']);
}
实际使用时,可加简单文件缓存或Redis缓存,避免每次请求都调用接口。
解析微信公众号文章,提取标题、作者、正文、图片等信息。用户发送链接(mp.weixin.qq.com)时触发,自动提取内容并可保存至飞书表格。
三、接收与解析消息(回调模式)
企业微信通过HTTPS POST向你配置的回调URL推送消息,需完成三步验证:
- 在企微后台填写可信域名及回调URL(如https://yourdomain.com/callback)
- 实现URL验证逻辑:GET请求带
msg_signature、timestamp、nonce、echostr四个参数,返回解密后的echostr - POST消息需先校验签名,再AES解密(若启用消息加密),最后解析XML或JSON内容
签名验证示例(使用SHA256):
function verifySignature($msgSig, $timestamp, $nonce, $echoStr, $token) {
$tmpArr = [$token, $timestamp, $nonce, $echoStr];
sort($tmpArr, SORT_STRING);
$tmpStr = implode('', $tmpArr);
return hash_hmac('sha256', $tmpStr, $token) === $msgSig;
}
四、主动发送消息(文本/图文/卡片)
调用/cgi-bin/message/send接口即可向指定成员、部门或标签发送消息。以文本消息为例:
function sendText($config, $toUser, $content) {
$token = getAccessToken($config);
$url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$token}";
$data = [
'touser' => $toUser,
'msgtype' => 'text',
'agentid' => $config['agent_id'],
'text' => ['content' => $content],
'safe' => 0
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
注意:touser支持多个用户用|分隔,如"zhangsan|lisi";发送失败时检查errcode值,常见错误如40014(access_token无效)、40003(用户不存在)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










