数据接口对接
# 园区方数据接口对接
# 一、文档概述
# 1、对接须知
(1)需先联系商务申请测试环境数据;
(2)使用前请注意区分生产环境和测试环境;
(3)生产环境参数将在联调通过后提供;
(4)接口调用顺序:获取平台可配置的园区→新增商户→获取商户可使用的园区→新增个人→新增任务→申请发票
(5)对接此接口需客户系统拥有资金结算体系,通过内部结算体系将资金发放给个人后,调用下方接口将发放数据推送至京翎云享;
(6)正式上线前须联系业务申请园区(要使用的园区)公户(所属银行为客户内部系统使用的银行)。
# 二、通用信息
# 1、环境地址
| 名称 | 地址 |
|---|---|
| 测试环境 | https://devyun.jinglingyunxiang.com/ (opens new window) |
| 生产环境 | https://yun.jinglingyunxiang.com/ (opens new window) |
# 2、接口调用
请在调用接口中统一添加Header
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appID | Y | String | 企业唯一标识 |
| appSecret | Y | String | 验签串 |
# 三、接口列表
# 1、查询平台绑定园区
# (1)接口描述
查询当前平台已配置的园区列表,后续用于创建商户时,为商户绑定园区。
# (2)请求URL
task_platform/api/v1/getThird
# (3)请求方式
POST JSON
# (4)请求参数
无
# (5)请求示例
无
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| bussinessType | Object | 业务类型 |
| thirdId | String | 园区id |
| name | Object | 园区名称 |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": [
{
"bussinessType": "差额普",
"thirdId": 92,
"name": "九江林旺科技有限公司"
},
{
"bussinessType": "灵活用工",
"thirdId": 55,
"name": "淅川县豹骑网络科技有限公司"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2、新增/更新商户信息
# (1)接口描述
填写公司基本信息,新增商户获取平台商户ID,后续需要使用此ID更新商户信息、新增任务、新增用户、申请发票。
# (2)请求URL
task_platform/api/v1/addOrUpdateCompanyInfo
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| id | N | Integer | 平台商户ID,不填写此项为新增,填写ID则为更新信息 |
| companyName | Y | String | 公司名称 |
| companyType | Y | String | 企业类型 |
| industry | Y | String | 行业 |
| foundTime | Y | Date | 成立时间 |
| issuingAuthority | Y | String | 发证机构 |
| businessAddress | Y | String | 企业经营地址 |
| companyProfile | Y | String | 企业简介信息 |
| taxType | Y | Integer | 公司类型:1一般人,2小规模 |
| taxpayerIdentificationNumber | Y | String | 统一社会信用代码,15/18/20位 |
| registeredAddress | Y | String | 企业注册地址(发票) |
| registrationPhone | Y | String | 注册固定电话(发票) |
| accountName | Y | String | 开户银行名称(发票) |
| accountNo | Y | String | 开户银行账号(发票) |
| received | Y | String | 收件人姓名(纸质发票邮寄) |
| receivedPhone | Y | String | 收件人电话(纸质发票邮寄) |
| receivedAddress | Y | String | 收件人地址(纸质发票邮寄) |
| responsibleName | Y | String | 负责人姓名 |
| responsiblePhone | Y | String | 负责人电话 |
| responsibleEmail | Y | String | 负责人邮箱 |
| customerPoint | Y | String | 客户点位:8% |
| legalIdcard | Y | String | 法人身份证人像面(文件URL) |
| legalIdcardNational | Y | String | 法人身份证国徽面(文件URL) |
| businessLicense | Y | String | 营业执照扫描件(文件URL) |
| openingPermit | Y | String | 开户许可证(文件URL) |
| cooperationAgreement | Y | String | 合作协议(文件URL) |
| serviceInvoiceType | Y | Inteage | 服务费发票类型 1-普票,2-专票 |
| thirdIds | Y | ListInteger | 园区id(通过平台可配置园区接口获得) |
# (5)请求示例
{
"id": 95,
"companyName": "北京爱牛保洁服务有限公司",
"companyType": "国有企业",
"industry": "教育",
"foundTime": "2022-04-29 00:00:00",
"issuingAuthority": "北京市场监督管理局",
"businessAddress": "企业经营地址",
"companyProfile": "公司简介信息",
"taxType": 1,
"taxpayerIdentificationNumber": "91110117MA7EKJ2651",
"registeredAddress": "企业注册地址",
"registrationPhone": "zhucegudingdianhua",
"accountName": "开户银行名称",
"accountNo": "kaihuyinhangzhanghao",
"received": "收件人姓名",
"receivedPhone": "14410000011",
"receivedAddress": "收件人地址",
"responsibleName": "负责人名称",
"responsiblePhone": "17600009999",
"responsibleEmail": "ls@jlkg.com",
"customerPoint": "8%",
"legalIdcard": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"legalIdcardNational": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"businessLicense": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"openingPermit": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"cooperationAgreement": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"serviceInvoiceType": 1,
"thirdIds": [
92,
55
]
}
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
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | String | 平台商户ID |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": 51
}
2
3
4
5
6
# 3、查询商户园区
# (1)接口描述
查询当前商户已绑定的园区列表,后续用于推送任务数据时使用
# (2)请求URL
task_platform/api/v1/getCompanyThird
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| companyInfoId | Y | Integer | 商户ID |
# (5)请求示例
{
"companyInfoId": 51
}
2
3
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| bussinessType | Object | 业务类型 |
| thirdId | String | 园区id |
| name | Object | 园区名称 |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": [
{
"bussinessType": "差额普",
"thirdId": 92,
"name": "九江林旺科技有限公司"
},
{
"bussinessType": "灵活用工",
"thirdId": 55,
"name": "淅川县豹骑网络科技有限公司"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 4、新增用户信息
# (1)接口描述
调用接口新增用户,获取用户ID,此用户ID后续用于更新用户信息
# (2)请求URL
task_platform/api/v1/addOrUpdatePerrsonal
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| id | N | Integer | 用户ID,不填写此项为新增,填写ID则为更新信息 |
| companyId | Y | Integer | 公司ID |
| name | Y | String | 姓名 |
| idNumber | Y | String | 身份证号 |
| phone | Y | String | 手机号 |
| bankCard | Y | String | 银行卡号 |
| idcardPhoto | N | String | 身份证人像(文件URL) |
| idcardNational | N | String | 身份证国徽(文件URL) |
| serviceAgreement | Y | String | 服务协议(文件URL) |
# (5)请求示例
{
"companyId": 1,
"name": "张三",
"idNumber": "42032219600118042X",
"phone": "17347590334",
"bankCard": "6214858783240112",
"idcardPhoto": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"idcardNational": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"serviceAgreement": "https://yun.jinglingyunxiang.com/var/upload/logo.jpeg"
}
2
3
4
5
6
7
8
9
10
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | String | 平台用户ID |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": 3
}
2
3
4
5
6
# 5、新增任务信息
# (1)接口描述
根据实际业务需求,创建符合要求的任务,获取任务流水号,后续使用该任务流水号申请发票
# (2)请求URL
task_platform/api/v1/taskWarehousing
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| companyId | Y | Integer | 平台商户ID |
| taskName | Y | String | 任务名称 |
| taskDetail | Y | String | 任务描述 |
| numberOfPeople | Y | Integer | 需求人数 (需求人数=个人任务集合总人数 ) |
| taskAmount | Y | BigDecimal | 任务金额 (任务金额=个人任务集合任务金额总和) |
| serviceCharge | Y | BigDecimal | 服务费金额 (服务费金额=个人任务集合服务费金额总和) |
| totalTaskAmount | Y | BigDecimal | 任务总金额 (任务总金额=任务金额+服务费金额) |
| businessAddress | Y | String | 业务实际发生地址 |
| releaseTime | Y | Date | 创建时间 |
| completionTime | Y | Date | 完成时间 |
| thirdId | Y | Integer | 园区id |
| taskInfoDTOList | Y | List | 个人任务集合 |
taskInfoDTOList
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| name | Y | String | 用户姓名 |
| idCard | Y | String | 身份证号 |
| bankCard | Y | String | 银行卡号 |
| taskContent | Y | String | 工作内容 |
| taskAmount | Y | BigDecimal | 任务金额(实际发放金额) |
| serviceCharge | Y | BigDecimal | 服务费 |
| taskCreateTime | Y | Date | 个人任务创建时间 |
| taskCompleteTime | Y | Date | 个人任务完成时间 |
| paySuccessTime | Y | Date | 个人任务支付时间 |
| returnInvoiceNo | N | String | 退票唯一标识(建议使用时间戳,避免重复) |
# (5)请求示例
{
"companyId": 1,
"taskName": "保洁服务",
"taskDetail": "清理别墅区卫生",
"numberOfPeople": 2,
"taskAmount": 100000.01,
"serviceCharge": 600,
"totalTaskAmount": 100600.01,
"businessAddress": "北京-朝阳",
"releaseTime": "2022-12-23 12:02:33",
"completionTime": "2022-12-23 14:02:33",
"thirdId": 55,
"taskInfoDTOList": [
{
"name": "张三",
"idCard": "42032219600118042X",
"bankCard": "6214858783240112",
"taskContent": "工作内容-视频剪辑",
"taskAmount": 90000.01,
"serviceCharge": 540,
"taskCreateTime": "2022-12-23 12:02:33",
"taskCompleteTime": "2022-12-23 13:02:33",
"paySuccessTime": "2022-12-23 14:02:33"
},
{
"name": "张三",
"idCard": "42032219600118042X",
"bankCard": "6214858783240112",
"taskContent": "内容-垃圾清运",
"taskAmount": 10000,
"serviceCharge": 60,
"taskCreateTime": "2022-12-23 13:02:33",
"taskCompleteTime": "2022-12-23 14:02:33",
"paySuccessTime": "2022-12-23 15:02:33"
}
]
}
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
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | String | 平台任务流水号 |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": "20230811153414554qfg"
}
2
3
4
5
6
# 6、订单退票接口
# (1)接口描述
针对退票订单进行处理,调用该接口后,相关个人订单状态变更为退票
# (2)请求URL
task_platform//api/v1/taskReturnInvoice
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| taskSerial | Y | String | 任务流水号 |
| returnInvoiceList | Y | List | 退票人员列表 |
returnInvoiceListL:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| returnInvoiceNo | Y | String | 退票唯一标识(新增任务接口taskInfoDTOList中传输的returnInvoiceNo字段) |
| returnInvoiceTime | Y | Date | 退票时间 |
# (5)请求示例
{
"taskSerial": "20231109220721000pns",
"returnInvoiceList": [
{
"returnInvoiceNo": "222",
"returnInvoiceTime": "2023-11-09 15:36:22"
}
]
}
2
3
4
5
6
7
8
9
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": null
}
2
3
4
5
6
# 7、申请发票接口
# (1)接口描述
调用此接口为当前商户已完成的任务申请发票。
# (2)请求URL
task_platform/api/v1/requestInvoice
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| companyId | Y | Integer | 平台商户ID |
| thirdId | Y | Integer | 园区ID |
| startTime | N | Date | 开始时间 |
| endTIme | N | Date | 结束时间 |
| taskSerials | N | ListString | 任务流水号 |
| invoiceType | Y | String | 发票类型:1-专票、2-普票 (差额普业务当前仅支持开具普票) |
| invoiceCategory | Y | String | 发票类目 |
| invoiceAmount | Y | BigDecimal | 发票金额 |
说明:
支持以下几种场景
1、companyId+thirdId+taskSerials:用于商户在某个园区单笔/批量提交发票申请
2、companyId+thirdId:用于将商户在某个园区所有已完成未开票的任务提交申请
3、companyId+thirdId+startTime+endTIme:用于将商户在某个园区时间区间(按照任务完成时间)内的任务提交发票申请
2
3
4
5
# (5)请求示例
{
"companyId": 1,
"taskSerials": [
"20230811115836342bjq",
"20230825645836342ova"
],
"invoiceType": "专票",
"invoiceAmount": 300,
"invoiceCategory": "*信息技术服务*技术服务费"
}
2
3
4
5
6
7
8
9
10
# (6)返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| message | String | 请求是否成功 |
| Code | Integer | 请求码 |
| data | Object | 响应信息 |
data参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| stauts | String | 开票状态 |
| message | Object | 状态说明 |
| invoiceNo | String | 发票编号 |
# (7)返回示例
{
"success": true,
"message": "succeed",
"code": 200,
"data": {
"status": 2,
"message": "开票中",
"invoiceNo": "20230813121338100002"
}
}
2
3
4
5
6
7
8
9
10
# 8、发票回传接口
# (1)接口描述
开票成功后可回传发票附件。
# (2)请求URL
需要贵司提供发票开出后回传发票附件的回调地址
# (3)请求方式
POST JSON
# (4)请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| invoiceNo | Y | String | 发票编号(提交发票申请后获得) |
| invoiceUrl | Y | List | 发票附件下载路径(多张) |
# (5)请求示例
{
"invoiceNo": "20221218224508659oav",
"invoiceUrl": [
"https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"https://yun.jinglingyunxiang.com/var/upload/logo.jpeg",
"https://yun.jinglingyunxiang.com/var/upload/logo.jpeg"
]
}
2
3
4
5
6
7
8
# (6)返回参数
无
# (7)返回示例
无