24
滴滴开放平台接入文档V1.1.0 SDK版本:1.1.0 文档版本 V1 一、帐号申请 1. 商务合作 针对有意向接入滴滴出行的所有应用开发者,请先联系商务邮箱,确认合作意向及具体需求,商务人员会为您安排及解答接入前的所有问题。 包括但不限于:需求意向沟通,合作意向确认,应用获取 appid secret 等合作支持;此外,若有其他商务拓展需求也可联系此邮箱进行咨询。 2. 技术支持 二、SDK方法 SDK提供的方法列表如下,具体使用方法可以参见对应编号的详细介绍。 编号 方法名 版本 说明 1 registerApp 1.0 注册appidsecrect 2 showDDPage 1.0 拉起打车页面 3 callDDApi 1.1 调用滴滴API 4 getTicket 1.1 获取Ticket 5 isLogin 1.1 判断当前用户是否登录 6 showPage 1.1 拉起滴滴对应页面 7 callPhone 1.1 呼叫电话 1. registerApp 注册appidsecrect 注册当前appidsecrect 参数列表 参数名 类型 说明 appid string 申请的AppID secrect string AppID对应的密钥 Android 调用 在入口Activity中调用 DiDiWebActivity.registerApp("appid","secret"); IOS 调用 [DIOpenSDK registerApp:@"your appId" secret:@"your secret"]; 2. showDDPage 拉起滴滴叫车主页面

滴滴开放平台接入文档V1.1 - static.udache.comstatic.udache.com/gulfstream/mis/open/downloads/doc-1.1.0_0421.pdf · 滴滴开放平台接入文档v1.1.0 sdk版本:1.1.0

  • Upload
    others

  • View
    125

  • Download
    0

Embed Size (px)

Citation preview

滴滴开放平台接入文档V1.1.0SDK版本:1.1.0 文档版本 V1

一、帐号申请

1. 商务合作针对有意向接入滴滴出行的所有应用开发者,请先联系商务邮箱,确认合作意向及具体需求,商务人员会为您安排及解答接入前的所有问题。 包括但不限于:需求意向沟通,合作意向确认,应用获取 appid 和 secret 等合作支持;此外,若有其他商务拓展需求也可联系此邮箱进行咨询。

2. 技术支持

二、SDK方法SDK提供的方法列表如下,具体使用方法可以参见对应编号的详细介绍。

编号 方法名 版本 说明

1 registerApp 1.0 注册appid与secrect

2 showDDPage 1.0 拉起打车页面

3 callDDApi 1.1 调用滴滴API

4 getTicket 1.1 获取Ticket

5 isLogin 1.1 判断当前用户是否登录

6 showPage 1.1 拉起滴滴对应页面

7 callPhone 1.1 呼叫电话

1. registerApp 注册appid与secrect注册当前appid与secrect

参数列表

参数名 类型 说明

appid string 申请的AppID

secrect string AppID对应的密钥

Android 调用

在入口Activity中调用

DiDiWebActivity.registerApp("appid","secret");

IOS 调用

[DIOpenSDK registerApp:@"your appId" secret:@"your secret"];

2. showDDPage 拉起滴滴叫车主页面

Android 参数列表

参数名 类型 说明

Context string Context参数尽量传Activity

params HashMap 拉起滴滴的参数,参见下方params列表

IOS 参数列表

参数名 类型 说明

parentController UIViewController 需要调起叫车页面的controller

animated BOOL 展现滴滴页面时是否需要动画

params BOOL 拉起滴滴的参数,参见下方params列表

delegate id 扩展参数,后续用于SDK和app进行一些交互

params列表

名称 类型 说明

fromlat float 出发地纬度

fromlng float 出发地经度

fromaddr string 出发地地址

fromname string 出发地名称

tolat float 目的地纬度

tolng float 目的地经度

toaddr string 目的地地址

toname string 目的地名称

biz int 默认选中的业务线类型

phone string 乘客手机号,方便乘客登录使用,会默认补全到登录框中

maptype string 经纬度类型 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:代驾

Android 调用

DiDiWebActivity.showDDPage(Context,HashMap<String,String>);

IOS调用

+ (void)showDDPage:(UIViewController *)parentController

animated:(BOOL)animated

params:(DIOpenSDKRegisterOptions *)optionParams

delegate:(id<DIOpenSDKDelegate>)delegate;

3. callDDApi 调用滴滴开放API

参数列表

参数名 类型 说明

