# 企业出差申请单接口

美团企业版为企业客户提供了两种出差申请对接方案,具体如下图所示。 对接方案示意图1 (1)若企业客户希望在内部系统完成出差申请,并将出差申请单同步到美团企业版,请参照如图1所示的接口1.企业出差申请单同步进行对接。 对接方案示意图2 (2)若企业客户希望在美团企业版完成出差申请,同时对出差申请单查询有需求,请参照如图2所示的接口2.企业出差申请单查询进行对接。 对接方案示意图3 (3)若企业客户希望美团企业版能够在出差申请单状态变更时,主动向企业推送出差申请单信息请参照如图3所示3.企业出差申请单推送进行对接。

# 1 企业出差申请单同步

# 1.1 接入说明

美团企业版为客户提供了出差申请、审批功能,如果企业客户希望在内部系统完成出差申请,在出差申请通过后在美团企业版进行机票、酒店、火车票预订,则可以通过本文档进行接口对接。流程如下

  1. 企业内部完成出差申请,在审批通过后,通过调用接口将差旅申请信息同步给美团企业版
  2. 企业员工通过免登跳转到美团企业版差旅h5页面,选中对应的出差申请单进行机票、酒店、火车票预订
  3. 预订机酒火时,会根据出行人的差标信息进行差标控制

注意:按行程维度严控且需动态差标管控的企业,暂不支持申请单内容的修改,只可新增/撤回单据

# 1.2 接口说明

名称 描述
功能 创建差旅申请单
HTTP方法 POST
请求方 第三方渠道
响应方 美团企业版平台
uri /trip/applySync
method trip.apply.sync

# 1.3 公共参数

详见:公共参数说明-公共请求参数

# 1.4 业务请求参数

名称 类型 是否必填 说明
tripList List<Trip> 同步的出差申请列表

Trip 字段说明

名称 类型 是否必填 说明
outTripId String 外部企业的申请单号
reason String 行程原因,超出500个字符的部分会被截断
approveStatus Integer 出差申请状态 (1 通过 -1 撤回 2 驳回 3 审批中)
costCenterInfos List<CostCenterInfo> 成本中心列表
projectInfos List<ProjectInfo> 项目列表,现状仅支持传一个项目或不传项目。当projectInfos传值时,其中的ProjectInfo中字段都不允许为空
invoiceTitle String 企业发票抬头
tripStaffInfos List<StaffInfo> 出行人的用户列表
tripGuestInfos List<TripGuestInfo> 外部出行人列表
applyStaffInfo StaffInfo 出差申请的提交用户
tripItineraries List<TripPushItinerary> 行程列表
tripSubsidy Integer 出差补助金额(单位:分)
extra String 额外信息,3000字以内

ProjectInfo 字段说明

名称 类型 是否必填 说明
projectNo String 项目编码
projectName String 项目名称

CostCenterInfo 字段说明

名称 类型 是否必填 说明
costNo String 成本中心编码,长度不超过128
costName String 成本中心名称
ratio String 分摊比例,精度支持最多小数点后四位。多个成本中心分摊比例要么都为空,要么都不为空;若都不为空,数值范围必须在 [0,1] 闭区间内,且分摊比例之和必须为1。
customField1 String 自定义字段1
customField2 String 自定义字段2
customField3 String 自定义字段3
customField4 String 自定义字段4
customField5 String 自定义字段5

StaffInfo 字段说明

名称 类型 是否必填 说明
entStaffNum String 员工唯一标识
name String 员工姓名

TripGuestInfo 字段说明

名称 类型 是否必填 说明
outParticipantId String 外部出行人ID
name String 外部出行人姓名
phone String 外部出行人手机号, 手机号和证件信息必须有一个存在
company String 外部出行人所在公司全名
position String 外部出行人职位
birthday String 出生年月日(pattern:yyyy-MM-dd)
sex Integer 性别,1:男,2:女
tripGuestCardInfos List<TripGuestCardInfo> 外部出行人证件列表

TripGuestCardInfo 字段说明

名称 类型 是否必填 说明
type Integer 证件类型
code String 证件号码

TripPushItinerary 字段说明

