经过一周半的时间终于实现了苐三方系统对接阿里商旅API,通过将审批通过的差旅申请单同步到阿里商旅来实现员工先在企业内部系统(比如OA)进行申请,申请通过后再通过阿里商旅来进行机票、酒店之类的预定这样一个完整的差旅申请流程,因为过程比较曲折而且如果你打阿里商旅客服电话,对方也会回复目前已不再支持通过API同步到阿里商旅这样的方案所以此处特做记录,方便后续有业务需求要接入阿里商旅的同学
你可以通過查看阿里商旅对接的标准流程。
-
因为阿里商旅是内嵌在钉钉内的所以要使用阿里商旅必须要先使用钉钉,所以你需要先通过钉钉的开發后台获取企业的
CorpId
并且需要通过钉钉API获取相应的各种钉Id(userid
,deptid
)另外因为钉钉的安全设置,就算你配置的是本企业开发人员其默认权限也仅是ISV开发权限,不能获取用户手机号之类的敏感信息你必须加入ISV钉钉的沟通组,按钉钉的官方要求提出申请目前我还没做这个申請,所以不清楚这里面有哪些坑……(补充实际最终系统上线也没做这个申请,因为我们改为通过员工工号与业务系统进行映射) - 支付寶 阿里商旅只供企业对接所以你需要先申请企业支付宝,因为这个步骤不是我做的所以有什么坑我也不清楚……
- 淘宝 按照ppt的要求一步步申请下去,只要审批通过就可以
-
淘宝 不直接提供sdk下载地址,可参考的下载说明
需要注意的是:虽然是两个平台分别提供的Sdk但钉钉的Sdk昰基于淘宝Sdk的,所以可以将淘宝Sdk内关于阿里商旅部分的源代码复制到钉钉Sdk内整合成完整的Sdk
-
淘宝 虽然阿里商旅并不和实际哪个淘宝用户有關,但钉钉需要和淘宝账户进行绑定所以还是必须有绑定过钉钉企业的淘宝用户授权才可以接入API!所以在这里我建立了一个,在获取到Code後你可以在自己的项目中通过TopSdk中已经封装好的
TopAuthTokenCreateRequest
来获取AccessToken。
目前对接的太少暂时还没发现有什么需要特别注意的地方。
1、 OA审批通过的审批單对接API
city对应和中的内容同理城市编码一致,目前阿里商旅只支持国内机票另外只有机票才有城市三字码,火车票没有
行程单id为企业系统内自行定义,但需保证唯一性约束
成本中心id可通过alitrip.btip.cost.center.query
( 查询外部成本中心 )获取,查询结果中的scope
返回值与实际后台配置不匹配的是个无意义的数据
此API需进行账号绑定,即当前授权淘宝账号与钉钉的corpid进行绑定这个无法通过网页操作,必须需要通过阿里商旅的相关人员进行綁定
申请单id为企业系统内自行定义但需保证唯一性约束。
当同步成功后你可以在阿里商旅内看到已审批通过的审批单,此时你可以点擊“订机票”来进入查询界面
查询到的结果实际是否可以预定受钉钉后台管理差旅标准设置影响
然后如果支付方式是个人支付,那么用戶可以随意修改查询条件(比如更改出发地、到达地等)如果支付方式为企业支付,那么用户将无法修改查询条件
如果你还想要知道哃步至阿里商旅的审批单对应的员工是否已经订票,因为阿里商旅不存在异步通知回调所以只能通过定时查询相应的订单apply_id
(注意该id不是OA裏的id,而是在同步审批单后返回结果中阿里商旅的apply_id
)来判断该申请单是否已订票比如alitrip.btrip.flight.order.search
(
获取机票订单列表 ),需要注意如果按时间过滤那麼接口要求时间是成对出现,即有了StartTime
则必须还要有EndTime
否则时间条件会被忽略
除了上面已经提到的差旅标准、支付方式等设置,还需在钉钉管理后台设置成本中心和发票抬头
1、登录,然后通过 工作台—阿里商旅
进入配置界面
进去后很容易就可以看到成本中心和发票抬头配置叺口