php企业微信审批流程

登录: 企微后台

一、创建应用

1、添加模板

在这里插入图片描述
在这里插入图片描述
描述:创建模板,可以使用默认,也可以自己创建

2、设置控件

因为是记录所以就简单设置,可自行根据需求进行设置
在这里插入图片描述

3、规则设置(重点:审批流程要配置好,不然会报错)

在这里插入图片描述
描述:可以根据咱们自己的需求,做规则的设置

创建完成就可以使用了,模板id拼接在url上,这点比较坑,注意
在这里插入图片描述

二、对接审批

1、获取模板详情,根据对应的参数提示,提交申请

企微文档: 获取审批模板详情
企微文档: 获取审批模板详情在线测试工具
在这里插入图片描述
在这里插入图片描述

2、提交申请

企微文档: 提交审批申请
企微文档: 提交审批申请在线测试工具
注意参数内容的id需要跟详情的匹配上
在这里插入图片描述
在这里插入图片描述
以下是php发起申请案例:

 public function test()
    {
   
   

        $corpId = 'xxxx';//企业id
        $secret = 'xxxxxxxx';//应用的secret
        //先获取token
        $accessTokenUrl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' . $corpId . '&corpsecret=' . $secret;
        $result = file_get_contents($accessTokenUrl);
        $accessToken = json_decode($result)->access_token;

        //拼接请求
        $url = 'https://qyapi.weixin.qq.com/cgi-bin/oa/applyevent?access_token=' . $accessToken;
        
        $data = array(
            'creator_userid' => 'wujianxiong',//申请人userid,此审批申请将以此员工身份提交,申请人需在应用可见范围内
            'template_id' => 'xxxxx'
### 企业微信审批回调的PHP实现 为了成功处理来自企业微信审批回调,在服务器端需配置并编写相应的PHP脚本来解析和响应这些回调请求。下面是一个完整的示例代码,展示了如何创建一个能够接收并处理审批状态变更通知的服务。 #### 配置回调URL和服务端口 首先,在企业微信管理后台中设置好回调地址,并确保此路径指向可以访问的应用程序接口[^4]。通常情况下,这个API会监听HTTP POST请求来获取最新的审批更新信息。 #### 创建WXBizMsgCrypt实例 当接收到GET或POST请求时,需要通过`WxBizMsgCrypt`类来进行消息签名验证以及解密加密后的XML数据包: ```php <?php require_once 'WXBizMsgCrypt.php'; // 引入必要的库文件 // 获取参数 $token = $_ENV['WECHAT_TOKEN']; // 设置Token $encodingAesKey = $_ENV['ENCODING_AES_KEY']; // AES Key $corpId = $_ENV['CORP_ID']; // Corp ID try { $wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId); } catch (Exception $e) { die("初始化失败:" . $e->getMessage()); } ``` #### 处理GET请求(用于校验) 对于初次连接或者重新激活服务时的企业微信发起的GET请求,应该返回正确的echostr以完成身份认证过程: ```php if ($_SERVER["REQUEST_METHOD"] === "GET") { $sVerifyMsgSig = isset($_GET["msg_signature"]) ? $_GET["msg_signature"] : ''; $timeStamp = isset($_GET["timestamp"]) ? $_GET["timestamp"] : ''; $nonce = isset($_GET["nonce"]) ? $_GET["nonce"] : ''; $echoStr = isset($_GET["echostr"]) ? $_GET["echostr"] : ''; try { $errCode = $wxcpt->verifyUrl($sVerifyMsgSig, $timeStamp, $nonce, $echoStr); if ($errCode == 0) echo $echoStr; } catch (Exception $e) { die("验证失败:" . $e->getMessage()); } } ``` #### 接收并解析POST请求中的审批事件 一旦完成了上述步骤,则可以通过如下方法捕获由企业微信推送过来的新建、更改或删除审批单据的通知: ```php else { // 当为POST请求时执行以下操作 header('Content-Type: text/xml'); $sReqData = file_get_contents('php://input'); // 取得原始输入流 $sEncryptMsg = ''; // 加密过的消息体 $decryptMsg = ''; // 解码后的内容 list($xmlTree, $arrayPostInfo) = xmlToArray($sReqData); foreach ($arrayPostInfo as $key => &$val) { if (!is_array($val)) { $val = trim($val); } } $sMsgSignature = isset($_GET["msg_signature"]) ? $_GET["msg_signature"] : ''; $timeStamp = isset($_GET["timestamp"]) ? $_GET["timestamp"] : ''; $nonce = isset($_GET["nonce"]) ? $_GET["nonce"] : ''; try { $result = $wxcpt->decryptMsg($sMsgSignature, $timeStamp, $nonce, $sReqData, $decryptMsg); if ($result != 0){ throw new Exception("解密失败"); } libxml_disable_entity_loader(true); $xml_tree = simplexml_load_string($decryptMsg, 'SimpleXMLElement', LIBXML_NOCDATA); $json_data = json_encode($xml_tree); $data_arr = json_decode($json_data, true); handleApprovalEvent($data_arr); // 自定义函数用来处理具体的业务逻辑 exit(); } catch (Exception $e) { die("错误:" . $e->getMessage()); } } function handleApprovalEvent($eventData){ switch ($eventData['EventType']){ case 'create': processCreateApproval($eventData); break; case 'change': processChangeApproval($eventData); break; default: logError("未知类型的审批事件", $eventData); } } ?> ``` 以上代码片段实现了基本的企业微信审批回调功能,包括但不限于安全验证机制、消息加/解密流程以及针对不同类型审批活动的具体处理措施。开发者可以根据实际需求调整和完善这部分逻辑。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值