名称 类型 是否必填 说明
outItineraryId String 外部行程ID
departureTime Long 出发时间
arrivalTime Long 到达时间
bizTypes Set<Integer> 品类列表:0不限制,10餐饮,20外卖,30酒店,60打车,100机票,110火车票,-1其他。不传或传空按照0(不限制)处理
itineraryType Byte 行程类型:0不限,1单程,2往返。只有按行程维度控时该字段才有效,且只对机票和火车票两个品类有效。
departureCitys List<TripPushItineraryCity> 出发城市列表,出发城市个数不能超过50
arrivalCitys List<TripPushItineraryCity> 到达城市列表,到达城市个数不能超过50
hotelTripRule HotelTripRule 酒店动态差标。只有按行程维度控时该字段才有效。
hotelControlInfo HotelControlInfo 酒店管控信息。只有按行程维度控时该字段才有效。
flightTripRule FlightTripRule 机票动态差标。只有按行程维度控时该字段才有效。

TripPushItineraryCity 字段说明

名称 类型 是否必填 说明
cityId String 城市编码(国标),枚举数据详见:行政区划查询接口,且仅支持市级和区县级城市,如110100
cityName String 城市名
cityType Integer 城市类型,1 境内 2境外

HotelTripRule 字段说明

名称 类型 是否必填 说明
isDynamic Boolean 是否动态差标,不传时默认使用静态差标
exceedControlType Integer 超标处理方案。200-按照超标处理,填写超标原因,300-拦截预订。默认200
exceedAllowPayTypes List<Integer> 超标后允许使用的支付方式,1个人支付,2企业支付,3组合支付
budget Integer 每间夜差标上限(单位分):单间酒店的平均价格不得高于该值

HotelControlInfo 字段说明

名称 类型 是否必填 说明
maxRoomnight Integer 最大间夜数量

FlightTripRule 字段说明

名称 类型 是否必填 说明
isDynamic Boolean 是否动态差标,不传时默认使用静态差标
cabinDiscounts List<FlightTripRule.Item> 舱位折扣列表,不传时不限舱位
exceedControlType Integer 舱位超标处理方案。200-按照超标处理,填写超标原因,300-拦截预订。默认200
exceedAllowPayTypes List<Integer> 舱位超标后允许使用的支付方式,1个人支付,2企业支付。默认1

FlightTripRule.Item 字段说明

名称 类型 是否必填 说明
airCabin Integer 舱位:100头等舱,101公务舱,102经济舱
discount Integer 折扣,只在airCabin为经济舱时生效。数值为1-10,比如九折传入9。默认10

# 1.5 业务响应

名称 类型 说明
status Integer 0: 调用成功,其他值均为: 调用失败
msg String 失败时的错误描述
data List<Body> 请求成功时的响应数据,具体为出差申请单ID映射列表

Body 字段说明

名称 类型 是否必填 说明
tripId String 美团企业版出差申请单id
outTripId String 外部唯一出差申请单id
result Integer 200: 同步成功,其他值均为: 同步失败
msg String 同步成功或失败描述

# 1.6 示例

业务请求参数

{
  "method":"trip.apply.sync",
  "ts":1690977168,
  "entId":617,
  "tripList":[
    {
      "outTripId":"5",
      "reason":"出差",
      "approveStatus":1,
      "budgetCode":"123",
      "budgetName":"项目名称",
      "costCenterCode":null,
      "costCenterName":null,
      "costCenterInfos":[
        {
          "costNo":"123",
          "costName":"成本中心名称",
          "customField1":"自定义字段1",
          "customField2":null,
          "customField3":null,
          "customField4":null,
          "customField5":null
        }
      ],
      "invoiceTitle":"北京XXX有限公司",
      "tripStaffInfos":[
        {
          "staffId":123,
          "entStaffNum":"w123",
          "name":"张三"
        }
      ],
      "tripGuestInfos":[
        {
          "outParticipantId":"123",
          "name":"李四",
          "phone":"13000000000",
          "company":"北京三快在线科技有限公司",
          "position":"技术专家",
          "birthday":"1989-09-03",
          "sex":1,
          "tripGuestCardInfos":[
            {
              "type":1,
              "code":"512322199802028967"
            }
          ]
        }
      ],
      "applyStaffInfo":{
        "staffId":123,
        "entStaffNum":"w123",
        "name":"张三"
      },
      "tripItineraries":[
        {
          "outItineraryId":"130500",
          "departureTime": 1608134400000,
          "arrivalTime": 1608307199000,
          "bizTypes":[0],
          "itineraryType":0,
          "departureCitys":[
            {
              "cityId":"320500",
              "cityName":"石家庄市",
              "cityType":1
            }
          ],
          "arrivalCitys":[
            {
              "cityId":"130100",
              "cityName":"苏州市",
              "cityType":1
            }
          ],
          "hotelTripRule": {
            "isDynamic": true,
            "exceedSolutionType": 200,
            "exceedAllowPayTypes": [1,2],
            "budget":10000
          },
          "hotelControlInfo":{
            "maxRoomnight":3
          },
          "flightTripRule": {
            "isDynamic": true,
            "exceedSolutionType": 200,
            "exceedAllowPayTypes": [1,2],
            "cabinDiscounts":[
              {
                 "airCabin": 102,
                 "discount": 9
               }
            ]
          }
        }
      ],
      "tripSubsidy":0,
      "extra":"额外信息"
    }
  ]
}

