热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

企业微信开发者回调模式

企业微信为企业提供了开发自定义应用的能力,为了能够让自定义的应用和企业微信的后台进行双向通信,企业可以在应用的管理后台开启回调模式。开启回调模式后&#x

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


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

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

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

运行示例


  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×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); //此处替换为你需要测试的应用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");
}

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

这里写图片描述


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了关于smarty自定义缓存名的解决思路,通过放弃生成缓存,直接生成html的静态页面来提高速度。同时提供了一个参考链接供参考。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有