Java对接企业微信审批功能,看这一篇就够了

本文详述了如何使用Java对接企业微信审批功能,包括创建审批模板、查询模板详情、提交申请、查询审批状态、配置回调接口以及查询用户信息等步骤。提供了代码地址和企业微信API参考,帮助开发者快速实现审批流程自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能描述

一句话简述就是,后台自动发起员工猪小明的审批申请,领导就可以在企业微信中收到猪小明的审批申请进行审批,可以配置领导审批后企业微信回调我们的服务,我们也可以在后台查询审批流程的详细状态,大体流程就是这样,当然企业微信还提供了其他可能用到的功能,如查询用户信息,用户假期信息等。

可以先大体看下企业微信官方提供的API:企业微信开发API,如下图,比较简单。

代码地址:https://gitee.com/bjzwb/qw_flow

在这里插入图片描述
在这里插入图片描述

在企业微信管理后台创建审批模板。

在这里插入图片描述
创建一个自定义的模板使用。
在这里插入图片描述
设置模板内容,企微提供了文本、多行文本、单选、多选、附件等控件,添加后每个小控件都有一个ID,后续根据这个ID给他赋值。
在这里插入图片描述
模板ID在地址栏,这里需要注意下。
在这里插入图片描述

通过模板ID查询模板详情。

    /**
     * 通过模板ID获取审批模板详情
     *
     * @param templateId id
     */
    public String getTemplateDetail(String templateId) {
   
   
        String url = "https://qyapi.weixin.qq.com/cgi-bin/oa/gettemplatedetail?access_token=ACCESS_TOKEN"
                .replace("ACCESS_TOKEN", getToken());
        Map<String, String> reqParam = new HashMap<>();
        reqParam.put("template_id", templateId);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, reqParam, String.class);
        System.out.println("调用结果:" + responseEntity);
        if (responseEntity.getStatusCode() == HttpStatus.OK) {
   
   
            return responseEntity.getBody();
        }
        return "失败";
    }

提交审批申请。

//CommitApprovalApplyParam是自定义的一个VO类,即提交申请的内容对象。
public String commitApprovalApply(CommitApprovalApplyParam param) {
   
   
        String url = "https://qyapi.weixin.qq.com/cgi-bin/oa/applyevent?access_token=ACCESS_TOKEN"
                .replace("ACCESS_TOKEN", getToken());
        ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, param, JSONObject.class);
        System.out.println("调用结果:" + responseEntity);
        if (responseEntity.getStatusCode() == HttpStatus.OK) {
   
   
            JSONObject body = responseEntity.getBody();
            if (body.getInteger("errcode") == 0) {
   
   
                return body.getString("sp_no");
            }
            throw new RuntimeException("提交审批流程失败:" + body.getString("errmsg")
### 如何通过后台对接实现企业微信审批功能 #### 调用审批模板详情接口 为了获取企业微信审批应用”内的指定审批模板详情,可以通过审批应用或自建应用 Secret 来调用相应的接口[^1]。此操作通常用于开发前的准备工作,以便开发者能详细了解所需使用的审批模板结构。 #### 设置回调地址并启用状态变化通知 在企业微信管理后台中,进入路径【管理后台->应用和小程序->审批->API->接收事件服务器】,可以设置回调地址以接收来自企业微信的状态变更通知。同时,在该页面上需勾选需要进行状态变化回调通知的审批模板类型[^3]。这一过程对于实时同步审批进度至关重要。 #### 配置可信域名 当使用 Java 或其他编程语言集成企业微信 API 实现消息推送或其他高级功能时,务必注意配置可信域名的重要性。如果未正确配置,则可能会遇到类似于 `{"errcode":60020,"errmsg":"not allow to access from your ip"}` 的错误提示[^4]。因此,在实际部署过程中应确保所使用的 IP 地址已被加入白名单之中。 以下是基于 PHP 和 Java 两种不同技术栈的企业微信审批回调示例代码: #### PHP 对接实例 ```php <?php // 处理来自企业微信的POST请求数据 $rawData = file_get_contents('php://input'); $data = json_decode($rawData, true); if ($data && isset($data['Event'])) { switch ($data['Event']) { case 'change_status': processApprovalStatusChange($data); break; default: logMessage("Unhandled event type: " . $data['Event']); } } function processApprovalStatusChange($approvalData) { // 自定义逻辑处理审批状态的变化 } ?> ``` #### Java 推送服务端口监听样例 ```java import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/wxwork/callback") public class WxWorkCallbackController { @PostMapping(value = "/receive", consumes = "application/json;charset=UTF-8") public String receive(@RequestBody Map<String, Object> body) throws Exception { if (body.containsKey("Event") && "change_status".equals(body.get("Event"))) { handleApprovalStatusChange(body); } else { System.out.println("Unrecognized Event Type"); } return ""; } private void handleApprovalStatusChange(Map<String, Object> approvalBody) { // Implement custom logic here. } } ``` 以上两段代码分别展示了如何利用 PHP 及 Java 技术来完成对企业微信审批回调的支持。 #### AIGC 模型与企业微信功能融合 除了基础的消息传递外,还可以考虑引入人工智能生成内容(AIGC),将其训练后的模型同企业微信各类业务场景紧密结合在一起。比如把智能客服机器人嵌套至聊天界面上;或者让自动化的办公流线图配合现有的审核机制运作起来等等[^2]。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值