业务响应

{
    "status":0,
    "msg":"API处理成功,成功同步差旅申请单数量为1",
    "data":[
        {
            "tripId":"24638",
            "outTripId":"4",
            "result":200,
            "msg":"同步成功"
        }
    ]
}

# 2 企业出差申请单查询

# 2.1 接入说明

美团企业版为客户提供了出差申请、审批功能,如果企业客户希望在美团企业版完成出差申请,但是需要通过接口查询出差申请单信息的功能,则可以通过本文档进行对接。流程如下:

  1. 企业内部系统发起对美团企业版的接口调用。
  2. 美团企业版组装出差申请业务数据,返回给企业。

# 2.2 接口说明

名称 描述
功能 查询差旅申请单
HTTP方法 POST
请求方 第三方渠道
响应方 美团企业版平台
uri /trip/applyQuery
method trip.apply.query

# 2.3 公共参数

详见:公共参数说明-公共请求参数

# 2.4 业务请求参数

名称 类型 是否必填 说明
entId Long 外部企业ID
tripIds List<Long> 出差申请单ID列表
outTripIds List<String> 外部企业出差申请单ID列表
submitStaffId Long 出差单提交人StaffId
tripStaffId Long 出差单出行人StaffId
createStartTime Long 创建申请单开始时间, 13位时间戳
createEndTime Long 创建申请单结束时间, 13位时间戳
modifyStartTime Long 修改申请单开始时间, 13位时间戳
modifyEndTime Long 修改申请单结束时间, 13位时间戳
page Integer 默认为1,页大小为固定值50

# 2.5 业务响应

名称 类型 是否必填 说明
status Integer 请求响应码
msg String 请求响应信息
data String 请求响应数据,内部是Json格式数据

Json格式数据说明

名称 类型 是否必填 说明
page int 当前页码
pageSize int 当前页大小
pageTotal int 结果集总页数
total int 结果集数据总量
tripList List<Trip> 行程数据列表

Trip 字段说明

名称 类型 是否必填 说明
tripId Long 出差申请单ID
applyStaffInfo StaffInfo 出差申请单提交人员工信息
tripStaffInfos StaffInfo 出行人员工信息,已过期
tripPersonList List<TripPersonDTO> 出行人列表
outTripId String 外部唯一出差申请单id(出差单有外部企业内部完成的才有值)
reason String 出差事由(手动输入)
selectedReason String 出差事由(下拉选择)
invoiceTitle String 发票抬头
approveType Integer 0: 企业内部完成审批流程,1: 使用美团审批流程
approveStatus Integer 1: 通过,0: 删除,-1: 撤回,2: 驳回,3: 审批中
tripCities List<TripCity> 出差行程列表
flowRecords List<FlowRecord> 审批日志
modifiedTime Long 最新更新时间
costCenterInfos List<CostCenterInfo> 成本中心列表
projectInfos List<ProjectInfo> 项目列表,现状仅支持传一个项目或不传项目
belongType String 费用归属于类型,枚举值如下:
COST:费用归属于成本中心
PROJECT:费用归属于项目
createdTime Long 创建时间

ProjectInfo 字段说明

名称 类型 是否必填 说明
projectNo String 项目编码
projectName String 项目名称

CostCenterInfo 字段说明

名称 类型 是否必填 说明
costNo String 成本中心编码
costName String 成本中心名称
ratio String 成本中心分摊比例,示例0.5表示百分之五十
customField1 String 自定义字段1
customField2 String 自定义字段2
customField3 String 自定义字段3
customField4 String 自定义字段4
customField5 String 自定义字段5

StaffInfo 字段说明