api string 调用API的方法名,具体方法名可以参见API接口

params HashMap 调用API接口时传递的参数

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

参数列表

参数名 类型 说明

type string single/longtime Ticket的类型

5. isLogin 判断当前用户是否登录参数列表 无

返回信息 true / false 分别对应是否为登录状态。 对于非登录状态可以通过showPage方法来拉起登录页面以触发用户登录。

6.showPage 拉起滴滴指定页面拉起至特定页面

参数列表

参数名 类型 说明

page string 需要拉起页面的标识,具体页面列表可以参见章节 四、showPage列表

params HashMap 拉起页面时传递的参数

7. callPhone 呼叫电话受限于安全要求,滴滴无法开放明文的司机号码,故对于接驾的司机信息,对手机号码进行了加密。

参数列表

参数名 类型 说明

phone string 司机信息接口返回的司机手机号加密串

// 接口返回的司机信息部分示例

errno: 0,

errmsg: "",

data:

name: "王师傅",

level: 4.8,

cartype: "宝马5系",

headimg: "xxxx",

card: "京A**038",

phone: "aadfiuaodifkadflkafd", // 加密后的电话号码

phone_display: "130*****884" // 隐藏掉部分字段的电话

通过callPhone调用上述示例中的 data.phone 字段即可

三、API方法

三、API方法方法索引

编号 方法名 说明

1 getEstimateTime 获取预估接驾时间

2 getEstimatePrice 获取预估费用

3 getCurrentOrderStatus 获取当前订单状态

4 getCurrentDriverInfo 获取当前订单司机信息

5 getOrderList 获取行程列表

通用接口返回格式

errno: 0, // 错误码,如果为0则正常,不为0则为异常

errmsg: "", // 错误信息,errno=0时为空,errno!=0时为错误的概要描述信息

data:

// 实际接口的返回数据,根据接口而定

一些常见的常量

参数 说明 值

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

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

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

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

请求参数

名称 类型 说明

biz int biz业务线标识

fromlat string 出发地经度 ,string格式的float数字

fromlng string 出发地纬度,string格式的float数字

fromname string 出发地名称,可选

fromaddress string 出发地地址,可选

maptype string 经纬度类型 wgs/baidu/soso

请求返回

errno: 0,

errmsg: "",

data: [

eta:[

estimate_eta: 120, // 2分钟(120秒)

car_type:2,//车型,参见起始car_type列表

,

estimate_eta: 240,

car_type: 4

]

]

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

请求参数

名称 类型 说明

biz int biz业务线标识

fromlat string 出发地经度 ,string格式的float数字

fromlng string 出发地纬度,string格式的float数字

fromname string 出发地名称,可选

fromaddress string 出发地地地址,可选

tolat string 目的地经度 ,string格式的float数字

tolng string 目的地纬度,string格式的float数字

toname string 目的地名称,可选

toaddress string 目的地地址,可选

maptype string 经纬度类型 wgs/baidu/soso

请求返回

errno: 0,

errmsg: "",

data: [

price: [

car_type:2,//车型,同上

currency_code:"CNY",//当前货币单位

estimate_price:12,//预估价格,单位元

time:1600,//预估时间,单位秒

distance:4.5,//两地距离,单位KM

,

// 下一个车型

]

]

3.getCurrentOrderStatus返回当前正在进行的订单的信息

无请求参数

请求返回

errno: 0,

errmsg: "",

data:

car_type:2, // 车型,同上

oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==", // 订单号

status: "wait_strive", // 状态值

status_name:"等待抢单", // 状态名称

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

无请求参数

请求返回

errno: 0,

errmsg: "",

data:

car_type:2,//车型,同上

oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==",

status: "wait_strive",

status_name:"等待抢单",

5.getOrderList获取行程列表

请求参数

名称 类型 说明

size int 获取的条目数,默认为10

offset int 获取条目的偏移量,默认为0

请求返回

errno: 0,

errmsg:"",

data:

orderList: [

oid: "didi:TkRJNU5EazNNVEkxT0RVPQ==",

fromname: "海淀区东北旺西路",

toname: "昌平区回龙观地区北店嘉园",

car_type: 4,//车型,同预估价格

classtype: 2,//1:未完成订单 2已完成订单

setuptime: "2016-03-10 17:17:45",//出发时间

status: "已完成" //订单状态,待出发 已关闭 已完成 进行中

,

]

四、showPage 页面列表编号 page 说明

1 login 滴滴的登录页面

