Im Entwicklungsprozess verschiedener Managementplattformen ist die Genehmigung ein unvermeidbares Problem. Bei Genehmigungsfragen muss nicht nur die technische Umsetzung berücksichtigt werden, sondern auch die Häufigkeit der Nutzung und die Benutzerfreundlichkeit. Wenn ein Unternehmen, das Software einsetzt, DingTalk zur Genehmigung und Bewertung nutzt, kann davon ausgegangen werden, dass das Genehmigungsmanagementsystem direkt mit DingTalk verbunden ist. Kommen wir ohne weitere Umschweife direkt zum Implementierungsprozess.
Erstellen Sie einen Antrag. Wenn Sie kein Outsourcing-Geschäft betreiben, wählen Sie einfach das Miniprogramm aus und füllen Sie es gemäß den Schritten aus
Bitte beachten Sie, dass Sie die gesetzliche IP-Adresse als Dienstadresse eingeben müssen, die in Ihren Post- und Rückrufanfragen verwendet wird
Nach erfolgreicher Erstellung können Sie einen sicheren Domänennamen einrichten und die erforderlichen Schnittstellenberechtigungen aktivieren. Dies hängt von Ihren Entwicklungsanforderungen ab Ich gehe nicht auf Details ein.
ACCESS_TOKEN abrufen
Nachdem Ihr Miniprogramm erstellt wurde, können Sie den AppKey und das AppSecret anzeigen und wir können es ganz einfach mithilfe der Get-Anfrage von Curl abrufen ACCESS_TOKEN. ACCESS_TOKEN ist 7200 Sekunden lang gültig und kann als Server-Cache verwendet werden, um wiederholte Anfragen zu reduzieren.
/** * 钉钉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; }
Bevor wir den Genehmigungsfluss einleiten, müssen wir zur DingTalk-Workbench gehen, um eine neue Genehmigung zu erstellen
Die Der Genehmigungsinhalt folgt dem Prozess. Sie werden aufgefordert, das Formular auszufüllen und den Genehmigungsprozess auszufüllen. Dieser Prozess kann auch direkt abgeschlossen werden, indem Sie sich auf die Entwicklungsschnittstelle von DingTalk verlassen, um DingTalk-Entwicklungsdokumente anzuzeigen. Nach Abschluss der Erstellung können Sie in der URL die beiden Schlüsselinformationen Code und CorpId des Genehmigungsprozesses abrufen, die für Hintergrundvorgänge der Genehmigung verwendet werden.
Die Post-Anfrage zum Erstellen einer DingTalk-Genehmigung lautet wie folgt:
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; }
Formular (form_component_values) beachten Sie das
Formularsteuerung Es nimmt die Form von Schlüssel/Wert an, wobei Schlüssel der Name ist, der jedem Steuerelement entspricht, und Wert eine gewöhnliche Zeichenfolge oder eine JSON-Zeichenfolge sein kann. http_header wählt „Content-Type: application/json;“ aus. Wenn Sie die Abteilung ausfüllen müssen, können Sie die Abteilungs-Dropdown-Komponente von DingTalk verwenden und die Abteilungs-ID (dept_id) als Wert übergeben
Das Konfigurieren und Schreiben von Rückrufschnittstellen ist eine wichtige Methode zum Synchronisieren lokaler Daten und DingTalk-Genehmigungsdaten. Um es nutzen zu können, müssen Sie zur Registrierung zurückkehren. Beim Registrieren der Ereignisrückrufschnittstelle initiiert der DingTalk-Server eine POST-Anfrage an die URL, die Sie beim „Registrieren der Rückrufschnittstelle“ festgelegt haben (die URL, die den Rückruf empfängt), um die Legitimität der URL zu testen. Nach Erhalt der Nachricht müssen Sie die verschlüsselten JSON-Daten der Zeichenfolge „success“ zurückgeben, da der DingTalk-Server sonst denkt, dass die URL illegal ist. Die tatsächliche Implementierung wird später erwähnt.
/** * 注册回调 * * @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); }
Nach Abschluss der Registrierung greift DingTalk auf die URL-Adresse zu, die wir während des Genehmigungsprozesses festgelegt haben. Backend-Entwickler können die Synchronisierung der lokalen Server-Genehmigungsdaten durchführen, indem sie den gepushten Inhalt analysieren und filtern.
Der Prozess des Parsens von Daten erfordert die Verwendung von Verschlüsselungs- und Entschlüsselungsbibliotheken. Die offizielle Download-Adresse von DingTalk lautet wie folgt:https://github.com/injekt/openapi-demo-php/tree/master/. isv/crypto
Implementierung der Rückrufadresse .
Zusammenfassung
Auf diese Weise können wir die Synchronisierung von Daten und DingTalk problemlos abschließen. DingTalk bietet auch viele andere Personalverwaltungs-, Anwesenheits- und andere Funktionen. Wenn Sie interessiert sind, können Sie die offizielle Dokumentation durchsuchen. Es ist erwähnenswert, dass die offizielle Dokumentation für viele die spezifische Implementierung der Sekundärentwicklung nicht klar erklärt Die SDK-Funktionen finden Sie jedoch im Anhang. Freunde, die sie benötigen, können sie herunterladen und lernen, sie zu verwenden.
Das obige ist der detaillierte Inhalt vontp5 verwendet DingTalk für die Workflow-Genehmigung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!