请求地址
https://api.es.xiaojukeji.com/river/Approval/create
返回数据格式
JSON
请求方式
POST
请求头格式
application/json
请求参数
参数 | 参数类型 | 字段类型 | 必填 | 描述 |
---|---|---|---|---|
公共参数 | ||||
client_id | 公共参数 | string | yes | 申请应用时分配的AppKey |
access_token | 公共参数 | string | yes | 授权后的access token 获取方式 |
timestamp | 公共参数 | bigint | yes | 当前时间戳(秒级) eg: 1689909015 |
company_id | 公共参数 | string | yes | 滴滴公司 ID。 eg :1125915646167936 |
sign | 公共参数 | string | yes | 签名 |
申请单-基础信息 | ||||
approval_type | 申请单基础信息 | int | yes | 申批单类型 1:差旅单 2: 行前审批-按次数 3: 行前审批-按日期 |
regulation_id | 申请单基础信息 | string | yes | (差旅/行前)申请单对应的需审批制度ID,获取方式 |
out_approval_id | 申请单基础信息 | string | no | 客户侧申请单ID,不大于 120 字符。 eg: TA_100002 |
budget_center_id | 申请单基础信息 | string | no | 滴滴侧成本中心ID; 获取方式接口返回的 ID(可为项目/部门ID) eg : 1125920020961744 |
reason | 申请单基础信息 | string | no | 申请原因,限制 200 字符;默认为空字符 eg: 北京出差 |
extra_info | 申请单基础信息 | string | no | 扩展信息,自定义字段;最长不大于 500 字符;(必须为json字符串);默认为空字符 |
extend_field_list | 申请单基础信息 | string | no | 扩展信息list,自定义字段,最长不大于 500 字符 将extend_field_list转为 json 字符串 三个字段仅作为备注性字段。详见extend_field_list |
申请人信息 | ||||
member_type | 申请人信息 | int | no | 申请人信息类型 0:手机号,phone 必填 1:工号,employee_number 必填 2:邮箱,email 必填 默认为0 |
phone | 申请人信息 | string | yes/no | 申请人手机号;默认为空字符;member_type不传 或者member_type 为0时phone必传 |
employee_number | 申请人信息 | string | no | 申请人工号,默认为空字符 |
申请人信息 | string | no | 申请人邮箱;默认为空字符 | |
申请单-行程数据 | Y(二选一) | |||
travel_detail | 差旅行程数据 | string | no | 差旅单行程信息 将travel_detail的值转为 json 字符串 approval_type = 1 时必传。详见travel_detail 示例 |
business_trip_detail | 因公用车审批行程数据 | string | no | 行前行程信息, 将 business_trip_detail转为 json 字符串 approval_type = 2 或 approval_type = 3 必填。详见 business_trip_detail 示例 |
代订信息 | ||||
passenger_list | 代订数据 | string | no | 出行人信息,不传时默认出行人为申请人, 将passenger_list 转为 json 字符串。详见passenger_list |
executive_regulation_type | 代订数据 | int | no | 代订执行制度类型 0: 执行申请人制度 1: 执行外部出行人不限差标:(需要passenger_list都是外部出行人) 2: 执行出行人制度 |
executive_regulation_id | 代订数据 | string | no | 代订执行人的制度,executive_regulation_type=2 时选填,传了就生效 不传:选择 executive_regulation_member 最近使用的一条制度 获取方式 |
executive_regulation_member_type | 代订数据 | int | no | 代订执行人标识类型 0:手机号,executive_regulation_member 为执行人手机号 1:工号,executive_regulation_member 为执行人工号 2:邮箱:executive_regulation_member 为执行人邮箱 默认为0 |
executive_regulation_member | 代订数据 | string | yes/no | 代订执行人(手机号/工号/邮箱);默认手机号 注意:执行出行人制度的时候,需要是出行人passenger_list里的员工, executive_regulation_type=2时必传, 只能是内部员工 |
passenger_list(代订出行人数据)
参数 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
公共参数 | ||||
passenger_type | int | yes | 0 | 出行人类型 0:员工;1:外部出行人 |
passenger_name | string | yes | 张三 | 出行人姓名/员工姓名 |
员工 | ||||
member_type | int | no | 0 | 出行人类型 0:手机号,passenger_phone 1:工号;employee_number 必填 2:邮箱:email 必填 默认为0 以 member_type 对应的值为准,其他字段传了不生效 |
passenger_phone | string | no | 15100000000 | 员工手机号 |
employee_number | string | no | D10010 | 员工工号 |
string | no | test@didi.com | 员工邮箱 | |
外部出行人 | ||||
member_type | int | no | 0 | 出行人 key 标识 0:手机号,passenger_phone 必填 3::外部出行人ID,traveler_id 必填 默认为0 以 member_type 对应的值为准,其他字段传了不生效 |
passenger_phone | string | no | 15100000000 | 出行人手机号 |
traveler_id | string | no | 外部出行人 ID 获取方式 |
travel_detail
参数 | 类型 | 必传 | 示例 | 描述 |
---|---|---|---|---|
start_date | date | yes | 2023-01-02 | 行程开始时间 YYYY-MM-DD |
end_date | date | yes | 2023-01-10 | 行程结束时间 YYYY-MM-DD |
trips | list<trip> |
no | 详见 trip | 行程信息;行程使用的制度(regulation_id)中,出差城市配置为无需填写时,trips可为空。否则必传,需按照行程顺序填写 |
start_city_rule | int | no | 1 | 行程起点城市是否包含市内用车权限和酒店(0-不包含,1-包含),trips第一行视为起点城市;默认为无市内用车和酒店,不管控和轻度管控模式下该字段不生效(不生效的意思是:在不管控和轻度管控模式下,我们并不知道用户的起点和终点城市是什么,所以传了也没用,无法对城市产生限制,因此所有城市都可以使用市内用车和酒店)不影响接送机服务 |
end_city_rule | int | yes | 1 | 行程终点城市是否包含市内用车权限和酒店(0-不包含,1-包含),trips最后一行视为终点城市,不管控和轻度管控不生效(不生效的意思是:在不管控和轻度管控模式下,我们并不知道用户的起点和终点城市是什么,所以传了也没用,无法对城市产生限制,因此所有城市都可以使用市内用车和酒店) 不影响接送机服务 |
train_total_count | int | no | 1 | 火车票次数;火车票次数 (不传走默认计算逻辑,传0代表火车票不可用) |
flight_total_count | int | no | 1 | 机票次数(不传走默认计算逻辑,传0代表机票不可用) |
hotel_total_count | int | no | 1 | 酒店总间夜(不传走默认计算逻辑,传0代表酒店不可用) |
category_control | []int | no | [4,10] | 品类控制开关;制度有权限时,控制申请单是否创建品类对应服务 3-市内用车;4-火车票服务;6-机票服务;9-接送服务;10-酒店服务 如果传了机火两个品类。制度上只开了机票品牌。则创建申请单成功,只能使用机票服务 category_control 传空数组会报错 |
trip
参数 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
departure_city | string | yes | 北京 | 出发城市名称 获取方式 |
departure_city_id | int | yes | 1 | 出发城市 ID 获取方式 |
destination_city | string | no | 杭州 | 到达城市名称 ;非轻度管控必传 获取方式 |
destination_city_id | int | no | 3 | 到达城市 ID;非轻度管控必传 获取方式 |
start_date | date | yes | 2023-01-02 | 行程段开始时间 轻度管控模式下,必须与 travel_detail 中的 start_date 相同 |
end_date | date | yes | 2023-01-14 | 行程段结束时间 轻度管控模式下,必须与 travel_detail 中的 end_date 相同 |
trip_type | string | no | 1,2 | 出行方式:1-火车 ;2-飞机;支持多个,多个用英文逗号分开(用车酒店默认根据制度配置生效) |
to_citys | []object | no | [{"id":1,"name":"北京"}] | 目的城市集合 轻度管控必传,其他模式传了不生效 |
is_return | int | no | 1 | 控制严格管控模式下,滴滴侧是否识别这个trip为往返行程生成返程行程权限。非必传字段,0-单程, 1-往返;默认为单程;传1后的拆分逻辑为:去程使用trip的传参生成,返程生成规则为:目的地-出发地,end_date-end_date,使用去程的trip_type;若对去程和返程的交通方式有分别管控诉求,不推荐使用此字段,建议拆成两个trip传输。 |
business_trip_detail (按次数)
参数 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
start_time | datetime | yes | 2023-01-10 10:00:00 | 开始时间,需要大于等于接口调用当前时间。时间格式为:2015-06-16 12:00:09 |
end_time | datetime | yes | 2023-01-11 10:00:00 | 结束时间,需大于等于开始时间。时间格式为:2015-06-16 12:00:09 |
departure_city_id | int | no | 1 | 出发城市 ID;制度配置需要填写时必填 获取方式 |
departure_city | string | no | 北京 | 出发地城市名称(指定出发地时必填)获取方式 |
destination_city_id | int | no | 1 | 目的地城市id(指定目的地时必填)获取方式 |
destination_city | string | no | 北京 | 目的地城市名称(指定目的地时必填)获取方式 |
start_name | string | no | 滴滴大厦 | 出发地名称(最多50个字)(指定出发地时必填) |
start_address | string | no | 滴滴大厦 | 出发地详细地址(最多100个字)(指定出发地时必填) |
flat | float | no | 出发地纬度 (指定出发地时必填 | |
flng | float | no | 出发地经度 (指定出发地时必填) | |
end_name | string | no | 百度大厦 | 目的地名称(最多50个字)(指定目的地时必填) |
end_address | string | no | 上地十街10号 | 目的地详细地址(最多100个字)(指定目的地时必填) |
tlat | float | no | 目的地纬度(指定目的地时必填) | |
tlng | float | no | 目的地经度(指定目的地时必填) | |
is_return | int | no | 1 | 是否往返,0-不往返,1-往返,默认为0 |
trip_times | int | yes | 用车次数,当is_return为1时,用车次数必须为偶数(去程一次+回程一次 制度配置为无需填写,传了不生效 | |
perorder_money_quota | int | no | 100 | 每单限额,单位:分,需大于100生效, 需是 100 的整数倍 1。制度配置了由员工填写,小于 100 为不限 2. 制度配置为无需填写,传了不生效 3. 制度配置金额,用户也传了。以配置的为主 |
total_money_quota | int | no | 100 | 总限额,单位:分,需大于100生效,需是 100 的整数倍 1. 制度配置了由员工填写,小于 100 为不限 2. 制度配置为无需填写,传了不生效 |
例如:
{
"start_time": "2023-10-26 21:13:53",
"end_time": "2023-10-27 09:13:47",
"departure_city_id": 17,
"departure_city": "成都",
"destination_city_id": 17,
"destination_city": "成都",
"start_name": "银河商业广场",
"start_address": "四川省成都市成华区二环路东三段40-7号",
"flat": 30.651025,
"flng": 104.115213,
"end_name": "旺府豪庭",
"end_address": "万和北路99号",
"tlat": 30.81427,
"tlng": 104.190051,
"is_return": 0,
"trip_times": 1,
"perorder_money_quota": 999900
}
business_trip_detail(按日期)
参数 | 类型 | 必填 | 示例 | 备注 |
---|---|---|---|---|
start_time | datetime | yes | 2018-06-16 12:00:09 | 开始时间,需要大于等于接口调用当前时间 |
end_time | datetime | yes | 2018-06-19 12:00:09 | 用车结束时间,需大于等于start_time, |
trips | []object | no | [{ "city_id": "1", "city": "北京" },{ "city_id": "2", "city": "上海" }] | 用车城市列表:(创建规则时如果选择了“由员工填写”则必填) 制度配置为无需填写城市时,传了城市列表也不生效 |
trip_amount | int | no | 100 | 用车金额 (不传默认不限制金额) 单位 分,大于100生效; 小于 100 为不限 1. 制度配置了由员工填写,小于 100 为不限 2. 制度配置为无需填写,传了不生效 |
perorder_money_quota | int | no | 100 | 每单限额 (不传默认不限制金额) 单位 分,大于100生效; 小于 100 为不限。制度上配置由员工填写时生效 |
extend_field_list
字段 | 类型 | 是否必传 | 说明 |
---|---|---|---|
extend_field_01 | string | no | 扩展信息一 |
extend_field_02 | string | no | 扩展信息二 |
extend_field_03 | string | no | 扩展信息三 |
返回参数
参数 | 类型 | 说明 |
---|---|---|
errno | int | 错误。非0表示失败 |
errmsg | string | 错误原因 |
data | object | 响应结果 |
data
参数 | 类型 | 说明 |
---|---|---|
approval_id | string | 滴滴侧申请单ID |
注
- 为出发地城市创建【送机】和【市内用车】的用车规则。第一个行程的出发地城市无【市内用车】
- 为目的地城市创建【接机】和【市内用车】的用车规则。最后一个行程的目的地城市的【市内用车】依赖于end_city_rule
- 目前每个行程的开始日期、结束日期,依赖于travel_detail中的start_date、end_date
- 当所有的城市id都为空时,系统会根据城市名称匹配对应id,存在id匹配失败的情况;当城市id至少有一个非空,以传入的城市id为准,系统不会进行匹配。建议根据城市查询API传入对应的城市id
- 所有用车出发地城市和目的地城市参数都应传入城市级别id(当用车出发地城市和目的地城市级别为区县时,应该传入对应所属地级市城市id、区县名称)
- 当差旅制度中,出差城市配置为无需员工填写时,出发地、目的地城市传空
- 当行程使用的制度(regulation_id)中,出差城市配置为不管控时(city_type = 0),trips可为空,否则必传,需按照行程顺序填写;
- 当制度配置“中度管控”(city_type = 1)时,实际行程校验时间使用travel_detail的start_date、end_date字段;trips内的start_date、end_date不生效;轻度管控、中度管控、不管控时,hotel_total_count,train_total_count、flight_total_count会生效
- 当制度配置“严格管控”(city_type = 2)时,trips内的start_date、end_date会用于校验行程;此种模式下还需要传trip_type字段。此情况下,酒店权限受start_city_rule、end_city_rule影响
- 出行方式,trip_type,在制度“严格管控”city_type=2时必传),支持多个(用车默认有),city_type=1和3时非必传。trip_type 传0 接送机和市内用车 、酒店可以用;trip_type 传1 接送机和市内用车、酒店、火车票 可以用,不管传不传trip_type 都不会控制酒店,只能控制火车和机票。
请求示例
差旅单
- 轻度管控
curl --location 'https://api.es.xiaojukeji.com/river/Approval/create' \
--header 'Content-Type: application/json' \
--data '{
"reason":"灰度代订-出行人制度-轻度",
"executive_regulation_type":0,
"travel_detail":"{\"end_date\":\"2023-12-19\",\"start_city_rule\":1,\"end_city_rule\":1,\"trips\":[{\"end_date\":\"2023-12-19\",\"departure_city_id\":\"1\",\"to_citys\":[{\"name\":\"hangzhou\",\"id\":3}],\"departure_city\":\"Beijing\",\"start_date\":\"2023-05-10\"}],\"flight_total_count\":1,\"hotel_total_count\":1,\"train_total_count\":1,\"start_date\":\"2023-05-10\"}",
"company_id":"1125915646167936",
"approval_type":1,
"sign":"5f8ab402ccea6d15bfeecc3241cbecda",
"executive_regulation_id":"1125921250369120",
"client_id":"87fca1dc60c9de0a96c20fccf2ccaa40_test",
"sign_key":"f86b6735313052FD7d0f",
"access_token":"669fd272aa07179f49613e5e8eeffe81c4ae4427",
"regulation_id":"1125921427436424",
"phone":"11100009915",
"executive_regulation_member":"00016180318",
"timestamp":1690362081,
"passenger_list":"[{\"passenger_type\":\"0\",\"passenger_phone\":\"11100011964\",\"passenger_name\":\"曹正博\"},{\"passenger_type\":\"0\",\"passenger_phone\":\"00016180318\",\"passenger_name\":\"刘培行\"},{\"passenger_type\":\"0\",\"passenger_phone\":\"00016180328\",\"passenger_name\":\"DMETERTEST1\"},{\"passenger_type\":\"1\",\"passenger_phone\":\"00016180328\",\"passenger_name\":\"dmeter\"}]"
}'
- 中度、严格管控
curl --location 'https://api.es.xiaojukeji.com/river/Approval/create' \
--header 'Content-Type: application/json' \
--data '{
"reason":"灰度代订-出行人制度-轻度",
"executive_regulation_type":0,
"travel_detail":"{\"end_date\":\"2023-12-19\",\"start_city_rule\":1,\"end_city_rule\":1,\"trips\":[{\"end_date\":\"2023-12-19\",\"departure_city_id\":\"1\",\"departure_city\":\"Beijing\",\"destination_city\":\"hangzhou\",\"destination_city_id\":3,\"start_date\":\"2023-05-10\"}],\"flight_total_count\":1,\"hotel_total_count\":1,\"train_total_count\":1,\"start_date\":\"2023-05-10\"}",
"company_id":"1125915646167936",
"approval_type":1,
"sign":"1df8889e0e2d945758458803cc9768e7",
"executive_regulation_id":"1125921250369120",
"client_id":"87fca1dc60c9de0a96c20fccf2ccaa40_test",
"sign_key":"f86b6735313052FD7d0f",
"access_token":"58716c11feb49816e599a72796e3b6919524879d",
"regulation_id":"1125921427436424",
"phone":"11100009915",
"executive_regulation_member":"00016180318",
"timestamp":1690362702,
"passenger_list":"[{\"passenger_type\":\"0\",\"passenger_phone\":\"11100011964\",\"passenger_name\":\"曹正博\"},{\"passenger_type\":\"0\",\"passenger_phone\":\"00016180318\",\"passenger_name\":\"刘培行\"},{\"passenger_type\":\"0\",\"passenger_phone\":\"00016180328\",\"passenger_name\":\"DMETERTEST1\"},{\"passenger_type\":\"1\",\"passenger_phone\":\"00016180328\",\"passenger_name\":\"dmeter\"}]"
}'
行前按次数
curl --location 'https://api.es.xiaojukeji.com/river/Approval/create' \
--header 'Content-Type: application/json' \
--data '{
"access_token":"e353748d8c0966a3ac4bad8395d188ac54e44e56",
"reason":"123",
"regulation_id":"1125921539238327",
"company_id":"1125915646167936",
"phone":"11100009915",
"approval_type":2,
"business_trip_detail":"{\"start_time\":\"2023-07-25 10:00:00\",\"end_time\":\"2023-07-25 18:00:00\",\"trip_times\":2,\"perorder_money_quota\":1000,\"total_money_quota\":1000}",
"sign":"9435128168701c52eaba99b80f5c267f",
"client_id":"87fca1dc60c9de0a96c20fccf2ccaa40_test",
"sign_key":"f86b6735313052FD7d0f",
"timestamp":1690255082
}'
行前按日期
curl --location 'https://api.es.xiaojukeji.com/river/Approval/create' \
--header 'Content-Type: application/json' \
--data '{
"access_token":"5eec6522d911ee00625a91010319279021f07fd2",
"reason":"123",
"regulation_id":"1125921539238327",
"company_id":"1125915646167936",
"phone":"11100009915",
"approval_type":3,
"business_trip_detail":"{\"start_time\":\"2023-07-25 10:00:00\",\"trip_amount\":1000,\"trips\":[{\"city\":\"beijing\",\"city_id\":1}],\"end_time\":\"2023-07-25 18:00:00\"}",
"sign":"88fda0fa7fd4aae80de7e412c04ddc58",
"client_id":"87fca1dc60c9de0a96c20fccf2ccaa40_test",
"sign_key":"f86b6735313052FD7d0f",
"timestamp":1690363131
}'
返回示例
{
"errno": 0,
"errmsg": "SUCCESS",
"data": {
"approval_id": "9668294457792204005"
}
}
接口错误解决方案
通用错误解决文档
- 4xx 错误
- 1xxx 错误
10003(参数错误(xxxxxx))
xxxxxx有以下几种可能:
- travel_detail格式错误
- travel_detail必须为数组
- 每一个开始日期必须小于等于结束日期
- business_trip_detail格式错误
- 开始时间、结束时间不能为空
- 开始时间必须小于等于结束时间
- 往返用车时, trip_times必须是偶数
- 当approval_type=2且business_trip_detail的is_return=1时,trip_times必须为偶数(因为这是往返行程)
50503(请求失败(xxxxxx))
xxxxxx有以下几种可能:
员工不在该企业中,请添加后重试
- 传参中的phone和company_id没有一一对应
用户
未配置任何审批用车制度
用户
身上未配置用车制度
- 用户配置了差旅或者审批制度,但是创建审批单传入的regulation_id不在该员工身上
50506(外部审批单号已被使用(对应的滴滴审批单ID为xxxxxx),请更换外部审批单号或调用审批单修改API)
- 滴滴要求每次创建审批单的out_approval_id唯一,报该错时表明你此次传参中的out_approval_id与之前创建审批单(返回的approval_id为xxxxxx)的out_approval_id是一样的