2 orderDetail 行程详情页面

3 orderList 订单列表页面

4 invoice 发票开具页面

1. login 登录页面请求参数

名称 类型 说明

finish stirng 完成登录的动作,close_page(关闭登录页面) / home_page(跳转至打车主页) 可选,默认close_page

2. orderDetail 行程详情页面名称 类型 说明

biz int 业务线标识,目前支持2:快车 3:专车

oid string 需要展示行程的订单号

3. orderList无参数

4. invoice 发票开具页面请求参数

名称 类型 说明

page string menu/invoice/history之一,默认menu

menu : 发票开具的菜单页面,默认值:invoice 具体的发票开具页面history 发票开具历史页面

五、Android 接入此文档介绍了如何使用 Android Studio 、 Eclipse 引入滴滴开放平台,并使用滴滴开放平台的相关服务。

请使用JDK 1.7编译工具

1.使用Android Studio

引入

点击 File ­> New ­> New Module ­> import .jar/aar package ,然后选择滴滴提供的aar包点击 Finish 即可。此时滴滴开放平台以Module的形式,需要手动配置Module的依赖关系(在使用滴滴服务Module的依赖中添加滴滴开放平台的Module).

配置DiDiWebActivity滴滴开放平台的服务由DiDiWebActivity提供,一般情况下并不需要关心Mainfest文件中的声明。以下为Sdk中的声明:

<activity

android:name=".DiDiWebActivity"

android:label="@string/title_activity_di_di_web" />

如果您需要指定其他配置可以直接在您的Mainfest文件中添加一个Activity声明。如下:

<activity

android:name="com.sdu.didi.openapi.DiDiWebActivity"

android:launchMode="singleTop"

android:screenOrientation="landscape"/>

声明了Activity的 android:launchMode 和 android:screenOrientation ,Android Studio会自动合并Mainfest文件。

如何更新aar包在资源管理器中找到滴滴Module所在的文件夹,会看到旧版本的aar文件,直接使用新arr文件覆盖,然后点击工具栏中的 Sync Project With Gradle

File 。

2.使用Eclipse

引入

使用任意解压缩软件解压缩aar文件得到:

classes.jar ,sdk的jar包

将 classes.jar 文件改名为DiDiSdk.jar放入工程的libs文件夹

jni ,需要放到libs的动态库文件

将jni里面的 libsecure.so 放到。libs/armabi下

res ,资源文件

将res中的文件放入对应文件夹

AndroidManifest.xml 清单文件

将清单文件中的所有项复制到工程现有的清单文件中,并去重。

配置DiDiWebActivity同Android Studio

如何更新aar包同引入

3.使用滴滴服务1.在入口Activity中调用

DiDiWebActivity.registerApp("appid","secret");

// 其中appid和secret需要向开放平台申请

2.在需要提供滴滴服务的地方调用

DiDiWebActivity.showDDPage(Context,HashMap<String,String>);

Context参数尽量传Activity 其中HashMap为需要传给滴滴开放平台的参数

4.混淆请在混淆的配置文件中增加以下配置

-keepnames class com.sdu.didi.openapi.utils.Utils

-keep public class com.sdu.didi.openapi.Methods

-keepclassmembers class com.sdu.didi.openapi.Methods

public java.lang.String *(java.lang.String);

-keepclassmembers class com.sdu.didi.openapi.utils.Utils

public static java.lang.String getTimestamp();

public static java.lang.String getRandomString(int);

-keep public class com.sdu.didi.uuid.ed *;

-keep public class com.sdu.didi.uuid.SigLib *;

六、IOS 接入

1.主功能配置SDK依赖于微信支付,需要拉起微信,所以主工程中的plist中需要添加微信的 scheme 。如下图:

framework需要使用定位权限,工程plist中需要添加如下配置 ,其中定位的提示文案可以自己设置。

工程Build Settings里Other Linker Flags需要添加”­ObjC”项,以确保.framework里的类别能加载上:

2.SDK注册App启动后需要使用滴滴开发者中心申请的 appid 与 secret 注册SDK,调用方法如下:

[DIOpenSDK registerApp:@"your appId" secret:@"your secret"];

3.调起打车页面

/**

* 通过该方法调起滴滴页面

*

* @param parentController 需要调起叫车页面的controller

* @param animated 展现滴滴页面时是否需要动画

* @param optionParams 打开打车页面的可选参数,参数列表可以参见【参数列表】栏目

* @param delegate 扩展参数,后续用于SDK和app进行一些交互

*/

