经过一周半的时间,终于实现了第三方系统对接阿里商旅API,通过将审批通过的差旅申请单同步到阿里商旅,来实现员工先在企业内部系统(比如OA)进行申请,申请通过后,再通过阿里商旅来进行机票、酒店之类的预定这样一个完整的差旅申请流程,因为过程比较曲折,而且如果你打阿里商旅客服电话,对方也会回复目前已不再支持通过API同步到阿里商旅这样的方案,所以此处特做记录,方便后续有业务需求要接入阿里商旅的同学。

准备工作

你可以通过此处查看阿里商旅对接的标准流程。

平台申请

  • 钉钉 因为阿里商旅是内嵌在钉钉内的,所以要使用阿里商旅必须要先使用钉钉,所以你需要先通过钉钉的开发后台获取企业的CorpId,并且需要通过钉钉API获取相应的各种钉Id(useriddeptid),另外因为钉钉的安全设置,就算你配置的是本企业开发人员,其默认权限也仅是ISV开发权限,不能获取用户手机号之类的敏感信息,你必须加入ISV钉钉的沟通组,按钉钉的官方要求提出申请,目前我还没做这个申请,所以不清楚这里面有哪些坑……(2019-07-16补充,实际最终系统上线也没做这个申请,因为我们改为通过员工工号与业务系统进行映射
  • 支付宝 阿里商旅只供企业对接,所以你需要先申请企业支付宝,因为这个步骤不是我做的,所以有什么坑我也不清楚……
  • 淘宝 按照ppt的要求一步步申请下去,只要审批通过就可以。

SDK下载

  • 钉钉 下载地址
  • 淘宝 不直接提供sdk下载地址,可参考此处的下载说明
    需要注意的是:虽然是两个平台分别提供的Sdk,但钉钉的Sdk是基于淘宝Sdk的,所以可以将淘宝Sdk内关于阿里商旅部分的源代码复制到钉钉Sdk内整合成完整的Sdk

API

  • 钉钉 API说明
  • 淘宝 API说明,虽然阿里商旅并不和实际哪个淘宝用户有关,但钉钉需要和淘宝账户进行绑定,所以还是必须有绑定过钉钉企业的淘宝用户授权才可以接入API!所以在这里我建立了一个基于Asp.Net Core2.1开发,统一获取淘宝授权Code的项目,在获取到Code后,你可以在自己的项目中通过TopSdk中已经封装好的TopAuthTokenCreateRequest来获取AccessToken。
            var taobaoClient = new DefaultTopClient(TaobaoUrl, AppKey, AppSecret);var code = "code";var req = new TopAuthTokenCreateRequest(){Code = code};var response = taobaoClient.Execute(req);if (!response.IsError){var obj = (JObject)JsonConvert.DeserializeObject(response.TokenResult);var accessToken = obj.Value<string>("access_token");var expiresIn = obj.Value<long>("expires_in");}

开发注意点

钉钉

目前对接的太少,暂时还没发现有什么需要特别注意的地方。

阿里商旅

1、 OA审批通过的审批单对接API

对应alitrip.btrip.approval.new( 新建审批单 )这个API

2、alitrip.btrip.approval.new参数问题


city对应flight-city.txt和火车城市信息.xlsx中的内容,同理城市编码一致,目前阿里商旅只支持国内机票,另外只有机票才有城市三字码,火车票没有。


行程单id为企业系统内自行定义,但需保证唯一性约束。


对应发票抬头的唯一性id,可通过alitrip.btrip.invoice.getalitrip.btrip.invoice.search来获取该id


成本中心id可通过alitrip.btip.cost.center.query( 查询外部成本中心 )获取,查询结果中的scope返回值与实际后台配置不匹配的,是个无意义的数据
此API需进行账号绑定,即当前授权淘宝账号与钉钉的corpid进行绑定,这个无法通过网页操作,必须需要通过阿里商旅的相关人员进行绑定


申请单id为企业系统内自行定义,但需保证唯一性约束。


为钉钉里对应的user_id(注意不是openidunionid),dept_idcorp_id

3、申请单同步成功


当同步成功后,你可以在阿里商旅内看到已审批通过的审批单,此时你可以点击“订机票”来进入查询界面

查询到的结果实际是否可以预定受钉钉后台管理差旅标准设置影响。

然后如果支付方式是个人支付,那么用户可以随意修改查询条件(比如更改出发地、到达地等),如果支付方式为企业支付,那么用户将无法修改查询条件。

4、同步订票结果

如果你还想要知道同步至阿里商旅的审批单对应的员工是否已经订票,因为阿里商旅不存在异步通知回调,所以只能通过定时查询相应的订单apply_id注意该id不是OA里的id,而是在同步审批单后返回结果中阿里商旅的apply_id)来判断该申请单是否已订票,比如alitrip.btrip.flight.order.search( 获取机票订单列表 ),需要注意如果按时间过滤,那么接口要求时间是成对出现,即有了StartTime则必须还要有EndTime,否则时间条件会被忽略

