didi

来自于:开发者立即使用

registerApp showDDPage login orderDetail orderList invoice isLogin getEstimateTime getEstimatePrice getCurrentOrderStatus getCurrentDriverInfo getOrderList getTicket 常用变量

概述

didi封装了滴滴出行开放平台的SDK,三方应用与个人开发者接入模块后,可将滴滴出行集成到自己的应用中,轻松构建打车服务,为您的用户提供一段美好旅程。本模块限时特惠中,预计2016年8月底恢复原价300元,想要打造专有打车APP的开发者速来抢购。本模块调用方法可参考demo,下载didiDemo

使用之前须从滴滴开放平台申请开发者账号并创建应用,获取 appid 和 secret。

使用此模块之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:Didi
  • 参数:appid、secret
  • 配置示例:
  1. <feature name="Didi">
  2. <param name="appid" value="didi6469574F6243776F6A326973544D4B42"/>
  3. <param name="secret" value="26e5076ce9d2c8559de5e126147dea2b"/>
  4. </feature>
  • 字段描述:

    appid:(必须配置)从滴滴出行开放平台获取的对应的 appid。

    secret:(必须配置)从滴滴出行开放平台获取的对应的 secret。

registerApp

注册appid与secrect,调用其他接口前需先调用该接口注册,只需调用一次。

registerApp(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: “注册成功” //字符型;返回注册成功信息
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: 注册失败原因
  3. }

示例代码

  1. var didi = api.require('didi');
  2. didi.registerApp(function(ret, err){
  3. if(ret){
  4. alert(JSON.stringify(ret));
  5. }
  6. else{
  7. alert(JSON.stringify(err));
  8. }
  9. });

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

showDDPage

拉起滴滴叫车主页面

  • 效果图:didi - 图1

showDDPage({params}, callback(ret, err))

params

fromlat:

  • 类型:float
  • 描述:(可选项)出发地纬度。

fromlng:

  • 类型:float
  • 描述:(可选项)出发地经度。

fromaddr:

  • 类型:字符串
  • 描述:(可选项)出发地地址。

fromname:

  • 类型:字符串
  • 描述:(可选项)出发地名称。

tolat:

  • 类型:float
  • 描述:(可选项)目的地纬度。

tolng:

  • 类型:float
  • 描述:(可选项)目的地经度。

toaddr:

  • 类型:字符串
  • 描述:(可选项)目的地地址。

toname:

  • 类型:字符串
  • 描述:(可选项)目的地名称。

biz:

  • 类型:int
  • 描述:(可选项)默认选中的业务线类型。
  • 默认值:1
  • 取值范围:
    • 1:出租 2:专车 3:快车 4:代驾

phone:

  • 类型:字符串
  • 描述:(可选项)乘客手机号,方便乘客登录使用,会默认补全到登录框中

maptype:

  • 类型:字符串
  • 描述:(可选项)经纬度类型
  • 取值范围:
    • wgs:世界大地坐标系, baidu:百度地图, soso:搜搜地图

备注

  1. 所有的参数都是可选参数。但如果您App本身已有定位功能,建议在拉起的时候传入经纬度 fromlat 、 fromlng 、 maptype ,WebApp会直接使用 传入的定位坐标,省去自身的定位等待,提高页面整体加载速度。
  2. SDK会对传入的经纬度做合法性校验(数字格式,精度大于4位小数),只有经纬度同时合法时才会采用。如果传递经纬度请同时传递经纬度对应的坐 标类型maptype以确保滴滴准确识别。
  3. addr 为地点的地址, name 为地点的名称。例如,天安门的 addr 地址为东长安街xxx号,而 name 名称为天安门
  4. 如果只传入经纬度,则滴滴会根据传入的经纬度做地点名称反解操作。如果同时传入了名称与地址,则滴滴会采用传入值。如果未传递经纬度、或者 未同时传入地址与名称,则会忽略传递的地址名称,走滴滴自有反解动作。
  5. 如果起始地点未传递,则会使用当前定位地址。如果目的地未传递,则会等待用户填写。
  6. 如果您传入了经纬度,请搭配传入准确的 maptype 以保证经纬度得到准确的识别与反解。
  7. biz可选的取值为 1:出租 2:专车 3:快车 4:代驾

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: “启动成功” //字符串
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. msg: “失败原因”
  3. }