+ (void)showDDPage:(UIViewController *)parentController

animated:(BOOL)animated

params:(DIOpenSDKRegisterOptions *)optionParams

delegate:(id<DIOpenSDKDelegate>)delegate;

七、服务端接入目前服务端接入采取邀请方式进行接入,暂不支持主动接入申请服务端接入的返回状态码为标准http状态码

1. 服务端认证服务端使用标准的OAuth2.0体系接入认证,支持用户授权认证登录和服务端验证授权登录,服务端的授信需提供验证API

功能:提供OAuth2.0认证POST:/v1/oauth/tokenaccess_token 默认过期时间3天refresh_token 默认过期时间180天

Resource URL

POST: https://apigate/v1/oauth/token

参数名 类型 说明

client_id string 申请方id

grant_type sting 申请模式 client_credentials:客户端模式 authorization_code:授权码模式 refresh_token:刷新token

scope string(可选) 申请权限列表,空格分隔

_ int 请求时间戳,超时10分钟无效

nostr string 随机字符串,6位,数字与字母组合,区分大小写

sign string 请求数据的md5签名,需使用签名key,单独分配

Example CURL Request(以客户端认证模式为例)

申请平台token curl ­X POST ­H “Content­Type: application/json” ­d‘“client_id”:”appid”,”grant_type”:”client_credentials”,”_”:”1455863897”,”nostr”:”123abc”,”sign”:”asd123qwe456”’ https://apigate/v1/oauth/token申请用户token curl ­X POST ­H “Content­Type: application/json” ­d ‘“client_id”:”appid”,”uid”:”asdhuy­12334­aoqu123”,”grant_type”:”client_credentials”,”_”:”1455863897”,”nostr”:”123abc”,”sign”:”asd123qwe456”’ https://apigate/v1/oauth/token刷新平台token curl ­X POST ­H “Content­Type: application/json” ­d‘“client_id”:”appid”,”grant_type”:”refresh_token”,”refresh_token”:”tGzv3JOkF0XG5Qx2TlKWIA”,”_”:”1455863897”,”nostr”:”123abc”,”sign”:”asd123qwe456”’https://apigate/v1/oauth/token刷新用户token curl ­X POST ­H “Content­Type: application/json” ­d‘“client_id”:”appid”,”grant_type”:”refresh_token”,”refresh_token”:”tGzv3JOkF0XG5Qx2TlKWIA”,”_”:”1455863897”,”nostr”:”123abc”,”sign”:”asd123qwe456”’https://apigate/v1/oauth/token

Example Response

http code example

200 ”access_token”:”2YotnFZFEjr1zCsicMWpAA”, ”token_type”:”bearer”,”expires_in_second”:”600”,”refresh_token”:”tGzv3JOkF0XG5Qx2TlKWIA”,”scope”:”public profile user.history order.request”

!200 404”errmsg”:”service invalid”

2. 查询运力类型product_type:产品类型 专车:private­car 快车:express­carride_type:运力类型 舒适:comfort 商务:business 豪华:expensive功能:根据起点位置,获取可服务的运力类型GET:/v1/products

Resource URL

GET: https://apigate/v1/products

参数名 类型 说明

lat float 起点纬度

lng float 起点经度

product_type string(可选) 产品类型

ride_type string(可选) 运力类型

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://apigate/v1/products?lat=40.058922&lng=116.312615&product_type=private­car&ride_type=comfort’

Example Response

http code example

