作者: | 来源:互联网 | 2023-07-28 19:12
企业微信为企业提供了开发自定义应用的能力,为了能够让自定义的应用和企业微信的后台进行双向通信,企业可以在应用的管理后台开启回调模式。开启回调模式后,企业可以配置需要获取的成员操作或者地理位置信息,当触发时企业微信会把对应的数据同步到企业的后台,企业后台也可以根据行为作出被动响应。
如果你希望像微信公众平台那样需要根据文字、图片或者语音等做出响应,则需要开启回调模式。
首先需要引入企业微信库文件:
require_once "../lib/msgcrypt.php";require_once "../lib/helper.php";require_once "../lib/app_api.php";
编辑config.php文件
exit();?>
{ "CorpId" : "企业微信ID","TxlSecret" : "","AppsConfig" : [{ "AppDesc": "应用描述", "AgentId": 应用号,"Secret" : "","Token" : "","EncodingAESKey":"" }]
}
官方包含了整套库文件,你可以在这里下载。点击下载PHP版本的示例
关于库文件:
概述
这是一个php版本的接口调用示例,包含了开发者在开发过程中常见的操作,比如获取不同应用的access_token、回调模式设置、jsapi的调用、通讯录管理、媒体上传等,方便企业开发者理解整套流程以及工作原理并能迅速上手进行开发。
企业微信开发者文档:http://work.weixin.qq.com/api/doc
代码结构
OpenApiSample/
├── cache/
│ ├── txl.php //通讯录应用的access_token缓存
│ └── jsapi_ticket.php //JSAPI的ticket缓存
└── devtool/
│ ├── assets/
│ ├── api_config.php
│ ├── devtool.php //开发者调试工具的界面
│ └── devhandler.php
└── example/ //基本的接口调用示例
│ ├── app_manage.php
│ ├── callback_valid.php
│ ├── department.php
│ ├── get_access_token.php
│ ├── jsapi.php
│ ├── message.php
│ ├── upload_media.php
│ └── user_manage.php
└── lib/ //工具方法├── access_token.php ├── app_api.php ├── helper.php ├── jssdk.php ├── media_api.php ├── msgcrypt.php ├── pkcs7Encoder.php ├── sha1.php ├── txl_api.php└── xmlparse.php
运行示例
- 编辑config.php文件,配置企业以及应用的配置信息,配置项请参考示例文件
- 将代码部署到可以解析php的web服务器(php版本5.4+)
- 运行devtools/devtool.php可以了解并调试所有的接口调用,代码里面也包含了主要的业务处理逻辑,可以作为开发时的参考
- 运行example目录下的示例文件,修改参数查看程序的运行结果
- lib目录下的代码请根据具体情况修改,大多只为做demo测试用
require_once "../lib/msgcrypt.php";
require_once "../lib/helper.php";
require_once "../lib/app_api.php";------------使用示例一:验证回调URL---------------
*企业开启回调模式时,企业号会向验证url发送一个get请求
假设点击验证时,企业收到类似请求:
* GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
* HTTP/1.1 Host: qy.weixin.qq.com接收到该请求时,企业应
1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr),
这一步注意作URL解码。
2.验证消息体签名的正确性
3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信
第2,3步可以用企业微信提供的库函数VerifyURL来实现。*/
$appConfigs = loadConfig();
$config = getConfigByAgentId(1000002); $token = $config->Token;
$corpId = $appConfigs->CorpId;
$encodingAesKey = $config->EncodingAESKey;$sVerifyMsgSig = urldecode($_GET["msg_signature"]);
$sVerifyTimeStamp = urldecode($_GET["timestamp"]);
$sVerifyNonce = urldecode($_GET["nonce"]);
$sVerifyEchoStr = urldecode($_GET["echostr"]);
$sEchoStr = "";$wxcpt = new MsgCrypt($token, $encodingAesKey, $corpId);
$errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);if ($errCode == 0) {
echo $sEchoStr;
exit(0);
} else {
print("1ERR: " . $errCode . "\n\n");
}
最后在应用中开启就可以了。