Maison > cadre php > PensezPHP > le corps du texte

tp5 utilise DingTalk pour l'approbation du flux de travail

发呆的路
Libérer: 2020-05-07 14:55:56
original
6753 Les gens l'ont consulté

Dans le processus de développement de diverses plateformes de gestion, l'approbation est une question inévitable. Les questions d'approbation doivent non seulement tenir compte de la mise en œuvre technique, mais également de la fréquence d'utilisation et de la facilité d'utilisation par les utilisateurs. Si une entreprise utilisant un logiciel utilise DingTalk pour l'approbation et l'évaluation, le système de gestion des approbations peut être considéré comme directement connecté à DingTalk. Sans plus tarder, passons directement au processus de mise en œuvre.

Paramètres d'autorisation DingTalk

Créez une application Si vous ne faites pas d'activité d'externalisation, choisissez simplement le développement interne de l'entreprise et remplissez-le selon les étapes

.

tp5 utilise DingTalk pour lapprobation du flux de travailtp5 utilise DingTalk pour lapprobation du flux de travail

Il est à noter que vous devez renseigner l'adresse IP légale comme adresse de service, qui sera utilisée dans vos demandes de publication et demandes de rappel

tp5 utilise DingTalk pour lapprobation du flux de travail

Une fois la création réussie, vous pouvez configurer un nom de domaine sécurisé et activer les autorisations d'interface requises. DingTalk inclut des autorisations avancées pour les micro-applications, cela dépend de vos besoins de développement, j'ai donc gagné. je n'entre pas dans les détails.

tp5 utilise DingTalk pour lapprobation du flux de travail

Obtenir ACCESS_TOKEN

Une fois votre mini-programme créé, vous pouvez afficher l'AppKey et l'AppSecret, et nous pouvons facilement l'obtenir en utilisant la requête get de curl. ACCESS_TOKEN. ACCESS_TOKEN est valide pendant 7 200 secondes et peut être utilisé comme cache du serveur pour réduire les requêtes répétées.

  /**
    * 钉钉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;
    }
Copier après la connexion

Initier l'approbation

Avant de lancer le flux d'approbation, nous devons accéder à l'atelier DingTalk pour créer une nouvelle approbation

tp5 utilise DingTalk pour lapprobation du flux de travail

Le le contenu de l'approbation suit le processus. Il vous invite à remplir le formulaire et à remplir le processus d'approbation. Ce processus peut également être effectué directement en s'appuyant sur l'interface de développement de DingTalk. Les amis dans le besoin peuvent consulter les documents de développement de DingTalk pour apprendre. Une fois la création terminée, vous pouvez obtenir les deux informations clés du processus d'approbation Code et corpId dans l'URL pour les opérations en arrière-plan de l'approbation.

tp5 utilise DingTalk pour lapprobation du flux de travail

La demande de publication pour créer l'approbation DingTalk est la suivante,

 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;
    }
Copier après la connexion

formulaire (form_component_values) notez le

contrôle de formulaire Il adopte la forme clé/valeur, où clé est le nom correspondant à chaque contrôle, et valeur peut être une chaîne ordinaire ou une chaîne json. http_header sélectionne « Content-Type : application/json ; » Lorsque vous devez renseigner le département, vous pouvez utiliser le composant déroulant du département de DingTalk et transmettre l'identifiant du département (dept_id) par valeur. pour obtenir des

Modifications de rappel

La configuration et l'écriture d'interfaces de rappel sont une méthode importante pour synchroniser les données locales et les données d'approbation DingTalk. Vous devez revenir à l'inscription pour l'utiliser. Lors de l'enregistrement de l'interface de rappel d'événement, le serveur DingTalk lancera une requête POST vers l'URL que vous avez définie lors de « l'enregistrement de l'interface de rappel » (l'URL qui reçoit le rappel) pour tester la légitimité de l'URL. Après avoir reçu le message, vous devez renvoyer les données json cryptées de la chaîne « success », sinon le serveur DingTalk pensera que l'URL est illégale. La mise en œuvre réelle sera mentionnée plus tard.

    /**
    * 注册回调
    * 
    * @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);
    }
Copier après la connexion

Après avoir terminé l'enregistrement, DingTalk accédera à l'adresse URL que nous avons définie lors de l'événement du processus d'approbation. Les développeurs backend peuvent terminer la synchronisation des données d'approbation du serveur local en analysant et en filtrant le contenu poussé.

Le processus d'analyse des données nécessite l'utilisation de bibliothèques de cryptage et de décryptage. L'adresse de téléchargement officielle de DingTalk est la suivantehttps://github.com/injekt/openapi-demo-php/tree/master/. isv/crypto

Implémentation de l'adresse de rappel .

Résumé

De cette façon, nous pouvons facilement terminer la synchronisation des données et de DingTalk. DingTalk propose également de nombreuses autres fonctions de gestion du personnel, de présence et autres. Si vous êtes intéressé, vous pouvez parcourir la documentation officielle pour en savoir plus. Il convient de mentionner que la documentation officielle n'explique pas clairement la mise en œuvre spécifique du développement secondaire des interfaces pour beaucoup. Fonctions Cependant, le SDK est fourni en annexe, et les amis qui en ont besoin peuvent le télécharger et apprendre à l'utiliser. tp5 utilise DingTalk pour lapprobation du flux de travail

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
tp5
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal