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

12 篇文章 2 订阅
8 篇文章 0 订阅

经过一周半的时间,终于实现了第三方系统对接阿里商旅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为企业系统内自行定义,但需保证唯一性约束。

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

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

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

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

3、申请单同步成功

同步成功
当同步成功后,你可以在阿里商旅内看到已审批通过的审批单,此时你可以点击“订机票”来进入查询界面
机票查询结果
查询到的结果实际是否可以预定受钉钉后台管理差旅标准设置影响。
差旅设置
然后如果支付方式是个人支付,那么用户可以随意修改查询条件(比如更改出发地、到达地等),如果支付方式为企业支付,那么用户将无法修改查询条件。
企业支付设置

4、同步订票结果

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

管理后台配置

钉钉

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值