示例代码

  1. var didi = api.require('didi');
  2. didi.showDDPage({
  3. phone: '15112345678'
  4. }, function(ret, err){
  5. if(ret){
  6. alert(JSON.stringify(ret));
  7. }
  8. else{
  9. alert(JSON.stringify(err));
  10. }
  11. });

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

login

拉起滴滴打车登录页面

  • 效果图:didi - 图2

login({params})

params

finish:

  • 类型:字符串
  • 描述:(可选项)完成登录的动作,close_page(关闭登录页面) / home_page(跳转至打车主页),默认close_page

示例代码

  1. var didi = api.require('didi');
  2. var param = {
  3. finish : "close_page"
  4. };
  5. didi.login(param);

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

orderDetail

拉起滴滴打车行程详情页面(须先登录)

  • 效果图:didi - 图3

orderDetail({params})

params

biz:

  • 类型:字符串
  • 描述:业务线标识,目前支持2:快车 3:专车

oid:

  • 类型:字符串
  • 描述:需要展示行程的订单号

示例代码

  1. var didi = api.require('didi');
  2. var param = {
  3. biz : "2",
  4. oid : "didiEBDC34416C121D1D3E4ADBFD6D84F865150C1104590ED6F54B6820F141369CBE"
  5. };
  6. didi.orderDetail(param);

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

orderList

拉起滴滴打车行程列表页面(须先登录)

  • 效果图:didi - 图4

orderList()

params

无参数

示例代码

  1. var didi = api.require('didi');
  2. didi.orderList();

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

invoice

拉起滴滴打车发票打印页面(须先登录)

  • 效果图:didi - 图5

invoice({param})

params

page:

  • 类型:字符串
  • 描述:menu/invoice/history之一,默认menu
  • 说明: menu : 发票开具的菜单页面,默认值: invoice 具体的发票开具页面 history 发票开具历史页面

示例代码

  1. var didi = api.require('didi');
  2. var param = {
  3. page : "menu"
  4. };
  5. didi.invoice(param);

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

isLogin

获取用户登录状态

isLogin(callback(ret, err))

params

无参数

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. isLogin: 1 //字符型;0已登录,1未登录
  3. }

