didi

来自于:开发者立即使用

概述

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

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

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

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

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

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

registerApp

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

registerApp(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

var didi = api.require('didi');
didi.registerApp(function(ret, err){
    if(ret){
        alert(JSON.stringify(ret));
    }
    else{
        alert(JSON.stringify(err));
    }
});

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

showDDPage

拉起滴滴叫车主页面

  • 效果图:

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对象
  • 内部字段:
{
    msg: “启动成功”   //字符串
}

err:

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

示例代码

var didi = api.require('didi');
didi.showDDPage({
    phone: '15112345678'
}, function(ret, err){
    if(ret){
        alert(JSON.stringify(ret));
    }
    else{
        alert(JSON.stringify(err));
    }
});

可用性

Android系统,iOS系统

可提供的1.0.2及更高版本

login

拉起滴滴打车登录页面

  • 效果图:

login({params})

params

finish:

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

示例代码

var didi = api.require('didi');
var param = {
    finish : "close_page"
    };
didi.login(param);

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

orderDetail

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

  • 效果图:

orderDetail({params})

params

biz:

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

oid:

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

示例代码

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

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

orderList

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

  • 效果图:

orderList()

params

无参数

示例代码

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

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

invoice

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

  • 效果图:

invoice({param})

params

page:

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

示例代码

var didi = api.require('didi');
var param = {
    page : "menu"
};
didi.invoice(param);

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

isLogin

获取用户登录状态

isLogin(callback(ret, err))

params

无参数

callback(ret, err)

ret:

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

示例代码

var didi = api.require('didi');
didi.isLogin(function (ret, err){
    if(ret.isLogin == '1'){
        alert("未登录");
    }else{
        alert("已登录");
    }
});

可用性

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对象
  • 内部字段:
{
    errno: 0,
    errmsg: "success",
    eta:[{
        estimate_eta: 120, // 2分钟(120秒)
        car_type:2,//车型,参见起始car_type列表
    },{
        estimate_eta: 240,
        car_type: 4
    }]
}

示例代码

var param = {
    fromlat : "40.043571",
    fromlng : "116.290506",
    fromaddr : "",
    fromname : "",
    biz : "2",
    maptype : "soso"
};
didi.getEstimateTime(param, function(ret, err) {
    alert(JSON.stringify(ret.eta));
});

可用性

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对象
  • 内部字段:
{
    errno: 0,
    errmsg: "success",
    price: [{
        car_type:2,//车型,同上
        currency_code:"CNY",//当前货币单位
        estimate_price:12,//预估价格,单位元
        time:1600,//预估时间,单位秒
        distance:4.5,//两地距离,单位KM
    },{
        // 下一个车型
    }]
}

示例代码

var param = {
    fromlat : "40.043571",
    fromlng : "116.290506",
    fromaddr : "",
    fromname : "",
    tolat : "40.046571",
    tolng : "116.200506",
    toaddr : "",
    toname : "",
    biz : "2",
    maptype : "soso"
};
didi.getEstimatePrice(param, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getCurrentOrderStatus

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

getCurrentOrderStatus(callback(ret, err))

params

无参数

callback(ret, err)

ret:

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

示例代码

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

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getCurrentDriverInfo

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

getCurrentDriverInfo(callback(ret, err))

params

无参数

callback(ret, err)

ret:

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

示例代码

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

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

getOrderList

获取行程列表

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

params

size:

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

offset:

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

callback(ret, err)

ret:

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

示例代码

var param = {
    size : "10",
    offset : "0"
};
didi.getOrderList(param, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

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对象
  • 内部字段:
{
    errno: 0,
    errmsg: "success",
    ticket: "xxxxxxxxxxxxxxxxxxx"
}

示例代码

var param = {
    type : "0"
}
didi.getTicket(param, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统,iOS系统

可提供的2.0.0及更高版本

常用常量

biz

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

maptype

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

car_type

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