管理后台配置

钉钉

除了上面已经提到的差旅标准、支付方式等设置,还需在钉钉管理后台设置成本中心和发票抬头。
1、登录阿里商旅后台,然后通过 工作台—阿里商旅进入配置界面

进去后很容易就可以看到成本中心和发票抬头配置入口。

第三方系统如何与阿里商旅进行对接相关推荐

  1. 对接第三方系统实操经验分享

    对接第三方系统实操经验分享 前言 为使得指示性更强,有以下名词说明 A系统:是指要发起对接的我方系统,可以理解成 Client B系统:是要对接的第三方系统,可以理解成 Server 对接第三方的特殊 ...

  2. 准确率100%,阿里商旅账单系统架构设计实践

    作者:淸云 阿里商旅作为飞猪旅行旗下面向企业客户的数字化差旅解决方案产品,依托飞猪旅行机票.酒店供应链为企业客户提供一站式的机票.酒店.火车票.用车等预订管控及结算票据服务.阿里商旅不仅是集团欢行的供 ...

  3. 顺丰丰桥接口之下订单接口,适用于第三方系统对接

    顺丰丰桥接口之下订单接口,适用于第三方系统对接 语言 JAVA 作者:不停留的风 1.加Servlet访问 @WebServlet("/XXX") public class Tes ...

  4. 第三方系统对接的设计思路(案例分享)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  5. 企业服务架构演进-第三方系统与自研之道

    本篇是企业服务架构演进系列的第五篇,本篇主要讨论的内容是在进行企业信息系统建设的过程中我们如何针对当前业务背景,部门需求选择合适的企业信息系统.是招人搭建企业信息部门建设还是购买第三方软件服务,或者基 ...

  6. JIRA实践系列-JIRA与阿里云效对接指南

    JIRA实践系列-JIRA与阿里云效对接指南,拧出部分重点关联接口,便于快速上手. 一.API对照关系 api名称 云效 JIRA 创建项目 CreateDevopsProject /rest/api ...

  7. 驰骋工作流引擎与第三方系统的接口文档For 山东金义

    驰骋工作流引擎与第三方系统的接口文档For 山东金义 驰骋BPM要与第3方系统的接口主要有发起.待办.在途.查询4个菜单,如果被集成的系统由于风格问题需要自己生成发起,待办,在途三个页面,最有效的办法 ...

  8. 金蝶云如何html5登录,第三方系统单点登录到金蝶云指南V2

    启用第三方系统登录授权 2   测试第三方系统单点登陆 使用生成的链接测试是否能正常的单点登录. 3   在第三方系统中生成签名授权的URL [参数格式]:ud={"dbid":& ...

  9. java异步调用第三方接口_Java调用第三方系统接口获取数据

    1,调取接口代码 RestTemplate restTemplate=new RestTemplate();HttpHeaders headers=new HttpHeaders();MultiVal ...

最新文章

  1. Python 多进程开发与多线程开发
  2. CNN 图像增强--DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks
  3. 移动端重构系列5——等分,居中等
  4. mac 搭建php wamp,Linux,Windows,Mac平台php环境配置
  5. Matlab小波包分解后如何求各频带信号的能量值?
  6. EditView设置边框
  7. 深入理解Nginx 模块开发与架构解析-陶辉 读书笔记
  8. 自我觉察-3:发现-我这么做究竟为了什么?
  9. 2020计算机考研只考数据结构的学校,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  10. oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介
  11. excel怎么设置一个按钮就一点就生成一个表_条码生成软件如何批量生成DPD条码...
  12. varnish几个工具命令行工作情况
  13. 服务器是怎么工作的?(一)——DHCP工作原理剖析
  14. 《Flash ActionScript 3.0 动画高级教程》
  15. 机器学习数据预处理之字符串转数字
  16. 三剑客python自学笔记--02
  17. 解决无法看到eth0的简单情况
  18. 使用git命令打补丁
  19. 休闲游戏合成植物打僵尸源码-H5+安卓+IOS三端源码
  20. 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container

热门文章

  1. 腾讯游戏10大经典案例(二):天堂等于天下
  2. 汇编语言的寻址方式(针对16位寻址)
  3. 刷题记录(NC235611 牛牛国的战争,NC23803 DongDong认亲戚,NC235622 叠积木)
  4. 传奇世界私服务器端制作,传奇世界单机版一键端带服务器附带安装教程。(可局域网)...
  5. 传奇世界开服教程:传奇世界开服需要准备什么?前期需要投入多少?
  6. 计算机网络——谢希仁
  7. html中一些特殊的符号该如何表示
  8. uniapp获取手机可接收的所有的WiFi名称与信号强度
  9. 查看电脑曾经连接过的WiFi名称和密码的方法
  10. 已知两点和切线如何确定圆心和半径长度