200 [”product_type”:”private­car”,”ride_type”:”comfort”,”display_name”:”Didi low­cost”,”image_url”:”http://example.com/private­1001.png“,”seats”:4,”product_type”:”private­car”,”ride_type”:”business”,”display_name”:”Didi business”,”image_url”:”http://example.com/privte­1002.png“,”seats”:7,”product_type”:”private­car”,”ride_type”:”expensive”,”display_name”:”Didi luxury”,”image_url”:”http://example.com/private­1003.png“,”seats”:4]

!200,异常 404”errmsg”:”service invalid”

3. 计价规则功能:产品的计价标准GET:/v1/product/standard

Resource URL

GET: https://apigate/v1/product/standard

参数名 类型 说明

lat float 起点纬度

lng float 起点经度

product_type string(可选) 产品类型

ride_type string(可选) 运力类型

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://apigate/v1/product/standard?lat=40.058922&lng=116.312615’

Example Response

http code example

200 [”product_type”:”private­car”,”ride_type”:”comfort”,”price_details”:”distance_unit”:”km”,”cost_per_minute”:0,”minimum”:1200,”cost_per_distance”:200,”base”:1200,”cancellation_fee”:300,”currency_code”:”CNY”,”product_type”:”private­car”,”ride_type”:”expensive”,”price_details”:”distance_unit”:”km”,”cost_per_minute”:0,”minimum”:2500,”cost_per_distance”:200,”base”:2500,”cancellation_fee”:300,”currency_code”:”CNY”]

!200,异常 404”errmsg”:”service invalid”

4. 时间预估(ETA)功能:司机到达出发地的预估时间,无服务则返回空GET:/v1/estimates/time

Resource URL

GET: https://apigate/v1/estimates/time

参数名 类型 说明

lat float 纬度

lng float 经度

product_type string(可选) 产品类型

ride_type string(可选) 运力类型

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://apigate/v1/estimates/time?lat=40.058922&lng=116.312615’

Example Response

http code example

200 [”product_type”:”private­car”,”ride_type”:”comfort”,”estimate_eta_in_second”:84,

”product_type”:”private­car”,”ride_type”:”business”,”estimate_eta_in_second”:31,”product_type”:”private­car”,”ride_type”:”expensive”,”estimate_eta_in_second”:412]

!200,异常 404”errmsg”:”invalid key: product_type”

5. 价格预估功能:根据起点、终点位置、运力类型,估算车费、距离、溢价率GET:/v1/estimates/price

Resource URL

GET: https://apigate/v1/estimates/price

参数名 类型 说明

start_lat float 起点纬度

start_lng float 起点经度

end_lat float 终点纬度

end_lng float 终点经度

product_type string(可选) 产品类型

ride_type string(可选) 运力类型

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://apigate/v1/estimate/prices?start_lat=40.058922&start_lng=116.312615&end_lat=39.998568&end_lng=116.344434&product_type=private­car&ride_type=comfort’

Example Response

http code example

200 [”product_type”:”private­car”,”ride_type”:”comfort”,”currency_code”:”CNY”,”estimate_price”:”1900”,”dynamic”:1,”eta_in_second”:710,”distance_in_km”:6.5]

!200,异常 400”errmsg”:”invalid key: product_type”

6. 周边司机功能:获取指定坐标点周边指定车型的司机数,最多8个GET:/v1/drivers

Resource URL

GET: https://appgate/v1/drivers

参数名 类型 说明

lat float 纬度

lng float 经度

product_type string 产品类型

ride_type string 运力类型

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://appgate/v1/drivers?lat=40.058922&lng=116.312615&product_type=private­car&ride_type=comfort’

Example Response

http code example

200 ”product_type”:”private­car”,”ride_type”:”comfort”,”drivers_nearby”:[”lat”:”40.058922”,”lng”:”116.312615” ,”lat”:”40.058822”,”lng”:”116.313615” ]

!200,异常 400”errmsg”:”invalid key: product_type”

7. 生成订单(Order Request)功能:根据起点、终点、运力类型创建订单POST:/v1/orders

Resource URL

POST: https://appgate/v1/orders

参数名 类型 说明

No Name json string 请求发单数据

json 字段含义

oid string(可选) appid方的订单id,可以不提供,每个appid独立用户只能有一个进行中的行程

product_type string 请求的产品类型

ride_type string 请求的运力类型

channel int 渠道号,表示订单来源

lat&lng float 乘客发单时候的坐标位置

origin json 乘客选择出发地的信息,包括:坐标,地址,名称等

destination json 乘客选择目的地的信息,包括:坐标,地址,名称等

Example CURL Request

curl ­X POST ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’ ­H “Content­Type: application/json” ‘https://appgate/v1/order’ ­d‘“oid”:”123”,”channel”:”40003”,”product”:“product_type”:”private­car”,”ride_type”:”comfort”,”origin”:“lng”:”116.312615”,”lat”:”40.058922”,”name”:”西二旗地铁站”,”address”:”上地十街”,”destination”:“lng”:”116.344434”,”lat”:”39.998568”,”name”:”五道口购物中心”,”address”:”成府路”,”passenger”:“phone”:”13900000000”,”name”:”Will”,”lng”:”116.312615”,”lat”:”40.058922”,”device”:“time”:”1455863897”,”imei”:”123aswdwe1235”,”suuid”:”123juuiuiausd”,”model”:”iphone4s”,”ip”:”10.10.10.10”,”network”:”wifi”,”wifi_name”:”TP_123”,”wifi_mac”:”UU123­OIU987­RFV265”,”wifi_ip”:”192.168.0.102”,”departure_time”:”1455863897”,”create_time”:”1455863897”,”estimate_price”:”2000”,”estimate_time”:”900”’

Example Response

http code example

200 ”didi_oid”:”ABC123456”,”status”:”Pending”,”product_type”:”private­car”,”ride_type”:”comfort”

!200 400”errmsg”:”invalid key:product_id”

8. 司机坐标位置获取订单对应司机的实时坐标位置,请求间隔不小于3s,只有在订单结束前可以查询,订单结束之后返回403错误GET:/v1/orders/didi_oid/location

Resource URL

GET: https://appgate/v1/orders/didi_oid/location

参数名 类型 说明

didi_oid string 订单ID

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H “Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA”“https://appgate/v1/orders/ABC123/location”

Example Respons

http code example

200 ”didi_oid”:”ABC123”,”status”:”Charging”,”driver”:”lat”:”40.058922”,”lng”:”116.312615”

!200 400”errmsg”:”error didi_oid”

11. 订单详情(Order Details)功能:根据订单ID返回订单详情,包括订单状态,司机的信息,车辆信息,计费信息等。GET:/v1/orders/didi_oid/detail

Resource URL

GET: https://appgate/v1/orders/didi_oid/detail

参数名 类型 说明

didi_oid string 订单ID

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H “Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA”“https://appgate/v1/orders/ABC123/detail”

Example Respons

http code example

200 ”didi_oid”:”ABC123”,”create_time”:1455863897,”product_type”:”private­car”,”ride_type”:”comfort”,”status”:”Charging”,”passenger”:”phone”:”13900000000”,”name”:”李” ,”pickup”:”time”:1455863897,”destination”:”lat”:37.7766874,”lng”:122.394857,”dynamic”:1,”price”:”currency”:”CNY”,”amount”:3750,”description”:”total Fee”,”driver”:”rating”:4.8,”picture_url”:”https://example.com/didi.png“,”name”:”王” ,”vehicle”:”car_type”:”奥迪A4”, ”license_plate”:”京A000001”, ”picture_url”:”https://example.com/didi.png“

!200 400”errmsg”:”error didi_oid”

12. 取消订单功能:取消订单POST:/v1/orders/didi_oid

Resource URL

DELETE: https://appgate/v1/orders/didi_oid

参数名 类型 说明

didi_oid string 订单ID

cancel_type string cancel_request

cancel_msg string(可选) 取消原因

cancel_token string(可选) 如果可以直接取消,则无需二次确认,直接取消;

如果不能直接取消,则第一步返回cancel_token,第二步取消时需携带此token才能取消行程 token有效时长5分钟

Example CURL Request

curl ­X DELETE ­H “Content­Type: application/json” ­H “Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA” “https://appgate/v1/orders” ­d‘“didi_oid”:”ABC123”,”cancel_msg”:”Driver Late”,”cancel_type”:”cancel_request”’

Example Response:

http code example

200 step1:”didi_oid”:”123456789”,”status”:”Accepted”,”cancel_token”:”asd­qwe­123”,”price”:”currency”:”CNY”,”amount”:500,”description”:”totalfee”,”charges”:[”currency”:”CNY”,”amount”:500,”description”:”overtime”]

step2:”didi_oid”:”123456789”,”status”:”PassengerCancelled”,”price”:”currency”:”CNY”,”amount”:1000,”description”:”totalfee”,”charges”:[”currency”:”CNY”,”amount”:500,”description”:”overtime”,”currency”:”CNY”,”amount”:500,”description”:”cancelfee”]

!200 400”errmsg”:”invalid key:didi_oid”400”errmsg”:”order has finished,cannot be canceled”

13. 获取账单功能:获得本次行程的总花费、包括基本费用、溢价费用GET:/v1/orders/didi_oid/bill

Resource URL

GET: https://appgate/v1/orders/didi_oid/bill

参数名 类型 说明

didi_oid string 订单ID

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://appgate/v1/order/ABC123/bill’

Example Response

http code example

200 ”didi_oid”:”TkRJNU5EazNNVFl5T1RFPQ==”,”status”:”Finished”,”create_time”:1414986745,”price”:”currency”:”CNY”,”amount”:1500,”description”:”totalFee”,”charges”:[”currency”:”CNY”,”amount”:1500,”description”:”pricingStarts”,”currency”:”CNY”,”amount”:0,”description”:”driving”,”currency”:”CNY”,”amount”:0,”description”:”slowSpeed”,”currency”:”CNY”,”amount”:0,”description”:”highway”,”currency”:”CNY”,”amount”:0,”description”:”bridge”,”currency”:”CNY”,”amount”:0,”description”:”primeTime” ,”currency”:”CNY”,”amount”:0,”description”:”drivingTimeFee” ,”currency”:”CNY”,”amount”:0,”description”:”extra”]

!200 400”errmsg”:”invalid key:didi_oid”

400”errmsg”:”trip has finished”

14. 评价司机(Order Rating)功能:评价司机,返回评价结果和分享地址POST:/v1/orders/didi_oid/rating

Resource URL

POST: https://appgate/v1/orders/didi_oid/rating

参数名 类型 说明

didi_oid string 订单ID

rating int 评价星级,1~5之间的整数

comment string(可选) 评价内容

Example CURL Request

curl ­X POST ­H “Content­Type: application/json” ­H “Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA” “https://appgate/v1/orders/ABC123/rating”­d ‘“rating”:”4”,”comment”:”Good Driver”’

Example Response

http code example

200 ”didi_oid”:”ABC123”,”status”:”finished”,”rating”:5,”feedback”:”http://www.didichuxing.com/**“

!200 400”errmsg”:”invalid key:didi_oid”400”errmsg”:”order is not finished”

16. 历史行程功能:获得乘客历史行程GET: /v1/passenger/history

Resource URL

GET: https://appgate/v1/passenger/history

Query Parameters

参数名 类型 说明

passenger_phone string(可选) 乘客电话

passenger_id string 乘客在第三方的id

start_time int(可选) 起始时间,unix时间戳 最小取值:1455863897(2016­03­01T00:00:00+08:00)

end_time int(可选) 结束时间,unix时间戳 最小取值:1455863897(2016­03­01T00:00:00+08:00)

limit int(可选) 数据条数,一次最多获取30条数据

Example CURL Request

curl ­X GET ­H “Content­Type: application/x­www­form­urlencoded” ­H ‘Authorization: Bearer appid|tGzv3JOkF0XG5Qx2TlKWIA’‘https://appgate/v1/passenger/history?passenger_phone=ABC123&passenger_id=appid123&start_time=1455863897&end_time=1456863897’

Example Response

http code example

200 [”didi_oid”:123456789,”status”:”finished”,”product_type”:”private­car”,”ride_type”:”comfort”,”create_time”:”1455863897”,”pickup_time”:”1455863897”,”finish_time”:”1455873897”,”passenger”:”phone_number”:”+15554445000”,”name”:”Jane”,”driver”:”rating”:”4.9”,”name”:”Zhang”,”image_url”:”http://example.com/didi.png“,”origin”:”lat”:36.9442175,”lng”:123.8679133,”address”:”北京五道口” ,”destination”:”lat”:36.9442175,”lng”:123.8679133,”address”:”三里屯” ,”price”:”currency”:”CNY”,”amount”:905,”description”:”totalFee”,”charges”:[”currency”:”CNY”,”amount”:500,”type”:”tripCost”,”currency”:”CNY”,”amount”:250,”description”:”primeTime” ],”vehicle”:”car_type”:”奥迪A4”, ”image_url”:”http://example.com/didi.png“,”license_plate”:”京A000001” ]

!200 400”errmsg”:”service invalid”

17. 回调函数

17. 回调函数功能:当行程状态改变时,通知第三方。例如:司机接单,司机接近接驾地点,司机到达接驾地点,司机开始计费,司机取消行程等。说明:第三方需提供监听入口,滴滴通过该地址推送相关信息,json格式数据,POST方式

回调信息

信息类型 example

无司机接单 ”data”:”didi_oid”:123456789,”status”:”no_driver_avaiable”,”sign”:”ABCDFER1234576POIUY”

司机接单 ”data”:”didi_oid”:123456789,”product_type”:”private­car”,”ride_type”:”comfort”,”status”:”Accepted”,”time”:”1455863897”,”driver”:”rating”:”4.9”,”name”:”王师傅”, ”picture_url”:”http://example.com/didi.png“,”lat”:36.9442175,”lng”:123.8679133,”vehicle”:”car_type”:”奥迪A4”, ”picture_url”:”http://example.com/didi.png“,”license_plate”:”京A**000001” ,”process”:[”status”:”Pending”,”time”:1455863897,”lat”:36.9442175,”lng”:123.8679133],”sign”:”ABCDFER1234576POIUY”

司机到达接驾地点 ”data”:”didi_oid”:123456789,”status”:”Arrived”,”time”:”1455863897”,”driver”:”lat”:36.9442175,”lng”:­123.8679133,”process”:[”status”:”Pending”,”time”:1455863897,”lat”:36.9442175,”lng”:123.8679133,”status”:”Arrived”,”time”:1455863897,”lat”:36.9442175,”lng”:123.8679133]

,”sign”:”ABCDFER1234576POIUY”

订单被司机取消 ”data”:”didi_oid”:123456789,”status”:”DriverCancelled”,”time”:”1455863897”,”sign”:”ABCDFER1234576POIUY”

开始计费 ”data”:”didi_oid”:”123456789”,”time”:”1455863897”,”status”:”Charging”,”driver”:”lat”:36.9442175,”lng”:123.8679133,”sign”:”ABCDFER1234576POIUY”

到达目的地 ”data”:”didi_oid”:”123456789”,”time”:”1455863897”,”status”:”Finished”,”driver”:”lat”:36.9442175,”lng”:­123.8679133,”price”:”currency”:”CNY”,”amount”:3250,”description”:”totalFee”,”charges”:[”currency”:”CNY”,”amount”:2000,”type”:”tripCost”,”currency”:”CNY”,”amount”:1000,”description”:”primeTime” ,”currency”:”CNY”,”amount”:250,”description”:”highway”,”currency”:”CNY”,”amount”:500,”description”:”others”],”sign”:”ABCDFER1234576POIUY”

客服关单 ”data”:”didi_oid”:123456789,”status”:”ServiceCancelled”,”time”:”1455863897”,

”sign”:”ABCDFER1234576POIUY”

18. 订单状态含义状态 含义

Pending 订单已被接受,但还未派单

NoDriverAvaiable 无司机接单

Accepted 司机已接单

Arrived 司机已到达接驾地点

Charging 乘客已上车,司机开始计费

Finished 到达目的地

DriverCancelled 订单被司机取消

PassengerCancelled 订单被乘客取消

ServiceCancelled 客服关单

19. 统一错误码返回Key Value

error API错误返回

error_detail(可选) 具体的错误细节

八、Q&A

1. SDK / 帐号 相关Q: Appid与Secrect我该怎么获取? A: 目前我们走的是线下模式,联系我们的商务同学,他们会给你们提供对应的Appid与Secrect。后期会提供开发者平台自助获取appid与secrect。

Q: SDK发布出去之后,在不替换SDK的前提下,里面的内容会有更新吗? A: 我们的是SDK+WebApp的形式,内容实际承载为一个WebApp,所以里面的内容是迭代升级的。

2. WebApp / 功能相关Q: 我可以有获取价格预估、乘客的订单状态等信息吗? A: 可使用SDK1.1版本进行信息的获取。因为反作弊原因,纯API调用不会支持。

Q: SDK内的WebApp使用的是HTTP还是HTTPS A: 目前使用的是HTTP协议,在后期会上线HTTPS版本的WebApp的支持,无需更换SDK包。

Q: 目前支持的业务是那些,以及是否支持券使用? A: 目前支持的业务为出租车、专车、快车、代驾。其中,专车、快车、代驾可以在线支付,支持券使用。

3. 支付 / 微信相关Q: 目前接入的SDK支持那些支付方式? A: 目前使用的是微信WAP支付,走的是网页的协议,引入SDK并不会对现有APP的支付产生任何影响。租车业务线目前仅支持线下支付或者扫码支付。

平台内的在线支付计划会在月底完成支持。介时可以直接生效,无需更换SDK。

Q: 目前SDK的使用依赖微信吗,主要是做了什么呢? A: SDK目前必须依赖微信,使用微信主要是使用其支付及真身验证(发单环节)。在第二期内我们会增加支付宝的支持。

八、免责声明1. 滴滴端会收集的数据供环境判定

1. 滴滴端会收集的数据供环境判定数据 系统 说明

IMEI Android/IOS IMEI

CPU_ID Android CPU序列号

WIFI_ID Android WIFI

2. 收集信息1. 用户详细定位信息,仅在SDK处于工作状态收集2. 用户手机号码,由用户主动填入或拉起SDK时传递

ReleaseNoteV1: