-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.html
15520 lines (12994 loc) · 595 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>钉钉开放平台</title>
<link href="stylesheets/screen.css" rel="stylesheet" type="text/css" media="screen" />
<link href="stylesheets/print.css" rel="stylesheet" type="text/css" media="print" />
<link href="stylesheets/nav.css" rel="stylesheet" type="text/css" media="nav" />
<script src="./javascripts/jquery.min.js" type="text/javascript"></script>
<script src="javascripts/all_nosearch.js" type="text/javascript"></script>
<!-- <link href="stylesheets/style.css" rel="stylesheet">
<link rel="stylesheet" href="stylesheets/releasenotes.plugin.css">
-->
<script src="javascripts/lib/marked.js"></script>
<script src="javascripts/releasenotes.js"></script>
<script>
$(document).ready(function() {
$("#releaseNotesContainer").releaseNotes({
milestonesShown : 10,
// If you want to show private repo
// You need to add repo credentials in api.php
phpApi : false,
phpApiPath : '/',
showDescription : true,
showComments : true,
// Used if phpAPI is false
repo : 'dingTalkDoc',
username : 'ddtalk'
});
});
</script>
</head>
<body class="index">
<div class="navbar-container">
<nav class="navbar" id="top-nav">
<a class="logo-container" href="/">
<div class="logo" style="font-family:'Microsoft Yahei','SimHe','SimSun'"></div>
</a>
<ul>
<li><a href="#概述">概述</a></li>
<li><a href="#接入指南">接入指南</a></li>
<li><a href="#服务端开发文档">服务端开发文档<b class="caret"></b></a>
</li>
<li><a href="#客户端开发文档">客户端开发文档<b class="caret"></b></a>
</li>
<li><a href="#faq">FAQ</a></li>
</ul>
</nav>
</div>
<a href="#" id="nav-button">
<span>
菜单
<img src="images/navbar.png" />
</span>
</a>
<div class="tocify-wrapper">
<img src="images/logo.png" />
<div id="toc">
</div>
</div>
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="概述">概述</h1>
<p>欢迎您成为钉钉开放平台的开发者。</p>
<p>钉钉是阿里巴巴专为中小企业和团队打造的沟通、协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案。通过钉钉开放平台,企业或第三方合作伙伴可以帮助企业快速、低成本的实现高质量的移动微应用,实现生产、管理、协作、运营的移动化。钉钉开放平台依托阿里巴巴多年的技术积累,建立业界一流的开放技术体系,帮助每一位开发者,提升开发效率,降低开发成本与难度。钉钉开放平台能帮助您获得更多的商业机会,服务更多的企业客户,从而不断的提升你的价值。</p>
<p>当您成功注册为开发者,可以通过本文档所描述的接口创建钉钉微应用,为企业实现更多丰富且个性化的企业移动应用。</p>
<p>假如你是企业用户,要为自己的公司开发微应用,查看<a href="#企业接入指南"><font color=red >企业接入指南</font></a>。</p>
<p>假如你是ISV(服务提供商),作为第三方要给其他公司提供微应用,先查看<a href="#isv接入指南"><font color=red >ISV接入指南</font></a>。</p>
<p>开发者可以通过以下方式了解更多关于钉钉开放平台的消息:</p>
<ul>
<li><a href="http://bbs.aliyun.com/thread/276.html?spm=5176.7189909.0.0.bq46VP"><font color=red >开发者论坛</font></a></li>
<li>邮件组: [email protected]</li>
</ul>
<h1 id="企业接入指南">企业接入指南</h1>
<p>此处为企业接入微应用的快速指南,按照此处的实现步骤,您(企业)可以将已有系统快速接入钉钉,您也可以独立开发一个微应用按照此步骤接入钉钉。您需要经过以下几步:</p>
<ul>
<li> <a href="#step-1-注册钉钉企业"><font color=red >Step 1 – 注册钉钉企业</font></a> </li>
<li> <a href="#step-2-新增微应用"><font color=red >Step 2 – 新增微应用</font></a> </li>
<li> <a href="#step-3-开发微应用"><font color=red >Step 3 – 开发微应用</font></a> </li>
</ul>
<p><br /></p>
<h2 id="step-1-注册钉钉企业">Step 1 – 注册钉钉企业</h2>
<h3 id="注册钉钉企业">注册钉钉企业</h3>
<p>一、进入 <a href="https://oa.dingtalk.com"><font color=red >钉钉管理后台</font></a> 页面, 点击 <a href="https://oa.dingtalk.com/register.html?spm=0.0.0.0.dL51oc"><font color=red >企业注册</font></a>;(已经注册可跳过此步骤)</p>
<p><img alt="enterprise_register_entry" src="https://img.alicdn.com/tps/TB14kI8IFXXXXciapXXXXXXXXXX.jpg" /></p>
<p>二、填写注册手机号码和短信验证码;</p>
<p>三、输入企业基本信息和管理员帐号和密码,点击 <em>注册</em> 按钮完成注册过程。</p>
<p><img alt="input_enterprise_info" src="https://img.alicdn.com/tps/TB1bru8JFXXXXXcXFXXXXXXXXXX-1171-807.png" /></p>
<aside class="notice">
通过钉钉移动客户端创建的企业默认没有设置钉钉后台管理员,需要通过以上流程注册管理员帐号。
</aside>
<h3 id="设置企业通讯录">设置企业通讯录</h3>
<ul>
<li>您可以通过进入 <a href="https://oa.dingtalk.com"><font color=red >钉钉管理后台</font></a> 页面,登陆成功后,点击点击 <a href="https://oa.dingtalk.com/#/home#deptId=-1"><font color=red >通讯录</font></a>可以看到如下图所示的组织架构操作进行添加或导入员工进行设置</li>
</ul>
<p><img alt="input_communication_info" src="https://img.alicdn.com/tps/TB1E.TpLFXXXXcpXpXXXXXXXXXX-301-184.png" /></p>
<ul>
<li>您也可以通过<a href="#管理通讯录"><font color=red >调用通讯录接口</font></a>进行创建、更新、删除、获取进行企业通讯录设置</li>
</ul>
<h2 id="step-2-创建微应用">Step 2 – 创建微应用</h2>
<ul>
<li>如果您还没有注册钉钉企业账号,您需要通过<a href="#step-1-注册钉钉企业"><font color=red >Step 1 – 注册钉钉企业</font></a>完成钉钉企业账号注册;已注册则继续完成当前步骤您就可以在钉钉上使用微应用了
### 新增微应用
您登录钉钉管理后台后可以进入 <em>应用中心</em> 页面对添加微应用</li>
</ul>
<p><img alt="enter_microapp_center" src="https://img.alicdn.com/tps/TB1GqkTLXXXXXcsXFXXXXXXXXXX-1122-641.jpg" /></p>
<p>点击上图中 <em>新增微应用</em> 按钮,按下图填写微应用信息,点击确定后可以新增微应用。</p>
<p><img alt="add_micro_app" src="https://img.alicdn.com/tps/TB1Qe_XJFXXXXalXpXXXXXXXXXX-598-477.png" /></p>
<p><em>首页地址</em> : 以<code class="prettyprint">http://</code>或者<code class="prettyprint">https://</code> 开头的URL,是微应用的首页地址;在移动设备上打开微应用Tab页,点击微应用列表中的微应用将访问这个URL指向的页面。</p>
<p><em>后台地址</em> : 以<code class="prettyprint">http://</code>或者<code class="prettyprint">https://</code> 开头的URL,是微应用的后台管理页面地址;配置后台地址后可以通过应用中心页面进入到微应用的管理后台。</p>
<aside class="notice">
<b>首页地址</b> 的URL域名务必保证真实有效,否则会导致钉钉用户无法正常使用微应用。
</aside>
<p><img alt="get_micro_app_agentID" src="https://img.alicdn.com/tps/TB1N490JFXXXXceXFXXXXXXXXXX-602-524.png" /></p>
<p>您在应用中心创建微应用后,如上图所示可获取到微应用的AgentID,AgentID可用于发送企业会话消息等场景。</p>
<p><br /></p>
<p>您也可以通过调用<a href="#创建微应用"><font color=red >创建微应用</font></a>接口进行微应用创建。</p>
<p>创建成功之后将会在手机的工作tab上显示出来</p>
<p><img alt="createMi" src="https://img.alicdn.com/tps/TB1xStVKpXXXXbjXFXXXXXXXXXX-361-640.jpg" /></p>
<p>至此您已经可以在钉钉上使用微应用了,如果您需要对微应用与钉钉有进一步的融合,请进行定制开发,参考<a href="#step-3-开发微应用"><font color=red >开发微应用</font></a></p>
<h2 id="step-3-开发微应用">Step 3 – 开发微应用</h2>
<ul>
<li>您需要通过<a href="#新增微应用"><font color=red >新增微应用</font></a>获取微应用的AgentID,用来在微应用开发时调用开放平台的接口</li>
</ul>
<p>钉钉开放提供丰富的接口、工具供您使用,用以降低您的开发成本:</p>
<ul>
<li><p>钉钉开放平台提供了企业通讯录管理、文件管理、发送企业会话消息等功能,接口使用可以参考<a href="#服务端开发文档"><font color=red >服务端开发文档</font></a>;</p></li>
<li><p>钉钉开放平台提供了定制的微应用在钉钉客户端的专用运行容器,并提供了一组可以调用钉钉的本地能力和业务能力的JSApi接口,您可以通过这些接口使用钉钉的本地能力或者钉钉的业务逻辑,进行微应用与钉钉功能的结合;接口使用可以参考<a href="#客户端开发文档"><font color=red >客户端开发文档</font></a>。</p></li>
<li><p>钉钉开放平台提供了与钉钉PC版本集成的能力,接口使用可以参考<a href="#pc端开发文档"><font color=red >PC端开发文档</font></a>;</p></li>
<li><p>钉钉开放平台提供了开发过程中需要的调试工具和性能优化的建议,您可以参考<a href="#调试工具-amp-性能优化"><font color=red >调试工具&性能优化</font></a>;</p></li>
</ul>
<h3 id="实现免登">实现免登</h3>
<p>您的微应用接入钉钉后,通过钉钉实现免登无需让员工进行二次登录,员工在进入微应用的时可以获取当前用户的信息实现与原系统中的账户打通。详细文档请参阅<a href="#免登服务"><font color=red >免登服务</font></a>。</p>
<p><br /></p>
<h3 id="调用api接口">调用API接口</h3>
<p>您在调用钉钉开放平台接口时需要附加AccessToken,AccessToken可以通过CorpID和CorpSecret获取。</p>
<h4 id="获取corpid和corpsecret">获取CorpID和CorpSecret</h4>
<p>CorpID是企业的唯一标识,获取CorpID和CorpSecret的步骤如下:</p>
<p>一、使用管理员帐号登录 <a href="https://oa.dingtalk.com"><font color=red >钉钉管理后台</font></a> ;</p>
<p>二、选择顶部菜单 <strong>微应用</strong> 进入微应用页面,在左侧菜单选择 <strong>微应用设置</strong> 进入微应用设置页;</p>
<p>三、在微应用设置页面底部点击 <strong>获取</strong> 按钮即可获取CorpID和CorpSecret。</p>
<p><img alt="get_scecret_corpId" src="https://img.alicdn.com/tps/TB1xStVKpXXXXbjXFXXXXXXXXXX-361-640.jpg" /></p>
<aside class="notice">
钉钉开放平台提供了获取和修改企业(团队)的组织结构信息、人员信息等功能,所以请妥善保管CorpID和CorpSecret,避免外泄影响企业信息安全。
</aside>
<h4 id="获取accesstoken">获取AccessToken</h4>
<p>开发者在调用开放平台接口前需要通过CorpID和CorpSecret获取AccessToken。获取AccessToken的方法是向 <code class="prettyprint">https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect</code> GET请求。</p>
<p>开发者获取AccessToken后便可以调用开放平台其他接口。</p>
<p>以获取部门列表接口为例,获取部门列表接口为:</p>
<p><code class="prettyprint">oapi.dingtalk.com/department/list</code></p>
<p>在请求该接口时,需要将获取的AccessToken作为请求参数拼装到URL中:</p>
<p><code class="prettyprint">https://oapi.dingtalk.com/department/list?access_token=ACCESS_TOKEN</code></p>
<p>更多关于AccessToken的信息请参考<a href="#建立连接"><font color=red >《服务端开发文档-建立连接》</font></a>一节。</p>
<p><br /></p>
<h3 id="发送企业会话消息">发送企业会话消息</h3>
<p>用户可以在企业会话中查看微应用发送的消息,开发者可以通过发送消息接口将消息发送到企业会话中。</p>
<p><img alt="send_micro_app_message" src="https://img.alicdn.com/tps/TB1X.m6JFXXXXX0XFXXXXXXXXXX-1089-652.jpg" /></p>
<p>调用消息发送接口时需要使用<code class="prettyprint">HTTPS</code>协议,发送的数据包为<code class="prettyprint">JSON</code>格式。目前钉钉开放平台支持文本、图片、声音、文件、链接、办公消息等消息类型。</p>
<h3 id="示例程序">示例程序</h3>
<p>在<a href="#demo"><font color=red >《Open API - 代码示例》</font></a>中有发送消息的代码演示,开发者可以下载参考。</p>
<p>如果在使用开放平台中遇到困难请浏览<a href="#faq"><font color=red >《常见问题》</font></a>一节,若仍不能解决请按概述中的提供的反馈方式联系我们。</p>
<h1 id="isv接入指南">ISV接入指南</h1>
<p>此处为ISV套件接入钉钉开放平台的指南,按照此处描述步骤,您(ISV)可以从成为钉钉企业及开发者,按照文档描述的接口实现进行套件开发,完成开发后您可以选择通过钉钉应用中心的方式推广,也可以采用线下快速部署的方式进行推广。从接触钉钉到推广您需要经过以下几步:</p>
<ul>
<li> <a href="#step-1-注册、认证钉钉企业账号"><font color=red >Step 1 – 注册、认证钉钉企业</font></a> </li>
<li> <a href="#step-2-成为钉钉开发者"><font color=red >Step 2 – 成为钉钉开发者</font></a></li>
<li> <a href="#step-3-开发套件(微应用)"><font color=red >Step 3 – 开发套件(微应用)</font></a></li>
<li> <a href="#step-4-推广套件"><font color=red >Step 4 – 推广套件</font></a>
<!– - <a href="#step-4-1-钉钉应用中心推广套件"><font color=red >Step 4.1 – 钉钉应用中心推广套件</font></a> –></li>
<li> <a href="#step-4-1-线下快速部署推广套件"><font color=red >Step 4.1 – 线下快速部署推广套件</font></a></li>
</ul>
<h2 id="step-1-注册、认证钉钉企业账号">Step 1 – 注册、认证钉钉企业账号</h2>
<h3 id="1-注册钉钉企业账号">1.注册钉钉企业账号</h3>
<p>一、进入 <a href="https://oa.dingtalk.com"><font color=red >钉钉管理后台</font></a> 页面, 点击 <a href="https://oa.dingtalk.com/register.html?spm=0.0.0.0.dL51oc"><font color=red >企业注册</font></a>;(已经注册可跳过此步骤)</p>
<p><img alt="enterprise_register_entry" src="https://img.alicdn.com/tps/TB1qthwLVXXXXXqXpXXXXXXXXXX-1119-584.png" /></p>
<p>二、填写注册手机号码和短信验证码;</p>
<p><img alt="input_enterprise_info" src="https://img.alicdn.com/tps/TB1TYtxLVXXXXc7XXXXXXXXXXXX-1274-625.png" /></p>
<p>三、输入企业基本信息和管理密码,点击 <em>注册</em> 按钮完成注册过程。</p>
<p><img alt="input_enterprise_info" src="https://img.alicdn.com/tps/TB10PRkLVXXXXckXFXXXXXXXXXX-1211-686.png" /></p>
<aside class="notice">
通过钉钉移动客户端创建的企业默认没有设置钉钉后台管理员,需要通过以上流程设置管理密码。
</aside>
<h3 id="2-分配管理员子账号">2.分配管理员子账号</h3>
<p>一、登录钉钉后台管理系统,按下图进入安全中心的添加管理员子帐号页面;</p>
<p><img alt="add_sub_manager" src="https://img.alicdn.com/tps/TB1Q3DiJFXXXXbkXXXXXXXXXXXX-1147-377.png" /></p>
<p>二、按下图提示填写子帐号信息</p>
<p><img alt="set_sub_manager_account" src="https://img.alicdn.com/tps/TB11RA7LFXXXXbJaXXXXXXXXXXX-1162-460.png" /></p>
<p>完成管理员子帐号设置后,子帐号关联的钉钉用户会在钉钉客户端的 <em>钉小秘</em> 会话中收到已将您设置为管理员的通知,该钉钉用户可以通过收到通知中的链接地址登录管理后台,设置管理员密码 <a href="https://oa.dingtalk.com"><font color=red >钉钉管理后台</font></a> 。</p>
<p><img alt="set_sub_manager_account" src="https://img.alicdn.com/tps/TB12ndbLVXXXXcOXVXXXXXXXXXX-1062-523.png" /></p>
<h3 id="3-完成企业认证">3.完成企业认证</h3>
<p>您可以通过管理员后台完成<a href="https://oa.dingtalk.com/#/orgCheck"><font color=red >企业认证</font></a></p>
<p><img alt="set_org_check" src="https://img.alicdn.com/tps/TB1DXNjLVXXXXXfXVXXXXXXXXXX-1153-614.png" /></p>
<h2 id="step-2-成为钉钉开发者">Step 2 – 成为钉钉开发者</h2>
<p>在注册钉钉开发者之前,您需要做好以下准备工作
- 服务端环境搭建和域名注册;
- 开发环境搭建;</p>
<h3 id="1-服务端环境搭建和域名注册">1.服务端环境搭建和域名注册</h3>
<p>开发者可以自己搭建服务器也可以购买云主机来搭建自己的服务端环境,开发者需要为自己的微应用注册合法有效的域名</p>
<h3 id="2-开发环境搭建">2.开发环境搭建</h3>
<p>钉钉开放平台的服务端接口不区分语言和平台,开发者可以使用自己熟悉的技术搭建开发环境来开发微应用</p>
<h3 id="3-注册钉钉开发者">3.注册钉钉开发者</h3>
<p>在开发钉钉应用前,首先要创建一个套件,套件可以包含一组应用,并对这组应用统一进行权限管理。</p>
<h4 id="基本流程(basic-flow)">基本流程(Basic Flow)</h4>
<h5 id="1-点击进入控制台,使用阿里云账号登录。如果您当前没有阿里云账号,请先注册阿里云账号">1. 点击进入<a href="http://console.d.aliyun.com"><font color=red >控制台</font></a>,使用阿里云账号登录。如果您当前没有阿里云账号,请先注册阿里云账号</h5>
<h5 id="2-进行实名认证(已经实名认证过的开发者直接看f-步骤)">2. 进行实名认证(已经实名认证过的开发者直接看f.步骤)</h5>
<p>用户未通过实名认证,需要实名认证后,才能申请开发者,流程如下:</p>
<h5 id="3-点击“立即认证”">3. 点击“立即认证”</h5>
<p><img alt="lijirz" src="https://img.alicdn.com/tps/TB1e618LXXXXXc.XXXXXXXXXXXX-1214-471.png" /></p>
<h5 id="4-新开窗口跳转到阿里云认证页面">4. 新开窗口跳转到阿里云认证页面</h5>
<p><img alt="shimingrz" src="https://img.alicdn.com/tps/TB1lv3iIVXXXXa6XpXXXXXXXXXX-866-412.png" /></p>
<h5 id="5-实名认证通过,在弹窗点击“立即刷新”按钮">5. 实名认证通过,在弹窗点击“立即刷新”按钮</h5>
<p><img alt="zhengzairz" src="https://img.alicdn.com/tps/TB11m_VIVXXXXaqapXXXXXXXXXX-866-334.png" /></p>
<h5 id="6-显示已通过实名认证">6. 显示已通过实名认证</h5>
<p><img alt="shiming" src="https://img.alicdn.com/tps/TB1fOPXLXXXXXarXXXXXXXXXXXX-1212-435.png" /></p>
<h5 id="7-选择开发应用类型为“钉钉企业类型”,填入“钉钉企业账号”">7. 选择开发应用类型为“钉钉企业类型”,填入“钉钉企业账号”</h5>
<h6 id="数据项说明">数据项说明</h6>
<table><thead>
<tr>
<th>字段</th>
<th>属性</th>
</tr>
</thead><tbody>
<tr>
<td>开发者介绍</td>
<td>100字以内</td>
</tr>
<tr>
<td>开发的应用类型</td>
<td>选择“钉钉应用”</td>
</tr>
<tr>
<td>使用的云产品</td>
<td>选择“容器服务”</td>
</tr>
<tr>
<td>入驻协议</td>
<td>“同意"选择框选中</td>
</tr>
</tbody></table>
<h5 id="8-显示申请开发者成功">8. 显示申请开发者成功</h5>
<h5 id="9-绑定钉钉认证企业">9. 绑定钉钉认证企业</h5>
<p>注册成功之后您需要开通钉钉服务能力,此时您需要绑定ISV当前注册并通过认证的钉钉企业[<font color=red >(注意:此企业未与其它阿里云账号绑定,当前不支持账号解绑,请注意不要绑定错误;如果您计划通过钉钉应用中心推广您的套件,您需要绑定您所在企业钉钉认证企业,若您绑定的企业还未认证,请务必在推广前完成认证)</font>],并完成企业主页的设置,见下图中所示,点击左侧菜单“服务能力”->钉钉,点击页面右侧按钮开通使用,输入钉钉企业管理员的手机号、企业的CorpID和管理员密码来完成绑定。
<img alt="kfzbinddd" src="https://img.alicdn.com/tps/TB1BrpDLVXXXXXKXXXXXXXXXXXX-590-482.png" /></p>
<aside class="notice">
企业的CorpID可以通过如下途径获取到:
</aside>
<p><img alt="get_corpID" src="https://img.alicdn.com/tps/TB1nvhDLVXXXXXzXXXXXXXXXXXX-1226-549.png" /></p>
<p><img alt="get_corpID" src="https://img.alicdn.com/tps/TB1ZM4lLVXXXXbmXFXXXXXXXXXX-1152-579.png" /></p>
<h2 id="step-3-开发套件(微应用)">Step 3 – 开发套件(微应用)</h2>
<p>在您开始开发套件时,为了减少您的验收时间,建议您提供以下信息至邮件组
:[email protected]</p>
<ul>
<li>套件所属的行业类别</li>
<li>产品功能相关说明</li>
<li>是否收费</li>
<li>产品原型稿</li>
</ul>
<p>您将经过创建套件、创建微应用、创建测试企业、调用开放平台API开发微应用来完成您的套件开发</p>
<h3 id="1-创建套件">1: 创建套件</h3>
<p>开发者可以编辑套件基本信息,创建微应用。</p>
<h4 id="基本流程(basic-flow)">基本流程(Basic Flow)</h4>
<h5 id="1-钉钉应用菜单-套件列表,点击“创建套件”">1.钉钉应用菜单-套件列表,点击“创建套件”</h5>
<p><img alt="createtj" src="https://img.alicdn.com/tps/TB1IJQRLXXXXXb0XFXXXXXXXXXX-1421-196.jpg" /></p>
<h5 id="2.填写创建套件表单">2.填写创建套件表单</h5>
<p><img alt="createtjbd" src="https://img.alicdn.com/tps/TB1Az_EJFXXXXb3XFXXXXXXXXXX-678-539.jpg" /></p>
<h5 id="数据项说明:">数据项说明:</h5>
<table><thead>
<tr>
<th>字段</th>
<th>属性</th>
</tr>
</thead><tbody>
<tr>
<td>名称</td>
<td>套件的名称</td>
</tr>
<tr>
<td>套件Logo</td>
<td>上传大小不超过1M,长宽等比且范围在50px至200px之间的png格式图片</td>
</tr>
<tr>
<td>Token</td>
<td>可任意填写,用于生成签名,校验回调请求的合法性。本套件下相关应用产生的回调消息都使用该值来解密。</td>
</tr>
<tr>
<td>数据加密密钥</td>
<td>回调消息加解密参数,是AES密钥的Base64编码,用于解密回调消息内容对应的密文。本套件下相关应用产生的回调消息都使用该值来解密。</td>
</tr>
<tr>
<td>IP白名单</td>
<td>调用钉钉API时的合法IP列表,多个IP请以“,”隔开,如IP有变化,请立即更新</td>
</tr>
<tr>
<td>回调URL</td>
<td>以http://开头,系统将会把此套件的SuiteTicket,临时授权码以及授权变更事件推送给此URL,详细请看<a href="#2-回调接口(分为五个回调类型)"><font color=red >回调接口</font></a></td>
</tr>
<tr>
<td>当前状态</td>
<td>对于需要公开售卖的套件,只有处于已完成状态,才可进入售卖流程</td>
</tr>
</tbody></table>
<p><strong>当您注册套件时,钉钉服务器为了避免无效推送,将会验证回调url的有效性,对回调url推送"验证回调URL有效性事件",收到推送后您需要做正确的处理,才能成功创建套件。详细处理步骤请查看<a href="#2-回调接口(分为五个回调类型)"><font color=red >回调接口</font></a>和"验证回调URL有效性事件"。</strong></p>
<h5 id="3-点击“确定”按钮进入套件列">3.点击“确定”按钮进入套件列</h5>
<p>在这里可以查看套件详细信息,比如套件Key(suite_key),套件secret(suite_secret)</p>
<h3 id="2-创建微应用">2: 创建微应用</h3>
<h4 id="基本流程(basic-flow)">基本流程(Basic Flow)</h4>
<h5 id="1-查看套件基本信息">1 查看套件基本信息</h5>
<h5 id="2-点击“创建微应用按钮”">2 点击“创建微应用按钮”</h5>
<p><img alt="createmini1" src="https://img.alicdn.com/tps/TB1CNZ7LXXXXXXnXpXXXXXXXXXX-1240-299.jpg" /></p>
<h5 id="3-添加创建微应用表单,点击“确定”按钮">3 添加创建微应用表单,点击“确定”按钮</h5>
<p><img alt="createmini2" src="https://img.alicdn.com/tps/TB18FoZLXXXXXXqXFXXXXXXXXXX-681-673.jpg" /></p>
<h5 id="需要提供的数据项:">需要提供的数据项:</h5>
<table><thead>
<tr>
<th>字段</th>
<th>属性</th>
</tr>
</thead><tbody>
<tr>
<td>名称</td>
<td>应用的名称,2-16个字。</td>
</tr>
<tr>
<td>图标</td>
<td>上传大小不超过1M,长宽等比且范围在50px至200px之间的png格式图片</td>
</tr>
<tr>
<td>应用描述</td>
<td>描述该应用的功能与特色,4-120个字内</td>
</tr>
<tr>
<td>主页地址</td>
<td>以http://开头,用于接收托管企业应用的用户消息,URL支持使用$CORPID$模板参数表示corpid,用户访问应用的时候将把$CORPID$替换成用户所属企业的corpid,例如http://www.dingtalk.com/index?corpid=$CORPID$</td>
</tr>
<tr>
<td>PC主页地址</td>
<td>微应用PC端主页地址</td>
</tr>
<tr>
<td>权限设置</td>
<td>此处权限会在用户授权您的套件时进行显示告知用户您的套件所需要获取的企业员工信息,当企业用户授权后,您可以通过<a href="#获取部门成员(详情)"><font color=red>获取部门成员(详情)</font></a>接口获取员工的详细信息</td>
</tr>
<tr>
<td>接口权限</td>
<td>此处权限会在用户授权您的套件时进行显示告知用户您的套件所需要获取的企业信息,当企业用户授权后,您的套件可以钉钉开放平台提供的对应接口</td>
</tr>
</tbody></table>
<h5 id="4-创建成功后微应用列表添加一行记录">4 创建成功后微应用列表添加一行记录</h5>
<p><img alt="createmini3" src="https://img.alicdn.com/tps/TB1lC7QLXXXXXcJXFXXXXXXXXXX-1245-353.jpg" /></p>
<h3 id="3-注册测试企业">3: 注册测试企业</h3>
<p>钉钉套件在开发过程中,需要在钉钉移动端上登录绑定了相关企业的钉钉帐号来进行调试。在此之前,需要开发者在授权管理中对注册的测试企业"发起授权",之后钉钉服务器会向您填写的回调url<a href="#2-回调接口(分为五个回调类型)"><font color=red>推送临时授权码</font></a>,您需要通过临时授权码一步一步到<a href="#8-激活授权套件"><font color=red>激活授权套件</font></a>,才能让测试企业的微应用列表出现您开发的微应用。</p>
<p>备注:[<font color=red>钉钉当前支持最多创建10个测试企业</font>]</p>
<h4 id="基本流程(basic-flow)">基本流程(Basic Flow)</h4>
<h5 id="1-钉钉应用菜单—开发环境列表,点击“注册测试企业”">1.钉钉应用菜单—开发环境列表,点击“注册测试企业”</h5>
<p><img alt="signintest1" src="https://img.alicdn.com/tps/TB1qYgPLXXXXXX.XVXXXXXXXXXX-1247-84.jpg" /></p>
<h5 id="2-填写企业相关信息">2.填写企业相关信息</h5>
<p><img alt="signintest2" src="https://img.alicdn.com/tps/TB1p1H3IVXXXXX8aXXXXXXXXXXX-729-447.png" /></p>
<h5 id="3-点击“确定”后列表增加一行记录">3.点击“确定”后列表增加一行记录</h5>
<p><img alt="signintest3" src="https://img.alicdn.com/tps/TB1SRoPLXXXXXXIXVXXXXXXXXXX-1230-272.jpg" /></p>
<h5 id="4-点击“授权”,对微应用进行授权">4.点击“授权”,对微应用进行授权</h5>
<p>注意:只有在微应用注册的回调接口能够接收推送,才能成功开通微应用,具体详情查看<a href="#5-回调接口(分为五个回调类型)"><font color=red>回调接口</font></a></p>
<p><img alt="signintest4" src="https://img.alicdn.com/tps/TB1qxEULXXXXXaMXFXXXXXXXXXX-1233-341.jpg" /></p>
<h5 id="5-点击“登录管理”跳转钉钉登录后台">5.点击“登录管理”跳转钉钉登录后台</h5>
<p><img alt="signintest5" src="https://img.alicdn.com/tps/TB1cHQVLXXXXXazXFXXXXXXXXXX-1220-195.jpg" /></p>
<p><img alt="signintest6" src="https://img.alicdn.com/tps/TB1snUfIVXXXXbSXpXXXXXXXXXX-866-456.png" /></p>
<h3 id="4-开发套件">4: 开发套件</h3>
<ul>
<li><p>钉钉开放平台提供了接入一组应用接入与授权的接口,通过实现接入与授权接口您可以快速发布自己的微应用套件,并在企业客户授权开通微应用时,自动进行开通激活,企业用户可以授权后直接使用您的套件(应用),接口使用可以参考<a href="#isv接入开发指南"><font color=red >ISV接入开发指南</font></a>;该指南主要介绍了企业和ISV(服务提供商)如何接入钉钉开放平台,其中涉及到接入过程中使用的工具、与钉钉开放平台相关的概念和接入钉钉开放平台的一些实践方法,以帮助开发者快速开发自己的微应用。</p></li>
<li><p>钉钉开放平台提供了<strong>企业通讯录管理、文件管理、发送企业会话消息</strong>等功能,接口使用可以参考<a href="#服务端开发文档"><font color=red >服务端开发文档</font></a>;</p></li>
<li><p>我们定制了微应用专用的运行容器,提供了一组可以调用<strong>钉钉的本地能力和业务逻辑</strong>的JS接口,开发者可以通过这些接口使用钉钉的本地能力或者钉钉的业务逻辑,降低开发成本,提高微应用在移动客户端的体验。接口使用可以参考<a href="#客户端开发文档"><font color=red >客户端开发文档</font></a>。</p></li>
<li><p>钉钉开放平台提供了与钉钉PC版本集成的能力,接口使用可以参考<a href="#pc端开发文档"><font color=red >PC端开发文档</font></a>;</p></li>
<li><p>钉钉开放平台提供了开发过程中需要的调试工具和性能优化的建议,您可以参考<a href="#调试工具-amp-性能优化"><font color=red >调试工具&性能优化</font></a>;</p></li>
</ul>
<h2 id="step-4-推广套件">Step 4 – 推广套件</h2>
<h4 id="step-4-1-线下快速部署推广套件">Step 4.1 – 线下快速部署推广套件</h4>
<ul>
<li><p>套件通过ISV线下推广,可以通过2种方式进行操作:</p></li>
<li><p>1.通过企业接入的方式,为企业单独进行接入(详见企业接入指南中描述)</p></li>
<li><p>2.通过钉钉快速部署进行实施(推荐)。使用此方式需满足<a href="#标准规范"><font color=red>标准规范</font></a>中的要求,钉钉团队会进行质量验收,其它项由ISV自己负责,如果接收到用户的投诉,钉钉保留对ISV的处罚权利</p></li>
</ul>
<h3 id="step-4-1-–-线下快速部署推广套件">Step 4.1 – 线下快速部署推广套件</h3>
<p>此处为ISV套件通过钉钉线下快速部署的方式进行套件推广指南,按照此处描述步骤,您(ISV)可以将您开发好的套件通过线下快速部署的方式快速安装至您的目标企业用户。如需进行进一步合作,您可以通过联系钉钉ISV接入接口人进行合作洽谈及商务合作签订,请通过联系方式:[email protected] 进行联系。</p>
<p>通过钉钉快速部署推广套件您需要经过以下几步:</p>
<ul>
<li> <a href="#step-1-–-实现快速部署技术方案"><font color=red >Step 1 – 实现快速部署技术方案</font></a> </li>
<li> <a href="#step-2-–-入驻云市场服务商并发布商品"><font color=red >Step 2 – 入驻云市场服务商并发布商品</font></a> </li>
<li> <a href="#step-3-–-钉钉验收"><font color=red >Step 3 – 钉钉验收</font></a> </li>
<li> <a href="#step-4-–-获取企业邀请码"><font color=red >Step 4 – 获取企业邀请码</font></a> </li>
<li> <a href="#step-5-–-提交isv线下快速部署申请表"><font color=red >Step 5 – 提交ISV线下快速部署申请表</font></a></li>
<li> <a href="#step-6-–-isv部署推广"><font color=red >Step 6 – ISV部署推广</font></a></li>
</ul>
<h4 id="step-1-–-实现快速部署技术方案">Step 1 – 实现快速部署技术方案</h4>
<p>ISV使用快速部署必须先实现<a href="#isv套件对企业独立部署方案"><font color=red>ISV套件对企业独立部署方案</font></a></p>
<h4 id="step-2-–-入驻云市场服务商并发布商品">Step 2 – 入驻云市场服务商并发布商品</h4>
<p>ISV需要在云市场提交商品审核<font color=red>(钉钉小二会将商品审核为预上架状态,此套件在市场上不可见)</font>,套件上架流程详见:<a href="#套件上架操作流程"><font color=red>套件上架流程</font></a>,在进入下一步之前您需要确保云市场服务商审核通过,确保商品提交审核。</p>
<h4 id="step-3-–-钉钉验收">Step 3 – 钉钉验收</h4>
<p>ISV需要遵守统一的验收标准规范,请参考:<a href="#标准规范"><font color=red>标准规范</font></a>,钉钉会依据标准进行验收</p>
<ul>
<li>统一验收标准,由ISV自查方式,钉钉采用质量+安全验收,其他标准抽查的方式验收,如验收发现缺陷,程度轻微者:ISV必须在2日内提交改进计划,1周内限期改进,如严重缺陷,钉钉保留后续相应惩罚措施</li>
<li>ISV提交商品上架审核时,审核人员启动质量验收和安全审核,不通过,则退回改进</li>
<li>ISV需要完成产品质量和安全验收</li>
</ul>
<p>钉钉验收完成之后您的商品状态变更为预上架状态</p>
<h4 id="step-4-–-获取企业邀请码">Step 4 – 获取企业邀请码</h4>
<p>ISV在接入之前需要通过联系钉钉ISV接入接口人获取ISV企业邀请码,联系方式:[email protected]</p>
<h4 id="step-5-–-提交isv线下快速部署申请表">Step 5 – 提交ISV线下快速部署申请表</h4>
<p>填写“ISV线下快速部署申请表”,发送到[email protected]申请, 审核通过后,钉钉小二会发送链接&二维码给ISV, ISV可以生成H5页面,分享给用户扫码或者点击下载<a href="http://download.taobaocdn.com/freedom/30712/xls/p1a8ns3o361p8c1n7o2610vqav84.xls"><font color=red>ISV线下快速部署申请表</font></a></p>
<p><img alt="Application Form" src="https://img.alicdn.com/tps/TB1dSVMLpXXXXbsXFXXXXXXXXXX-1455-826.png" />
填写说明:</p>
<table><thead>
<tr>
<th>栏位</th>
<th>填写要求</th>
</tr>
</thead><tbody>
<tr>
<td>服务商名称</td>
<td>必填,阿里云市场注册的服务商全名</td>
</tr>
<tr>
<td>云市场product code</td>
<td>必填,ISV提交云市场商品审核的云市场product code(提交商品审核,审核员会回复告知商品的代码,10位代码,如cmd0000000),套件上架流程详见:<a href="#套件上架操作流程"><font color=red>套件上架流程</font></a></td>
</tr>
<tr>
<td>邀请码</td>
<td>必填,钉钉ISV接入接口人分配的ISV企业邀请码</td>
</tr>
<tr>
<td>申请快速部署原因</td>
<td>必填,需要申明使用此方案的原因、使用场景信息</td>
</tr>
<tr>
<td>是否有现场实施人员</td>
<td>必填,是否有现场实施人员支持,如没有,注明通过什么方式分享二维码</td>
</tr>
<tr>
<td>通讯录导入方式</td>
<td>必填,选择isv引入的企业用户通过哪种方式维护通讯录,如:由企业管理员通过钉钉OA后台导入,通过钉钉手机端创建团队;ISV现有系统通过钉钉接口导入等</td>
</tr>
<tr>
<td>是否验证应用序列号</td>
<td>必填,填写“是”或”否“,”否“代表不对序列号进行验证,“是” 代表isv需要对序列号进行验证(isv需要自己实现对序列号的校验程序)。此序列号由isv自主颁发给客户,用于证明客户具备线下开通微应用的正版权益和防止二维码泄漏而导致的无效授权举例: ISV 通过自有渠道,售卖了一套微应用给客户A,客户A扫码可以快速创建团队并开通应用,如果该二维码分享给了B,B也可以通过扫码开通应用,而B实际并未支付费用,为避免此问题,ISV可以发给A客户唯一的序列号,A客户扫码后,必须输入序列号并得到ISV验证,才可开通应用</td>
</tr>
<tr>
<td>套件icon</td>
<td>引导页面需要套件icon,必须是PNG图片,规格120*120,圆角,弧度=22度,请在“套件icon”sheet页进行上传</td>
</tr>
</tbody></table>
<p>5.如果需要定义不同的任务或者其他特殊需求,请提前在开发阶段,向接口的钉钉小二提出产品需求(任务:见产品主体流程中描述的开通步骤,每个步骤称为一个任务)</p>
<h4 id="step-6-–-isv部署推广">Step 6 – ISV部署推广</h4>
<p>通过<a href="#step-5---提交isv线下快速部署申请表"><font color=red >Step 5 – 提交ISV线下快速部署申请表</font></a>您会获取到部署二维码或部署链接,至此您可以通过此二维码或部署链接推广至您的目标企业用户进行快速安装</p>
<h3 id="钉钉快速部署产品主体流程介绍">钉钉快速部署产品主体流程介绍</h3>
<p><img alt="ksbs_process" src="https://img.alicdn.com/tps/TB1xcWaLXXXXXcIXVXXXXXXXXXX-863-585.png" /></p>
<p>实施步骤:
1. 安装钉钉,并且完成注册,请使用以下二维码和链接,让客户扫码,打开下载钉钉地址:
http://s.dingtalk.com/market/dingtalk/download.php?lwfrom=20151223115042450</p>
<p><img alt="DD_QRcode" src="https://img.alicdn.com/tps/TB1HeydLXXXXXaJXVXXXXXXXXXX-584-584.png" /></p>
<p>2.提交快速部署后,钉钉工作人员会通过邮件,发送套件二维码给ISV, 客户通过钉钉手机端上的扫码工具,扫描进入快速部署引导页</p>
<p><img alt="DD_ksbs1" src="https://img.alicdn.com/tps/TB1n7qhLXXXXXXhXVXXXXXXXXXX-427-640.png" /></p>
<p>3.创建团队:配置可以选择创建1人团队(大于等于1人),或多人团队(大于等于6人),
➢1人团队:适合人数较多团队,需要通过钉钉OA管理后台表格导入,或者
➢多人团队:适合人数较少团队,便于在钉钉手机端上,创建团队</p>
<p><img alt="DD_ksbs2" src="https://img.alicdn.com/tps/TB17wWoLXXXXXcTXpXXXXXXXXXX-394-652.png" /></p>
<p>4.开通微应用:分为3步::输入应用序列号-立即授权-使用范围设置
4.1 输入应用序列号: 应用序列号由ISV生成并颁发给客户,以证明客户具备线下开通微应用的正版权益;该步骤是否必须可以配置
➢ISV通过openapi /service/get_auth_info 获取授权信息,应用序列号即在返回数据中
➢/service/get_auth_info接口具体信息请参考 <a href="#6-获取企业授权的授权数据"><font color=red>获取企业授权的授权数据</font></a></p>
<p><img alt="DD_ksbs3" src="https://img.alicdn.com/tps/TB18Hx9LXXXXXbeaXXXXXXXXXXX-427-706.png" /></p>
<p>4.2:立即授权</p>
<p><img alt="DD_ksbs4" src="https://img.alicdn.com/tps/TB1Ic9CLXXXXXaxXXXXXXXXXXXX-438-720.png" /></p>
<p>4.3:设置使用范围,设置微应用哪些员工可以使用</p>
<p><img alt="DD_ksbs5" src="https://img.alicdn.com/tps/TB1iV5nLXXXXXcaXpXXXXXXXXXX-449-780.png" /></p>
<p>4.4 开始使用, 用户点击“开始使用”可以进入手机端工作界面页</p>
<p><img alt="DD_ksbs6" src="https://img.alicdn.com/tps/TB190CBLXXXXXa.XXXXXXXXXXXX-450-729.png" />
<img alt="DD_ksbs7" src="https://img.alicdn.com/tps/TB17ceELXXXXXXtXXXXXXXXXXXX-504-702.png" /></p>
<p>4.5 开通授权后,isv可获取团队邀请链接,团队邀请链接处理逻辑
➢isv通过openapi /service/get_auth_info 获取授权信息,团队邀请链接即在返回数据中
➢/service/get_auth_info接口具体信息请参考<a href="#6-获取企业授权的授权数据"><font color=red>获取企业授权的授权数据</font></a></p>
<h2 id="isv接入开发指南">ISV接入开发指南</h2>
<h3 id="1-isv接口调用整体流程">1: ISV接口调用整体流程</h3>
<p>欢迎成为钉钉套件(微应用)的服务提供商!
通过接入钉钉ISV的应用授权接口,可以快速发布自己的微应用套件,并在企业客户授权开通微应用时,自动进行开通激活,企业用户可以授权后直接使用您的套件(应用)!</p>
<p>钉钉的应用授权接口包含以下两个阶段:</p>
<h4 id="isv注册套件(微应用)">ISV注册套件(微应用)</h4>
<p>当前您经过<a href="#注册钉钉开发者"><font color=red >注册钉钉开发者</font></a>
和<a href="#创建套件&微应用"><font color=red >创建套件&微应用</font></a>之后,
已经注册成为钉钉开发者,并在开发者平台中创建好了套件及应用,您需要实现钉钉回调接口,实现<a href="#2-回调接口(分为五个回调类型)"><font color=red >回调接口</font></a>中的验证url有效性和定时推送Ticket,实现这俩个回调之后您就可以开发您的套件(微应用)了。</p>
<h4 id="企业管理员授权套件(微应用)">企业管理员授权套件(微应用)</h4>
<p>当您开发好套件之后,您需要<a href="#3-注册测试企业"><font color=red >注册测试企业</font></a>进行管理员授权应用模拟,
您可以在『授权管理』中进行授权操作,授权成功后,您需要立即激活套件,确保测试企业可以正常使用套件中的功能。</p>
<p>当您的套件发布后,当企业管理员通过钉钉提供的 微应用的第三方授权页面 确认授权内容后,<strong><font color=red>ISV需要立即激活套件,从用户授权至套件激活整体应在5s内完成</font></strong>,授权以及激活完成之后,企业就可使用ISV服务提供商所提供的应用服务了。</p>
<p>以下是套件从开发到企业开始使用套件的详细的接口调用时序图
<img alt="Mou icon" src="https://img.alicdn.com/tps/TB1b1fdLXXXXXXTXVXXXXXXXXXX-896-702.jpg" /></p>
<h3 id="2-回调接口(分为五个回调类型)">2: 回调接口(分为五个回调类型)</h3>
<h4 id="使用场景">使用场景</h4>
<p>使用回调接口主要用来实现2个场景:
- 创建套件(微应用)后将其注册至钉钉,与之关联的回调接口为a.验证回调URL有效性事件;b: 定时推送Ticket
- 企业用户在使用您的套件(微应用)之前,需要通过钉钉进行授权与激活,与之关联的回调接口为 c:回调向ISV推送临时授权码;d:回调向ISV推送授权变更消息;e."套件信息更新"事件;f."解除授权"事件;g."校验序列号"事件</p>
<h4 id="调用说明">调用说明</h4>
<p>在使用回调接口之前您需要了解的是,
首先要拿到您创建套件时填写的"回调URL","Token","数据加密密钥(ENCODING_AES_KEY)",</p>
<ul>
<li><p>回调URL:服务提供商接收推送请求的协议和地址</p></li>
<li><p>Token:服务提供商在注册时任意填写的,用来生成signature,用来和回调参数中的signature比对,校验消息的合法性</p></li>
<li><p>数据加密密钥(ENCODING_AES_KEY):用于消息体的加解密。</p></li>
</ul>
<p>钉钉服务器会向服务提供商申请时填写的套件回调URL定时推送SuiteTicket,以及临时授权码和授权设置变更。</p>
<p>以<a href="http://ddtalk.github.io/dingTalkDoc/?spm=a3140.7785475.0.0.Ju6sXi#加解密库和demo下载">服务端demo java版本</a>做示例,您提供的回调URL是</p>
<p><code class="prettyprint">http://您服务端部署的IP:您的端口/demo/isvreceive</code></p>
<p>那么在钉钉服务器每一次访问回调URL的时候
将请求(下面链接中的signature,timestamp,nonce的值只是示例,并不代表真实返回的值):</p>
<p><code class="prettyprint">http://您服务端部署的IP:您的端口/demo/isvreceive?signature=111108bb8e6dbce3c9671d6fdb69d15066227608
&timestamp=1783610513&nonce=380320111</code></p>
<pre class="highlight json"><code><span class="p">{</span><span class="w">
</span><span class="nt">"encrypt"</span><span class="p">:</span><span class="s2">"1ojQf0NSvw2WPvW7LijxS8UvISr8pdDP+rXpPbcLGOmIBNbWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+ccC9ZjKs1wV5bmA9NoAWQiZ+7MpzQVq+j74rJQljdVyBdI/dGOvsnBSCxCVW0ISWX0vn9lYTuuHSoaxwCGylH9xRhYHL9bRDskBc7bO0FseHQQasdfghjkl"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<p>回调数据的格式如右所示:</p>
<p>其中的encrypt字段是经过加密的消息体,encrypt经过一系列解密步骤后,才能产生下面所说的“POST数据解密后示例”,服务提供商可以直接使用钉钉提供的库进行解密的处理。</p>
<p>除此之外,在接收到推送之后,<strong>需要返回相应的加密字符串(代表了你收到了推送)</strong>,如果ISV未能成功返回,钉钉服务器将持续推送下去,达到100次后将不再推送。</p>
<p>"Talk is cheap, show me the code."所以我们也为开发者提供了加解密的demo,目前提供Java/PHP等语言版本。
加解密库和demo的下载:<a href="#加解密库和demo下载"><font color=red >加解密库和demo下载</font></a></p>
<p>本地调试:<a href="#调试工具"><font color=red >如何本地进行调试?</font></a></p>
<p>如有需要,可以查看具体加解密步骤:<a href="#加解密方案说明"><font color=red >加解密方案说明</font></a></p>
<h4 id="接口说明">接口说明</h4>
<h4 id="a-验证回调url有效性事件">a.<font color=red >验证回调URL有效性事件</font></h4>
<p>此事件的推送会发生在注册套件,点击下图按钮之时。注意,若未能成功验证回调URL有效性,套件将不能被创建。</p>
<p><img alt="verifyurl" src="https://img.alicdn.com/tps/TB1RuHzJFXXXXahXVXXXXXXXXXX-615-100.jpg" /></p>
<pre class="highlight plaintext"><code>dingTalkEncryptor = new DingTalkEncryptor(Env.TOKEN, Env.ENCODING_AES_KEY, Env.CREATE_SUITE_KEY);//套件在创建中,使用默认的SUITE_KEY进行加解密
</code></pre>
<p>此时,由于套件尚未创建成功,还未生成套件的SUITE_KEY,所以在解密post数据的时候,需要使用默认的Env.CREATE_SUITE_KEY(默认值为"suite4xxxxxxxxxxxxxxx")来解密,以java-demo代码为例(Env为Demo中配置文件),如右,服务端demo已经做了配置。</p>
<p>同时,Demo的配置文件(Env.java)中还需要根据套件创建时填写的TOKEN 和 ENCODING_AES_KEY做相应的更改。</p>
<p><img alt="verifyurl" src="https://img.alicdn.com/tps/TB1LK2kLXXXXXasXFXXXXXXXXXX-1338-1072.png" /></p>
<p>待成功处理『验证回调URL有效性事件』事件,套件创建成功之后,就不能再使用默认的SUITE_KEY了,需要使用套件本身的SUITE_KEY,所以需要在Env.java中配置SUITE_KEY,同时将新创建套件中的SUITE_SECRET配置到Env.java中,然后重新部署代码,此时将用下面的语句进行加解密。因为推送ticket是二十分钟推送一次,再次部署也需要等待二十分钟服务端才会推送,后续会优化该逻辑,保证即时推送,提高推送效率。</p>
<p><code class="prettyprint">dingTalkEncryptor = new DingTalkEncryptor(Env.TOKEN, Env.ENCODING_AES_KEY, Env.SUITE_KEY);//套件创建成功后,使用套件本身的SUITE_KEY进行加解密</code></p>
<p>POST数据解密后示例</p>
<pre class="highlight json"><code><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"EventType"</span><span class="p">:</span><span class="s2">"check_create_suite_url"</span><span class="p">,</span><span class="w">
</span><span class="nt">"Random"</span><span class="p">:</span><span class="s2">"brdkKLMW"</span><span class="p">,</span><span class="w">
</span><span class="nt">"TestSuiteKey"</span><span class="p">:</span><span class="s2">"suite4xxxxxxxxxxxxxxx"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<table><thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead><tbody>
<tr>
<td>Random</td>
<td>随机字符串</td>
</tr>
<tr>
<td>EventType</td>
<td>check_create_suite_url</td>
</tr>
<tr>
<td>TestSuiteKey</td>
<td>校验的SuiteKey</td>
</tr>
</tbody></table>
<h5 id="返回说明">返回说明</h5>
<p>服务提供商在收到此事件推送后务必返回包含经过加密后"Random"字段的json数据,比如对于上面的示例,需要返回的即是加密后的"brdkKLMW"字符串。</p>
<p>只有返回了对应的json数据,钉钉才会判断此事件推送成功,套件才能创建成功。</p>
<pre class="highlight json"><code><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"msg_signature"</span><span class="p">:</span><span class="s2">"111108bb8e6dbce3c9671d6fdb69d15066227608"</span><span class="p">,</span><span class="w">
</span><span class="nt">"timeStamp"</span><span class="p">:</span><span class="s2">"1783610513"</span><span class="p">,</span><span class="w">
</span><span class="nt">"nonce"</span><span class="p">:</span><span class="s2">"123456"</span><span class="p">,</span><span class="w">
</span><span class="nt">"encrypt"</span><span class="p">:</span><span class="s2">"1ojQf0NSvw2WPvW7LijxS8UvISr8pdDP+rXpPbcLGOmIBNbWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+ccC9ZjKs1wV5bmA9NoAWQiZ+7MpzQVq+j74rJQljdVyBdI/dGOvsnBSCxCVW0ISWX0vn9lYTuuHSoaxwCGylH9xRhYHL9bRDskBc7bO0FseHQQasdfghjkl"</span><span class="w"> </span><span class="err">//</span><span class="w"> </span><span class="s2">"Random"</span><span class="err">字段的加密数据</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<table><thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead><tbody>
<tr>
<td>msg_signature</td>
<td>消息体签名</td>
</tr>
<tr>
<td>timeStamp</td>
<td>时间戳</td>
</tr>
<tr>
<td>nonce</td>
<td>随机字符串</td>
</tr>
<tr>
<td>encrypt</td>
<td>"Random"字段的加密字符串</td>
</tr>
</tbody></table>
<h4 id="b-定时推送ticket">b: 定时推送Ticket</h4>
<p>服务器会向服务提供商申请时填写的套件事件接收 URL定时(二十分钟)推送ticket:</p>
<p>服务提供商在收到ticket推送后务必返回经过加密的字符串"success"的json数据,同时,如果该套件下没有任何的微应用,定时推送的ticket也不会成功,需要保证至少有一个ticket。</p>
<p>如果不返回,钉钉服务器将连续推送,直到推送次数超过100次,就不再推送。倘若您希望钉钉服务器重新推送,需要进入<a href="http://console.d.aliyun.com"><font color=red>开发者后台</font></a>,进入套件管理页面,点击『重新推送』按钮,即可重新推送。
<img alt="repush" src="https://img.alicdn.com/tps/TB15j7OJFXXXXckXXXXXXXXXXXX-1121-124.jpg" /></p>
<p>以<a href="http://ddtalk.github.io/dingTalkDoc/?spm=a3140.7785475.0.0.Ju6sXi#加解密库和demo下载">服务端demo java版本</a>做示例,每二十分钟服务端会向服务商提供的接口进行一次回调,可以在IsvReceiveServlet.java文件中,打印并获取Env.suiteTicket。在<a href="https://debug.dingtalk.com/isv.html">debug平台</a>获取套件的SuiteAccessToken。</p>
<p>POST数据解密后示例</p>
<pre class="highlight json"><code><span class="p">{</span><span class="w">
</span><span class="nt">"SuiteKey"</span><span class="p">:</span><span class="w"> </span><span class="s2">"suitexxxxxx"</span><span class="p">,</span><span class="w">
</span><span class="nt">"EventType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"suite_ticket "</span><span class="p">,</span><span class="w">
</span><span class="nt">"TimeStamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1234456</span><span class="p">,</span><span class="w">
</span><span class="nt">"SuiteTicket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adsadsad"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<table><thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead><tbody>
<tr>
<td>SuiteKey</td>
<td>应用套件的SuiteKey</td>
</tr>
<tr>
<td>EventType</td>
<td>suite_ticket</td>
</tr>
<tr>
<td>TimeStamp</td>
<td>时间戳</td>
</tr>
<tr>
<td>SuiteTicket</td>
<td>Ticket内容</td>
</tr>
</tbody></table>
<h5 id="返回说明">返回说明</h5>
<p>服务提供商在收到此事件推送后务必返回包含经过加密的字符串"success"的json数据</p>
<p>只有返回了对应的json数据,钉钉才会判断此事件推送成功,套件才能创建成功。</p>
<pre class="highlight json"><code><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"msg_signature"</span><span class="p">:</span><span class="s2">"111108bb8e6dbce3c9671d6fdb69d15066227608"</span><span class="p">,</span><span class="w">
</span><span class="nt">"timeStamp"</span><span class="p">:</span><span class="s2">"1783610513"</span><span class="p">,</span><span class="w">
</span><span class="nt">"nonce"</span><span class="p">:</span><span class="s2">"123456"</span><span class="p">,</span><span class="w">
</span><span class="nt">"encrypt"</span><span class="p">:</span><span class="s2">"1ojQf0NSvw2WPvW7LijxS8UvISr8pdDP+rXpPbcLGOmIBNbWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+ccC9ZjKs1wV5bmA9NoAWQiZ+7MpzQVq+j74rJQljdVyBdI/dGOvsnBSCxCVW0ISWX0vn9lYTuuHSoaxwCGylH9xRhYHL9bRDskBc7bO0FseHQQasdfghjkl"</span><span class="w"> </span><span class="err">//</span><span class="w"> </span><span class="s2">"Random"</span><span class="err">字段的加密数据</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<table><thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead><tbody>
<tr>
<td>msg_signature</td>
<td>消息体签名</td>
</tr>
<tr>
<td>timeStamp</td>
<td>时间戳</td>
</tr>
<tr>
<td>nonce</td>
<td>随机字符串</td>
</tr>
<tr>
<td>encrypt</td>
<td>"success"加密字符串</td>
</tr>
</tbody></table>
<h4 id="c-回调向isv推送临时授权码">c:回调向ISV推送临时授权码</h4>
<p>当授权方(即授权企业)在微应用管理端的授权管理中,向服务提供商的应用套件授权了访问权限,钉钉服务器会向服务提供商的套件事件接收 URL(创建套件时填写)推送临时授权码,</p>
<p>比如在<a href="http://console.d.aliyun.com"><font color=red>钉钉开发者后台</font></a>中,模拟测试企业发起授权,钉钉服务器就会向回调url推送测试企业的临时授权码</p>
<p><img alt="shouqun" src="https://img.alicdn.com/tps/TB1rZerKpXXXXX8XXXXXXXXXXXX-720-124.jpg" /></p>
<p>以<a href="http://ddtalk.github.io/dingTalkDoc/?spm=a3140.7785475.0.0.Ju6sXi#加解密库和demo下载">服务端demo java版本</a>做示例,可以在IsvReceiveServlet.java文件中,打印并获取Env.authCode。在<a href="https://debug.dingtalk.com/isv.html">debug平台</a>获取套件的永久授权码,请将永久授权码保存下来,目前永久授权码丢失之后没法再次获取,只能创建套件重新来,后续会优化该逻辑,解决临时授权码只能获取一次永久授权码的问题。</p>
<p>POST数据解密后示例</p>
<pre class="highlight json"><code><span class="p">{</span><span class="w">
</span><span class="nt">"SuiteKey"</span><span class="p">:</span><span class="w"> </span><span class="s2">"suitexxxxxx"</span><span class="p">,</span><span class="w">
</span><span class="nt">"EventType"</span><span class="p">:</span><span class="w"> </span><span class="s2">" tmp_auth_code"</span><span class="p">,</span><span class="w">
</span><span class="nt">"TimeStamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1234456</span><span class="p">,</span><span class="w">
</span><span class="nt">"AuthCode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adads"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<p>字段说明</p>
<table><thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead><tbody>
<tr>
<td>SuiteKey</td>
<td>应用套件的SuiteKey</td>
</tr>
<tr>
<td>EventType</td>
<td>tmp_auth_code</td>
</tr>
<tr>
<td>TimeStamp</td>
<td>时间戳</td>
</tr>
<tr>
<td>AuthCode</td>
<td>临时授权码</td>
</tr>
</tbody></table>
<h5 id="返回说明">返回说明</h5>
<p>服务提供商在收到此事件推送后务必返回包含经过加密的字符串"success"的json数据</p>
<p>只有返回了对应的json数据,钉钉才会判断此事件推送成功,套件才能创建成功。</p>
<pre class="highlight json"><code><span class="w">