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