企业微信开发者回调模式

本文介绍了企业微信如何开启回调模式以实现自定义应用与企业微信后台的双向通信。通过配置,企业微信会在触发特定事件时将数据同步到后台,并允许后台做出被动响应。文章提供了一个PHP版本的接口调用示例,包括获取access_token、回调模式设置等,帮助开发者快速理解和上手企业微信的开发。
部署运行你感兴趣的模型镜像

企业微信为企业提供了开发自定义应用的能力,为了能够让自定义的应用和企业微信的后台进行双向通信,企业可以在应用的管理后台开启回调模式。开启回调模式后,企业可以配置需要获取的成员操作或者地理位置信息,当触发时企业微信会把对应的数据同步到企业的后台,企业后台也可以根据行为作出被动响应。

如果你希望像微信公众平台那样需要根据文字、图片或者语音等做出响应,则需要开启回调模式。

首先需要引入企业微信库文件:

 require_once "../lib/msgcrypt.php";
 require_once "../lib/helper.php";
 require_once "../lib/app_api.php";

编辑config.php文件

<?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

运行示例

  1. 编辑config.php文件,配置企业以及应用的配置信息,配置项请参考示例文件
  2. 将代码部署到可以解析php的web服务器(php版本5.4+)
  3. 运行devtools/devtool.php可以了解并调试所有的接口调用,代码里面也包含了主要的业务处理逻辑,可以作为开发时的参考
  4. 运行example目录下的示例文件,修改参数查看程序的运行结果
  5. 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&timestamp=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,返回给企业微信
第23步可以用企业微信提供的库函数VerifyURL来实现。

*/

//读取配置
$appConfigs = loadConfig();
$config = getConfigByAgentId(1000002);  //此处替换为你需要测试的应用ID !!!

$token  = $config->Token;    
$corpId = $appConfigs->CorpId;
$encodingAesKey = $config->EncodingAESKey;

/*
* 企业开启回调模式时,企业微信后台会向验证url发送一个get请求
* 此逻辑需要先开通回调模式并将代码部署到服务器后进行验证
*/

$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) {
// 验证URL成功,将sEchoStr返回
echo $sEchoStr;
exit(0);
} else {
print("1ERR: " . $errCode . "\n\n");
}

最后在应用中开启就可以了。

这里写图片描述

您可能感兴趣的与本文相关的镜像

LobeChat

LobeChat

AI应用

LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值