名称 类型 是否必填 示例 说明
staffId Long 10001 美团企业版员工id
name String 张三 员工姓名
entStaffNum String C20210322 企业对该员工的唯一标识

TripPersonDTO 字段说明

名称 类型 是否必填 示例 说明
personType Integer 1 人员类型:1-员工;2-外部人员
personId Long 382712 人员ID
personName String 张三 人员姓名
sqtOrgId Long 1 所在部门ID
sqtOrgName String 部门 所在部门名称
sqtOrgPath String 0-1 架构链ID
sqtOrgPathName String 集团-部门 架构链名称
orgInfo String 组织信息

TripCity 字段说明

名称 类型 是否必填 示例 说明
departureCityId Long 110000 出发城市编号,境内城市遵循国标,枚举数据详见:行政区划查询接口,且仅支持市级和区县级城市,如110100
departureCityName String 北京市 出发城市
departureCityType Integer 1 城市类型,1: 境内,2: 境外,目前仅支持境内
departureTime Long 1597823448000 出发日期, 13位时间戳
arrivalCityId Long 310000 到达城市编号,境内城市遵循国标,枚举数据详见:行政区划查询接口,且仅支持市级和区县级城市,如110100
arrivalCityName String 上海市 到达城市
arrivalCityType Integer 1 城市类型,1: 境内,2: 境外,目前仅支持境内
arrivalTime Long 1597823448000 到达日期, 13位时间戳

FlowRecord 字段说明

名称 类型 是否必填 示例 说明
operateTime Long 110000 操作时间(毫秒数)
staff StaffInfo 操作人信息
operateType Integer 1 操作类型(1:提交,2:重新提交,3:通过,4:驳回,5:撤回)
operateScene Integer 0 审批操作场景(0:美团企业版平台人工触发,1:美团企业版平台系统超时触发,2:外部接口调用触发)
operateComment String 请假期间不可出差 操作备注

# 2.6 示例

业务请求参数

{
    "method":"trip.apply.query",
    "ts":202122222,
    "entId":617,
    "tripIds":[
      24737
    ],
    "outTripIds":null,
    "submitStaffId":null,
    "tripStaffId":null,
    "createStartTime":null,
    "createEndTime":null,
    "modifyStartTime":null,
    "modifyEndTime":null,
    "page":1
}

业务响应

{
  "msg":"查询成功!",
  "data":{
    "page":1,
    "pageSize":1,
    "pageTotal":1,
    "total":1,
    "tripList":[
      {
        "tripId":24737,
        "applyStaffInfo":{
          "staffId":366198,
          "name":"dhx",
          "entStaffNum":"03137393"
        },
        "tripPersonList":[
          {
            "personType":1,
            "personId":366198,
            "personName":"dhx",
            "sqtOrgId":null,
            "sqtOrgName":null,
            "sqtOrgPath":null,
            "sqtOrgPathName":null,
            "orgInfo":null
          },
          {
            "personType":1,
            "personId":377201,
            "personName":"dff",
            "sqtOrgId":null,
            "sqtOrgName":null,
            "sqtOrgPath":null,
            "sqtOrgPathName":null,
            "orgInfo":null
          },
          {
            "personType":1,
            "personId":157880,
            "personName":"lhs",
            "sqtOrgId":null,
            "sqtOrgName":null,
            "sqtOrgPath":null,
            "sqtOrgPathName":null,
            "orgInfo":null
          }
        ],
        "tripStaffInfo":{
          "staffId":366198,
          "name":"dhx",
          "entStaffNum":"03137393"
        },
        "outTripId":null,
        "reason":"多人预订",
        "invoiceTitle":"北京三快在线科技有限公司",
        "budgetCode":"109701",
        "budgetName":"差旅费",
        "costCenterCode":"180121",
        "costCenterName":"基础研发平台_企业平台研发部_平台服务组",
        "approveType":1,
        "approveStatus":1,
        "tripCities":[
          {
            "departureCityId":"110000",
            "departureCityName":"北京市",
            "departureCityType":1,
            "departureTime":1617206400000,
            "arrivalCityId":"310000",
            "arrivalCityName":"上海市",
            "arrivalCityType":1,
            "arrivalTime":1619712000000
          }
        ],
        "flowRecords":[
          {
            "operateTime":1670243899015,
            "staff":{
              "staffId":111,
              "name":"张三",
              "entStaffNum":"C20210322"
            },
            "operateType":1,
            "operateScene":0,
            "operateComment":"出差需要"
          }
        ],
        "modifiedTime":1617171731000,
        "createdTime":1617171729000
      }
    ]
  }
}