示例代码

  1. var didi = api.require('didi');
  2. didi.isLogin(function (ret, err){
  3. if(ret.isLogin == '1'){
  4. alert("未登录");
  5. }else{
  6. alert("已登录");
  7. }
  8. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getEstimateTime

根据当前经纬度获取预估接驾时间

getEstimateTime({params}, callback(ret, err))

params

fromlat:

  • 类型:float
  • 描述:(必填项)出发地纬度。

fromlng:

  • 类型:float
  • 描述:(必填项)出发地经度。

fromaddr:

  • 类型:字符串
  • 描述:(可选项)出发地地址。

fromname:

  • 类型:字符串
  • 描述:(可选项)出发地名称。

biz:

  • 类型:字符串
  • 描述:(可选项)默认选中的业务线类型。
  • 默认值:1
  • 取值范围:
    • 1:出租 2:专车 3:快车 4:代驾

maptype:

  • 类型:字符串
  • 描述:(可选项)经纬度类型 wgs/baidu/soso。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. eta:[{
  5. estimate_eta: 120, // 2分钟(120秒)
  6. car_type:2,//车型,参见起始car_type列表
  7. },{
  8. estimate_eta: 240,
  9. car_type: 4
  10. }]
  11. }

示例代码

  1. var param = {
  2. fromlat : "40.043571",
  3. fromlng : "116.290506",
  4. fromaddr : "",
  5. fromname : "",
  6. biz : "2",
  7. maptype : "soso"
  8. };
  9. didi.getEstimateTime(param, function(ret, err) {
  10. alert(JSON.stringify(ret.eta));
  11. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getEstimatePrice

传入起始地目的地,获取预估费用

getEstimatePrice({params}, callback(ret, err))

params

fromlat:

  • 类型:float
  • 描述:(必填项)出发地纬度。

fromlng:

  • 类型:float
  • 描述:(必填项)出发地经度。

fromaddr:

  • 类型:字符串
  • 描述:(可选项)出发地地址。

fromname:

  • 类型:字符串
  • 描述:(可选项)出发地名称。

tolat:

  • 类型:float
  • 描述:(必填项)目的地纬度。

tolng:

  • 类型:float
  • 描述:(必填项)目的地经度。

toaddr:

  • 类型:字符串
  • 描述:(可选项)目的地地址。

toname:

  • 类型:字符串
  • 描述:(可选项)目的地名称。

biz:

  • 类型:字符串
  • 描述:(可选项)默认选中的业务线类型。
  • 默认值:1
  • 取值范围:
    • 1:出租 2:专车 3:快车 4:代驾

maptype:

  • 类型:字符串
  • 描述:(可选项)经纬度类型 wgs/baidu/soso。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. price: [{
  5. car_type:2,//车型,同上
  6. currency_code:"CNY",//当前货币单位
  7. estimate_price:12,//预估价格,单位元
  8. time:1600,//预估时间,单位秒
  9. distance:4.5,//两地距离,单位KM
  10. },{
  11. // 下一个车型
  12. }]
  13. }

示例代码

  1. var param = {
  2. fromlat : "40.043571",
  3. fromlng : "116.290506",
  4. fromaddr : "",
  5. fromname : "",
  6. tolat : "40.046571",
  7. tolng : "116.200506",
  8. toaddr : "",
  9. toname : "",
  10. biz : "2",
  11. maptype : "soso"
  12. };
  13. didi.getEstimatePrice(param, function(ret, err) {
  14. alert(JSON.stringify(ret));
  15. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getCurrentOrderStatus

获取当前正在进行的订单的信息

getCurrentOrderStatus(callback(ret, err))

params

无参数

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. car_type:2, // 车型,同上
  5. oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==", // 订单号
  6. status: "wait_strive", // 状态值
  7. status_name:"等待抢单", // 状态名称
  8. }

示例代码

  1. didi.getCurrentOrderStatus(function(ret, err) {
  2. alert(JSON.stringify(ret));
  3. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getCurrentDriverInfo

获取当前订单的司机信息,如果当前没有订单正在行程中,则会返回空数据

getCurrentDriverInfo(callback(ret, err))

params

无参数

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. car_type:2, // 车型,同上
  5. oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==", // 订单号
  6. status: "wait_strive", // 状态值
  7. status_name:"等待抢单", // 状态名称
  8. }

示例代码

  1. didi.getCurrentDriverInfo(function(ret, err) {
  2. alert(JSON.stringify(ret));
  3. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getOrderList

获取行程列表

getOrderList({param}, callback(ret, err))

params

size:

  • 类型:int
  • 描述:(可选项)获取的条目数,默认为10。

offset:

  • 类型:int
  • 描述:(可选项)获取条目的偏移量,默认为0。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. orderList: [
  5. {
  6. oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==",
  7. fromname: "海淀区东北旺西路",
  8. toname: "昌平区回龙观地区北店嘉园",
  9. car_type: 4,//车型,同预估价格
  10. classtype: 2,//1:未完成订单 2已完成订单
  11. setuptime: "2016-03-10 17:17:45",//出发时间
  12. status: "已完成" //订单状态,待出发 已关闭 已完成 进行中
  13. },
  14. ]
  15. }

示例代码

  1. var param = {
  2. size : "10",
  3. offset : "0"
  4. };
  5. didi.getOrderList(param, function(ret, err) {
  6. alert(JSON.stringify(ret));
  7. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getTicket

获取供服务端直接调用滴滴API的ticket。 ticket分为单次与长期有效,部分敏感的API接口需要单次有效的ticket才能调用。 单次有效的ticket调用一次之后即失效,而长期有效的ticket在有效期(一般为2个小时)内可重复使用。 单次与长期有效的ticket之间可以共存,但至多同时存在一个有效的单次有效及一个长期有效的ticket。

getTicket({param}, callback(ret, err))

params

type:

  • 类型:字符串
  • 描述:single/longtime Ticket的类型。
  • 默认 : 0
  • 说明 : Ticket的类型;0:单次有效; 1:长期有效(一般为2个小时); 默认为0

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. errno: 0,
  3. errmsg: "success",
  4. ticket: "xxxxxxxxxxxxxxxxxxx"
  5. }

示例代码

  1. var param = {
  2. type : "0"
  3. }
  4. didi.getTicket(param, function(ret, err) {
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

常用常量

biz

  • 说明: biz业务线id
  • 值:1:出租车 2:专车 3:快车 4:顺风车 5:代驾

maptype

  • 说明:地图坐标类型
  • 值:wgs:wgs84坐标系,例如原生定位;soso:火星坐标,例如高德、腾讯地图; baidu:百度坐标系

car_type

  • 说明:车型列表
  • 值:2: 专车舒适型,4:专车豪华型,16:专车商务型,64:快车普通型