• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    tp5利用釘釘進行工作流審批

    來源:懂視網 責編:小采 時間:2020-11-03 12:31:34
    文檔

    tp5利用釘釘進行工作流審批

    tp5利用釘釘進行工作流審批:在各類管理平臺的開發過程中,審批是一個沒法規避的問題。審批問題,不僅僅要考慮技術實現,還要考慮用戶的使用頻率,易用性。如果使用軟件的公司利用釘釘進行審批考核,管理系統的審批完全可以考慮接入直接釘釘。話不多說,直接進入實現過程。釘釘權限設置創
    推薦度:
    導讀tp5利用釘釘進行工作流審批:在各類管理平臺的開發過程中,審批是一個沒法規避的問題。審批問題,不僅僅要考慮技術實現,還要考慮用戶的使用頻率,易用性。如果使用軟件的公司利用釘釘進行審批考核,管理系統的審批完全可以考慮接入直接釘釘。話不多說,直接進入實現過程。釘釘權限設置創
    在各類管理平臺的開發過程中,審批是一個沒法規避的問題。審批問題,不僅僅要考慮技術實現,還要考慮用戶的使用頻率,易用性。如果使用軟件的公司利用釘釘進行審批考核,管理系統的審批完全可以考慮接入直接釘釘。話不多說,直接進入實現過程。

    釘釘權限設置

    創建應用,如果不是做外包業務,選擇企業內部開發即可,選擇小程序按步驟填寫

    1588814536(1).png1588814573(1).png

    值得注意的是,要填寫合法的ip地址作為服務地址,該地址會在你的post請求和回調請求中使用到

    1588814635(1).png

    創建成功后,可以需要設置安全域名,開通需要的接口權限,釘釘包含微應用的高級權限,看你開發需求選取,就不贅述了。

    1588814662(1).png

    ACCESS_TOKEN的獲取

    在你的小程序創建完成后,可以查看到AppKey和AppSecret,利用curl的get請求,我們可以輕松獲取到ACCESS_TOKEN。ACCESS_TOKEN有效時間為7200秒,可以做用服務器緩存,減少重復請求。

     /**
     * 釘釘access_token獲取
     * @param 
     * @return access_token
     */
     public static function getAccessToken(){
     if(empty(cache('dd_access_token'))){
     $AppKey = config('ding_app_key');
     $AppSecret = config('ding_app_secret');
     $url = "https://oapi.dingtalk.com/gettoken?appkey=".$AppKey."&appsecret=".$AppSecret;
     $re = file_get_contents($url);
     $obj=json_decode($re);
     //dump($obj);
     $access_token = $obj->access_token;
     cache('dd_access_token', $access_token,7200);
     }else{
     $access_token = cache('dd_access_token');
     }
     return $access_token;
     }

    發起審批

    審批流發起前,我們需要先到釘釘工作臺創建新審批

    1588755604(1).png

    審批內容按照流程提示完成填寫表單,填寫審批過程即可,這一過程,也可以依靠釘釘的開發接口,直接完成,有需要的朋友可以查看釘釘開發文檔學習。創建完成后,你可以在url內獲取到該審批的processCode和corpId這兩個關鍵信息,用于審批的后臺操作。

    1588757630(1).png

    創建釘釘審批的post請求如下,

     public function index()
     {
     $access_token = ApiService::getAccessToken();
     //通過審批創建的url獲得
     $data['process_code'] = 'PROC-VFYJYF2V-84X3UYTT455XP7KENI603-0EWMMGTJ-I';
     $data['originator_user_id'] = '093208556229304103';
     //部門id
     $data['dept_id'] = '105672100';
     $form_component_values=array();
     $form_component_values[]=['name'=>'單行輸入框','value'=>'123']
     $form_component_values[]=['name'=>['開始時間','結束時間'],'value'=>['2019-02-19','2019-02-25']];
     $form_component_values[]=['name'=>'圖片','value'=>['http://pic.58pic.com/58pic/15/68/59/71X58PICNjx_1024.jpg','http://img.juimg.com/tuku/yulantu/140218/330598-14021R23A410.jpg']];
     $data['form_component_values'] = $form_component_values;
     $data= json_encode($data);
     $timeout = 5000;
     $http_header = [
     'Content-Type: application/json;'
     ];
     $ch = curl_init();
     curl_setopt ($ch, CURLOPT_URL, $token);
     curl_setopt ($ch, CURLOPT_POST, 1);
     curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
     curl_setopt ($ch, CURLOPT_HEADER, false);
     curl_setopt ($ch, CURLOPT_HTTPHEADER,$http_header);
     curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,false);
     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
     $result = curl_exec($ch);
     if (false === $result) {
     $result = curl_errno($ch);
     }
     curl_close($ch);
     return $result;
     }

    表單(form_component_values)注意

    表單控件采用key/value的形式,其中key是每個控件對應的名字,value可以是普通字符串,也可以是json字符串。http_header選擇'Content-Type: application/json;'當你需要填寫部門的時候,可以使用釘釘自帶的部門下拉組件,傳值傳部門id(dept_id)即可,可以利用獲取部門id接口獲取

    回調變更

    配置和編寫回調接口,是實現本地數據和釘釘審批數據同步的重要方法。必須要通過回到注冊才能使用。注冊事件回調接口的時候,釘釘服務器會向您“注冊回調接口”時候設置的url(接收回調的url)發起POST請求,用來測試url的合法性。收到消息后,需要返回經過加密后的字符串“success”的json數據,否則釘釘服務器將認為url不合法,居然實現在后面會提到。

     /**
     * 注冊回調
     * 
     * @param 
     * @return 
     */
     public static function register_call_back(){
     $token = config('ding_token');
     $aes_key = config('ding_aes_key');
     //獲取access_token
     $token = self::getAccessToken();
     //注冊url
     $url = "https://oapi.dingtalk.com/call_back/register_call_back?access_token=".$token;
     // call_back_tag:需要注冊的內容
     // token:加解密需要用到的token,自定義
     // aes_key:數據加密密鑰。用于回調數據的加密,長度固定為43個字符,從a-z, A-Z, 0-9共62個字符中選取,您可以隨機生成
     // url:你本地的回調地址,必須是可以外網訪問
     $data = array('call_back_tag'=>['bpms_task_change','bpms_instance_change'],'token'=> $token,'aes_key'=> $aes_key,'url'=>config('ding_callback'));
     return self::curl_post($url,$data);
     } 
    類似的,你還可以進行回調地址注冊的查詢和內容
     /**
     * 查詢回調
     * 
     * @param 
     * @return 
     */
     public static function get_call_back(){
     $token = self::getAccessToken();
     $url = "https://oapi.dingtalk.com/call_back/get_call_back?access_token=".$token;
     $re = file_get_contents($url);
     return $re;
     } 
     /**
     * 更新回調
     * 
     * @param 
     * @return 
     */
     public static function update_call_back(){
     $token = self::getAccessToken();
     $url = "https://oapi.dingtalk.com/call_back/update_call_back?access_token=".$token;
     $data = array('call_back_tag'=>['bpms_instance_change'],'token'=>'123456','aes_key'=>'lfqrojwt31jnvdb5li2arj0f1qz4g8g6eqw45swgyak','url'=>config('ding_callback'));
     return self::curl_post($url,$data);
     }

    在完成注冊后,釘釘就回會在審批的過程事件中訪問我們設置的url地址,后臺開發者可以通過解析過濾推送過來的內容完成本地服務器審批數據同步。

    解析數據過程,需要用到加解密庫,釘釘官方提供下載地址如下https://github.com/injekt/openapi-demo-php/tree/master/isv/crypto

    回調地址實現

     public function callback(){
     //token和aes_key就是你注冊地址的時填寫的內容
     $token = config('ding_token');
     $aes_key = config('ding_aes_key');
     //suite_key在內部應用使用CorpId即可,官方文檔沒有明確說明
     $suite_key = config('ding_suite_key');
     $signature = $_GET["signature"];
     $timeStamp = $_GET["timestamp"];
     $nonce = $_GET["nonce"];
     $postdata = file_get_contents("php://input");
     $postList = json_decode($postdata,true);
     $encrypt = $postList['encrypt'];
     //使用官方提供的加解密
     $crypt = new DingtalkCrypt();
     $crypt->DingtalkCrypt($token, $aes_key, $suite_key);
     $msg = "";
     $errCode = $crypt->DecryptMsg($signature, $timeStamp, $nonce, $encrypt, $msg);
     if ($errCode != 0){
     }else{
     /**
     * 創建成功后的回調推送
     */
     $eventMsg = json_decode($msg);
     $eventType = $eventMsg->EventType;
     /**
     * 工作流變動
     */
     if("bpms_instance_change" === $eventType){
     /**
     * 編寫你需要的內容
     */ 
     } 
     $res = "success";
     $encryptMsg = "";
     $errCode = $crypt->EncryptMsg($res, $timeStamp, $nonce, $encryptMsg);
     if ($errCode == 0){
     echo $encryptMsg;
     } 
     }
     }

    接受到釘釘的返回數據如下:

    1588816992(1).png

    encrypt即為加密過的內容。

    總結

    通過此類方式,我們可以容易的完成數據和釘釘的同步。釘釘還提供的很多其他的人員管理,考勤等功能,有興趣的可以瀏覽官方是文檔學習,值得一提的是官方的文檔對很多功能的接口二次開發的具體實現沒有說明的很清楚,但是在附錄中提供了sdk,需要的朋友可以下載學習使用。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    tp5利用釘釘進行工作流審批

    tp5利用釘釘進行工作流審批:在各類管理平臺的開發過程中,審批是一個沒法規避的問題。審批問題,不僅僅要考慮技術實現,還要考慮用戶的使用頻率,易用性。如果使用軟件的公司利用釘釘進行審批考核,管理系統的審批完全可以考慮接入直接釘釘。話不多說,直接進入實現過程。釘釘權限設置創
    推薦度:
    標簽: 利用 工作 釘釘
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲综合精品一二三区在线 | 国精品无码A区一区二区| 国产成人精品精品欧美| 国产精品亚洲一区二区三区在线 | 亚洲精品无码久久不卡| 无码国产精品一区二区免费3p | 久久精品国产99国产精偷 | 国产精品第一页在线| 国产精品午夜国产小视频| 久久国产综合精品五月天| 欧美日韩在线精品一区二区三区激情综合 | 精品视频一区二区三区四区五区| …久久精品99久久香蕉国产| 久久r热这里有精品视频| 国产精品无码一区二区在线| 国产精品无码无在线观看| 亚洲精品麻豆av| 精品a在线观看| 99久久精品这里只有精品| 久久久久久极精品久久久| 日韩精品系列产品| 日韩精品极品视频在线观看免费 | 香蕉依依精品视频在线播放| 久久综合久久自在自线精品自| 国产精品无码久久久久| 久久最新精品国产| 精品国内片67194| www.亚洲精品| 潮喷大喷水系列无码久久精品 | 亚洲午夜福利精品无码| 55夜色66夜色国产精品视频| 色欲国产麻豆一精品一AV一免费| 在线观看91精品国产网站| 日本精品夜色视频一区二区| 久久精品三级视频| 国语自产精品视频在线观看| 国产精品无码久久综合网| 国产精品成人啪精品视频免费| 国产精品99在线播放| 国产精品无码素人福利不卡| 国内精品久久久久久久久|