# 3 企业出差申请单推送

# 3.1 接入说明

美团企业版为客户提供了出差申请、审批功能,如果企业客户希望在美团企业版完成出差申请,但是需要美团企业版主动推送出差申请单发生变更的数据推送功能,则可以通过本文档进行对接。流程如下

# 3.2 申请单状态流转说明

出差申请单状态流转预览

# 3.3 接口说明

名称 描述
功能 美团企业版主动向企业推送出差申请单变更数据
HTTP方法 POST
请求方 美团企业版平台
响应方 第三方平台
url 第三方提供
method trip.apply.push

# 3.4 公共参数

详见:公共参数说明-公共请求参数

# 3.5 业务请求参数

名称 类型 是否必填 说明
data Object 推送数据实体

推送数据实体字段说明

名称 类型 是否必填 说明
tripId Long 出差申请单ID
applyStaffInfo StaffInfo 出差申请单提交人员工信息
tripStaffInfos StaffInfo 出行人员工信息,已过期
tripPersonList List<TripPersonDTO> 出行人列表
outTripId String 外部唯一出差申请单id(出差单有外部企业内部完成的才有值)
reason String 出差事由(手动输入)
selectedReason String 出差事由(下拉选择)
invoiceTitle String 发票抬头
approveType Integer 0: 企业内部完成审批流程,1: 使用美团审批流程
approveStatus Integer 1: 通过,0: 删除,-1: 撤回,2: 驳回,3: 审批中
tripCityList List<TripCity> 出差行程列表
modifiedTime Long 最新更新时间
costCenterInfos List<CostCenterInfo> 成本中心列表
projectInfos List<ProjectInfo> 项目列表,现状仅支持传一个项目或不传项目
belongType String 费用归属于类型,枚举值如下:
COST:费用归属于成本中心
PROJECT:费用归属于项目
createdTime Long 创建时间

ProjectInfo 字段说明

名称 类型 是否必填 说明
projectNo String 项目编码
projectName String 项目名称

CostCenterInfo 字段说明

名称 类型 是否必填 说明
costNo String 成本中心编码
costName String 成本中心名称
ratio String 成本中心分摊比例,示例0.5表示百分之五十
customField1 String 自定义字段1
customField2 String 自定义字段2
customField3 String 自定义字段3
customField4 String 自定义字段4
customField5 String 自定义字段5

StaffInfo 字段说明

名称 类型 是否必填 示例 说明
staffId Long 10001 美团企业版员工id
name String 张三 员工姓名
entStaffNum String C20210322 企业对该员工的唯一标识

TripPersonDTO 字段说明

名称 类型 是否必填 示例 说明
personType Integer 1 人员类型:1-员工;2-外部人员
personId Long 382712 人员ID
personName String 张三 人员姓名
sqtOrgId Long 1 所在部门ID
sqtOrgName String 部门 所在部门名称
sqtOrgPath String 0-1 架构链ID
sqtOrgPathName String 集团-部门 架构链名称
orgInfo String 组织信息

TripCity 字段说明

名称 类型 是否必填 示例 说明
departureCityId String 110000 出发城市编号,境内城市遵循国标,枚举数据详见:行政区划查询接口,且仅支持市级和区县级城市,如110100
departureCityName Long 北京市 出发城市
departureCityType Integer 1 城市类型,1: 境内,2: 境外,目前仅支持境内
departureTime Long 1597823448000 出发日期, 13位时间戳
arrivalCityId String 310000 到达城市编号,境内城市遵循国标,枚举数据详见:行政区划查询接口,且仅支持市级和区县级城市,如110100
arrivalCityName Long 上海市 到达城市
arrivalCityType Integer 1 城市类型,1: 境内,2: 境外,目前仅支持境内
arrivalTime Long 1597823448000 到达日期, 13位时间戳

# 3.6 业务响应

名称 类型 说明
status Integer 0: 调用成功 其他值均为: 调用失败
msg String 失败时的错误描述
data String 额外数据,无具体含义

# 3.7 示例结果

{
    "status": 0,
    "msg": "success",
    "data": {}
}
{
    "status": 1,
    "msg": "参数校验失败",
    "data": {}
}
上次更新: 4/22/2024, 4:15:08 PM