-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi
More file actions
14559 lines (12603 loc) · 693 KB
/
api
File metadata and controls
14559 lines (12603 loc) · 693 KB
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
# 默认模块
Base URLs:
# Authentication
# 开发API/登录模块
## POST (步骤1)获取登录二维码
POST /login/getLoginQrCode
- appId参数为设备ID,首次登录传空,会自动触发创建设备,掉线后重新登录则必须传接口返回的appId,注意**同一个号避免重复创建设备**,以免触发官方风控
**- 登录时必须选择本省地区ID,如无本省地区ID请自行购买本省或本市代理IP**
- 如果**IPAD类型扫码登录提示** “在**新设备完成验证以继续登录**” 需要更换type为mac进行登录,切换顺序为ipad-->mac。mac类型可以进行验证,**当mac出现新设备验证时,参考[执行登录接口](https://post.wechatapi.net/login/checklogin)。也可以直接使用mac登录**
- **取码时传的appId需要与上次登录扫码的微信一致,否则会导致登录失败**
> 如果需要全局代理(即所有接口都走代理,可直接在调用的接口内增加" useProxy:true "字段。useproxy字段默认为false不单独展示在各个接口内)但是有可能会影响接口的实时响应速度
**- [代理TTUID点击下载](https://pan.baidu.com/s/1_lCoPDKSLUW90Ew4yKMyoQ?pwd=1xdt)**
<Accordion title="regionId:微信登陆地区ID,登录时请选择最近的地区,目前支持以下地区:" defaultClose>
**地区ID在前,地区在后**
```java HelloWorld.java
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
210000*辽宁省|220000*吉林省|230000*黑龙江
310000*上海市|320000*江苏省|330000*浙江省|340000*安徽省|350000*福建省|360000*江西省|370000*山东省
410000*河南省|420000*湖北省|430000*湖南省|440000*广东省|450000*广西省|460000*海南省
500000*重庆市|510000*四川省|520000*贵州省|530000*云南省|540000*西藏自治区
610000*陕西省|620000*甘肃省|630000*青海省|640000*宁夏自治区|650000*新疆自治区
```
</Accordion>
- 若目前支持的regionId中没有您所在的地区,可以自行采购socks5协议代理IP,填写到proxyIp参数中
- 响应结果中的qrImgBase64为二维码图片的base64,前端可使用此值展示给用户扫码。(或使用响应结果中的qrData生成二维码)
- 地区ID仅供测试,如需正常使用业务建议自行购买干净代理ip。
> Body 请求参数
```json
{
"appId": "",
"proxyIp": "",
"regionId": "320000",
"type": "ipad",
"ttuid": ""
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |PS:API后台-点击访问控制-生成Token|
|body|body|object| 否 |none|
|» appId|body|string| 否 |设备ID,首次登录传空,之后传接口返回的appId|
|» proxyIp|body|string| 否 |代理IP 格式:socks5://username:password@123.2.2.2|
|» regionId|body|string| 是 |地区|
|» type|body|string| 是 |设备类型:ipad、mac(默认为ipad。|
|» ttuid|body|string| 否 |代理本机ID,需配合 regionId/proxyIp 使用,不单独使用。可临时借用用户的本地网络取码有50%概率跳过ipad验证。|
#### 详细说明
**» type**: 设备类型:ipad、mac(默认为ipad。
独立appid)
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功",
"data": {
"qrData": "http://weixin.qq.com/x/oaX6Iz_9w8hiLhJyXQim",
"qrUrl": "http://api.asilu.com/qrcode/?t=http://weixin.qq.com/x/oaX6Iz_9w8hiLhJyXQim&size=250",
"qrImgBase64": "data:image/jpg;base64,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",
"uuid": "oaX6Iz*****LhJyXQim",
"appId": "wx_ZmxPv*******TB1d35N5r"
}
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|object|true|none||响应数据|
|»» qrData|string|true|none||二维码内包含的信息|
|»» qrUrl|string|true|none||二维码直接打开地址|
|»» appId|string|true|none||设备ID|
|»» qrImgBase64|string|true|none||二维码图片base64|
|»» uuid|string|true|none||二维码的uuid|
## POST (步骤2)执行登录
POST /login/checkLogin
- 增加**ipad人脸识别验证**和mac滑块验证,ipad**仅支持IOS平台app扫码**验证,mac滑块验证支持app扫码验证和系统自动验证,开发者集成平台也可自行集成APP滑块验证,具体请点击ipad登录或者mac登录查看详情
- 获取登录二维码**扫码之后**需**每间隔5s调用本接口**来判断是否登录成功,**二维码超时时间为120秒**
**- 登录成功后logininfo有数据,如果没有数据则需要一直执行,直至出现登录数据或者失败为止。**
- 新设备登录平台,次日凌晨会掉线一次,重新登录时需调用[获取二维码且传appId取码](https://post.wechatapi.net/login/getloginqrcode),登录成功后则可以长期在线
- 登录成功后请保存appId与wxid的对应关系,后续接口中会用到
<Tabs>
<Tab title="iPad登录" >
☝️ 首次登录iPad出现**新设备验证**并且**无数字验证码**此时本接口会返回一个二维码网址,开发者需使用IOS设备下载[认证APP](https://www.pgyer.com/renzhengapp)扫描二维码网址,扫描人脸通过后,再次调用本接口,手机点击确认,则本接口返回登录结果。如果不进行人脸认证则需要切换Mac登录,请查看Mac登录流程
☝️ 首次登录iPad出现**新设备验证**并且**有数字验证码**直接在captchCode字段输入数字验证码,继续执行登录即可登录。
<Accordion title="iPad登录流程图,不清楚流程必看,点击此处" defaultOpen={false} icon="lucide-smartphone" >
<Frame caption="iPad登录流程图,不清楚流程必看">

</Frame>
</Accordion>
</Tab>
<Tab title="Mac登录">
☝️ 首次登录Mac如果出现新设备验证,可以**选择自动验证**,不需要下载APP。
☝️ 如果**不选择自动验证**会返回URL。生成二维码之后,需要使用[安卓设备下载APP](https://pan.baidu.com/s/19EEi3Au-IzGT7pN7dQQfFQ?pwd=81rg),扫码进行图形验证。操作完成后继续调用此接口即可通过新设备验证。
☝️用户若有自己平台App,则可代码接入,无需下载App
<Accordion title="Mac登录流程图,不清楚流程必看,点击此处" defaultOpen={false} Icon icon="lucide-airplay">
<Frame caption="Mac登录流程图,不清楚流程必看">

</Frame>
</Accordion>
</Tab>
</Tabs>
> Body 请求参数
```json
{
"appId": "{appid}",
"proxyIp": "{regionId}",
"uuid": "",
"autoSliding": "true"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» proxyIp|body|string| 否 |代理IP 格式:socks5://username:password@123.2.2.2|
|» uuid|body|string| 是 |获取二维码返回的uuid|
|» captchCode|body|string| 否 |扫码后手机提示输入的验证码,如未提示数字验证码可不传此字段。|
|» autoSliding|body|boolean| 是 |是否自动验证true/false,仅限mac使用。true为自动验证,false需要用app扫码验证。如果类型为ipad登录时必须传false。|
> 返回示例
```json
"{\n \"ret\": 200,\n \"msg\": \"操作成功\",\n \"data\": {\n \"uuid\": \"AfPV********5Mr\",\n \"headImgUrl\": \"http://wx.qlogo.c****D/0\",\n \"nickName\": \"苏生-服务支持\",\n \"expiredTime\": 201,\n \"status\": 1,\n \"loginInfo\": null\n }\n}\n//* 需要图形验证时返回,直接打开链接扫描二维码,使用app扫描验证\n{\n \"ret\": 200,\n \"msg\": \"操作成功\",\n \"data\": {\n \"url\": \"http://api.asilu.com/qrcode/?t=http://182.40.196.1:8123/s/01K585Y35QPBXD6JMZSNHJZAPZ\"\n }\n}"
```
```json
{
"ret": 200,
"msg": "操作成功",
"data": {
"uuid": "obOt*******y-Td_X",
"headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/CUPTtZ1ZwiccmeNbxsl8ZaIjWabEoC4bovqxdIszpicEjn8VXayic1dAIT02yJnThun5I9PYjIdCzhQXWglLKh68ibZUCmMzk0YXMDRic1VahOnOjRCA6WtaQPiaeatGtbMIRw6CPsNh7fic4RDyq5bicplQ7Q/0",
"nickName": "苏生-服务支持",
"expiredTime": 187,
"status": 2,
"loginInfo": {
"uin": "27****0204",
"wxid": "wxid_mu****0j7522",
"nickName": "苏生-服务支持",
"mobile": "1*******836",
"alias": "VideosApi"
}
}
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|object|true|none||响应数据|
|»» uuid|string|true|none||二维码的uuid|
|»» headImgUrl|string|true|none||头像地址|
|»» nickName|string|true|none||昵称|
|»» expiredTime|integer|true|none||二维码超时时间|
|»» status|integer|true|none||登录状态 0:未扫码 1:已扫码未登录 2:登录成功 4:已扫码取消登录|
|»» loginInfo|object|true|none||登录成功信息|
|»»» uin|integer|true|none||uin|
|»»» wxid|string|true|none||微信ID,返回此值则是登录成功|
|»»» nickName|string|true|none||昵称|
|»»» mobile|string|true|none||绑定的手机号|
|»»» alias|string|true|none||微信号|
## POST 弹框登录
POST /login/dialogLogin
- 调用本接口后手机会弹框确认登录页面,点确认后调用[执行登录接口](https://post.wechatapi.net/login/checklogin)检测是否登录成功
<Accordion title="regionId:微信登陆地区ID,登录时请选择最近的地区,目前支持以下地区:" defaultClose>
**地区ID在前,地区在后**
```java HelloWorld.java
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
210000*辽宁省|220000*吉林省|230000*黑龙江
310000*上海市|320000*江苏省|330000*浙江省|340000*安徽省|350000*福建省|360000*江西省|370000*山东省
410000*河南省|420000*湖北省|430000*湖南省|440000*广东省|450000*广西省|460000*海南省
500000*重庆市|510000*四川省|520000*贵州省|530000*云南省|540000*西藏自治区
610000*陕西省|620000*甘肃省|630000*青海省|640000*宁夏自治区|650000*新疆自治区
```
</Accordion>
- 若目前支持的regionId中没有您所在的地区,可以自行采购socks5协议代理IP,填写到proxyIp参数中
- 使用本接口登录并非100%成功,本接口返回失败后,可通过扫码登录的方式登录
- 以下几种情况无法使用本接口登录:
- 手机点击退出登录
- 新设备登录次日
- 官方风控下线
> Body 请求参数
```json
{
"appId": "{appid}",
"proxyIp": "",
"regionId": "{regionId}"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» proxyIp|body|string| 是 |代理IP 格式:socks5://username:password@123.2.2.2|
|» regionId|body|string| 是 |地区|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功",
"data": {
"appId": "wx_wR_U4zPj2M_OTS3BCyoE4",
"uuid": "4dmHZZMtoLbHoLZwd1wE"
}
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|object|true|none||响应数据|
|»» appId|string|true|none||设备ID|
|»» uuid|string|true|none||二维码uuid,执行登录时会用到|
## POST 退出
POST /login/logout
可以只填写appid或者按照示例直接传即可
> Body 请求参数
```json
{
"appId": "{appid}",
"proxyIp": "",
"regionId": "88"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功"
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
## POST 检查是否在线
POST /login/checkOnline
响应结果的data=true则是在线,反之为离线
> Body 请求参数
```json
{
"appId": "{{appid}}"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功",
"data": true
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|boolean|true|none||none|
## POST 异常断线重连
POST /login/reconnection
账号在线,但是收不到回调 调用此接口
> Body 请求参数
```json
{
"appId": ""
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功",
"data": true
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|boolean|true|none||none|
## POST 无感切换代理ip
POST /login/setProxy
账号更换代理ip,可实现在线切换。
也可退出后重新登录传新的代理ip。
> Body 请求参数
```json
{
"appId": "{{appid}}",
"proxyIp": "socks5://x:x@111.153.185.21:11332"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» proxyIp|body|string| 是 |代理ip|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功"
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
# 开发API/联系人相关接口
## POST 获取通讯录列表(包含群聊)
POST /contacts/fetchContactsList
本接口为长耗时接口,耗时时间根据好友数量递增,若接口超时可通过[获取通讯录列表缓存接口](https://post.wechatapi.net/contacts/fetchcontactslistcache)获取响应结果
**注意:<font color='red'>本接口返回的群聊仅为保存到通讯录中的群聊</font>**
**此接口未返回的群聊,当有人在群内发言时,会有回调消息推送到对应的appid,拿到群id后可通过[获取群信息接口](https://post.wechatapi.net/group/getchatroominfo)拿到此群的信息做后续处理**
> Body 请求参数
```json
{
"appId": "{appid}"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功",
"data": {
"friends": [
"tmessage",
"medianote",
"qmessage",
"qqmail",
"wxid_910acevfm2nb21",
"qqsafe",
"wxid_9299552988412",
"weixin",
"exmail_tool",
"wxid_mp05xmje0ctn22",
"wxid_09oq4f4j4wg912",
"wxid_6bfguz79h8n122",
"wxid_lyuq4hr4lrjq22",
"wxid_a1zqyljsrsdu12",
"wxid_lv3pb3zhna3522",
"wxid_k2biq6fuinsr22",
"wxid_ujredjhxz9y712",
"wxid_uwb7989u0jea12",
"wxid_in46ey732vxu12",
"wxid_3rvervwohj6921",
"wxid_4wkls7tu62ua12",
"wxid_g0bdknnotx2f12",
"wxid_ce5fgp0icb3y21",
"wxid_1482424825211",
"wxid_vw3p4f6jy7bm12",
"wxid_o2m8xm71c23522",
"wxid_bclqpc2ho6o412",
"wxid_98pjjzpiisi721",
"wxid_noq2wsn5c8h222"
],
"chatrooms": [
"**********@chatroom",
"*********@chatroom",
"*********@chatroom",
"*********@chatroom",
"*********@chatroom"
],
"ghs": [
"gh_*********",
"gh_*********",
"gh_*********",
"gh_*********",
"gh_*********"
]
}
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|object|true|none||none|
|»» friends|[string]|true|none||好友的wxid|
|»» chatrooms|[string]|true|none||保存到通讯录中群聊的ID|
|»» ghs|[string]|true|none||关注的公众号ID|
## POST 获取通讯录列表(包含群聊)缓存
POST /contacts/fetchContactsListCache
通讯录列表数据缓存10分钟,超时则需要重新调用[获取通讯录列表接口](https://post.wechatapi.net/contacts/fetchcontactslist)
> Body 请求参数
```json
{
"appId": "{appId}"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功"
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
## POST 搜索好友
POST /contacts/search
搜索的联系人信息若已经是好友,响应结果的v3则为好友的wxid
本接口返回的数据可通过[添加联系人接口](http://apifox.videosapi.com/api-170454701)发送添加好友请求
> Body 请求参数
```json
{
"appId": "{appid}",
"contactsInfo": "superwechatapi"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» contactsInfo|body|string| 是 |搜索的联系人信息,微信号、手机号...|
> 返回示例
```json
{
"ret": 200,
"msg": "操作成功",
"data": {
"v3": "v3_020b3826fd0***********8b03@stranger",
"nickName": "苏生-服务支持",
"sex": 0,
"signature": null,
"bigHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/aFOVDS8d8s8CqSkv84ZzMdlvFzQ5TdTtibNqK5ibdUU1ibg55E71dCq5XXJWTS2Cb0AGicqxk0Ik9ibjk5Hep86njl3uzTxZe9A9puiaaB0DH1toFfDWdJs4ibDqd6rKh8GKnWfThSITqggGxpbiaajdibibibr0Q/0",
"smallHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/aFOVDS8d8s8CqSkv84ZzMdlvFzQ5TdTtibNqK5ibdUU1ibg55E71dCq5XXJWTS2Cb0AGicqxk0Ik9ibjk5Hep86njl3uzTxZe9A9puiaaB0DH1toFfDWdJs4ibDqd6rKh8GKnWfThSITqggGxpbiaajdibibibr0Q/132",
"v4": "v4_000b708f0b040000010******************@stranger"
}
}
```
```json
{
"ret": 500,
"msg": "搜索联系人失败",
"data": {
"code": "-4",
"msg": "用户不存在"
}
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|object|true|none||none|
|»» v3|string|true|none||搜索好友的v3,添加好友时使用|
|»» nickName|string|true|none||搜索好友的昵称|
|»» sex|integer|true|none||搜索好友的性别|
|»» signature|null|true|none||搜索好友的签名|
|»» bigHeadImgUrl|string|true|none||搜索好友的大尺寸头像|
|»» smallHeadImgUrl|string|true|none||搜索好友的小尺寸头像|
|»» v4|string|true|none||搜索好友的v4,添加好友时使用|
## POST 添加好友/同意好友
POST /contacts/addContacts
本接口建议在线3天后再进行调用。
好友添加成功后,会通过回调消息推送一条包含v3的消息,可用于判断好友是否添加成功。
> Body 请求参数
```json
{
"appId": "{appid}",
"scene": 3,
"content": "hallo",
"v4": "v4_000b708f0***862304d4799758ba@stranger",
"v3": "v3_020b3826f***3d28d39226f008c6@stranger",
"option": 2
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» scene|body|integer| 是 |添加来源,同意添加好友时传回调消息xml中的scene值。|
|» option|body|integer| 是 |操作类型,2添加好友 3同意好友 4拒绝好友|
|» v3|body|string| 是 |通过搜索或回调消息获取到的v3|
|» v4|body|string| 是 |通过搜索或回调消息获取到的v4|
|» content|body|string| 是 |添加好友时的招呼语|
#### 详细说明
**» scene**: 添加来源,同意添加好友时传回调消息xml中的scene值。
添加好友时的枚举值如下:
3 :微信号搜索
4 :QQ好友
8 :来自群聊
15:手机号
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功"
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
## POST 删除好友
POST /contacts/deleteFriend
> Body 请求参数
```json
{
"appId": "{appid}",
"wxid": "{wxid}"
}
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» wxid|body|string| 是 |删除好友的wxid|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "操作成功"
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
## POST 获取群/好友简要信息
POST /contacts/getBriefInfo
> Body 请求参数
```json
"//单个好友/群\n{\n \"appId\": \"{{appid}}\",\n \"wxids\": [\n \"wechatapi\"\n ]\n}\n//多个好友/群\n{\n \"appId\": \"{{appid}}\",\n \"wxids\": [\n \"ier****isi\",\n \"kit****622\",\n \"F10****0104\",\n \"leo****001\",\n \"kel****0428\",\n \"wxi****612\",\n \"wxi****522\"\n ]\n}"
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» wxids|body|[string]| 是 |好友/群的wxid|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "获取联系人信息成功",
"data": [
{
"userName": "wxid_************",
"nickName": "wechatapi",
"pyInitial": "wechatapi",
"quanPin": "wechatapi",
"sex": 2,
"remark": "",
"remarkPyInitial": "",
"remarkQuanPin": "",
"signature": null,
"alias": "zero-one_200906",
"snsBgImg": null,
"country": "AD",
"bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/0",
"smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/132",
"description": null,
"cardImgUrl": null,
"labelList": "",
"province": "",
"city": "",
"phoneNumList": null
}
]
}
```
### 返回结果
|状态码|状态码含义|说明|数据模型|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline|
### 返回数据结构
状态码 **200**
|名称|类型|必选|约束|中文名|说明|
|---|---|---|---|---|---|
|» ret|integer|true|none||none|
|» msg|string|true|none||none|
|» data|[object]|true|none||none|
|»» userName|string|false|none||none|
|»» nickName|string|false|none||none|
|»» pyInitial|string|false|none||none|
|»» quanPin|string|false|none||none|
|»» sex|integer|false|none||none|
|»» remark|string|false|none||none|
|»» remarkPyInitial|string|false|none||none|
|»» remarkQuanPin|string|false|none||none|
|»» signature|null|false|none||none|
|»» alias|string|false|none||none|
|»» snsBgImg|null|false|none||none|
|»» country|string|false|none||none|
|»» bigHeadImgUrl|string|false|none||none|
|»» smallHeadImgUrl|string|false|none||none|
|»» description|null|false|none||none|
|»» cardImgUrl|null|false|none||none|
|»» labelList|string|false|none||none|
|»» province|string|false|none||none|
|»» city|string|false|none||none|
|»» phoneNumList|null|false|none||none|
## POST 获取群/好友详细信息
POST /contacts/getDetailInfo
> Body 请求参数
```json
"//单个好友/群\n{\n \"appId\": \"{{appid}}\",\n \"wxids\": [\n \"wechatapi\"\n ]\n}\n//多个好友/群\n{\n \"appId\": \"{{appid}}\",\n \"wxids\": [\n \"ier****isi\",\n \"kit****622\",\n \"F10****0104\",\n \"leo****001\",\n \"kel****0428\",\n \"wxi****612\",\n \"wxi****522\"\n ]\n}"
```
### 请求参数
|名称|位置|类型|必选|说明|
|---|---|---|---|---|
|VideosApi-token|header|string| 是 |none|
|body|body|object| 否 |none|
|» appId|body|string| 是 |设备ID|
|» wxids|body|[string]| 是 |好友的wxid|
> 返回示例
> 200 Response
```json
{
"ret": 200,
"msg": "获取联系人信息成功",
"data": [
{
"userName": "wxid_**********",
"nickName": "Ashley",
"pyInitial": null,
"quanPin": "Ashley",
"sex": 2,
"remark": null,
"remarkPyInitial": null,
"remarkQuanPin": null,
"signature": "山林不向四季起誓 枯荣随缘。",
"alias": "zero-one_200906",
"snsBgImg": "http://shmmsns.qpic.cn/mmsns/UaAfqYic92wm7ZCrsEwlQMXSmBLs8dpwBzrXnrOyyP3B8bDibCCFInJ9PicC9LPYY17uWH1yIOmBYQ/0",
"country": "AD",
"bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/0",
"smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/132",
"description": null,
"cardImgUrl": null,
"labelList": null,
"province": null,
"city": null,
"phoneNumList": null
}
]
}
```
### 返回结果