一:管理员注册企业滴滴
1.登录企业滴滴官网,点击右上角的免费注册按钮,然后输入手机号,验证码,企业名称等信息,完成注册
2.注册成功,登陆后滴滴企业开放平台,在“管理中心”中,我们可以看到测试环境和正式环境下的应用信息
3.我们可以创建应用,当创建的应用提交申请通过后,可以看到应用的授权信息,以及其他的一些配置信息
二:系统中申请开通企业滴滴
当这些底层东西都搭建好之后,我们的系统中就可以开始使用了
1.在系统中点击“申请开通”按钮,输入参数后,点击开通服务
2.然后带着这些参数跳转到滴滴授权页面,进行授权
代码示例:
[Data, HttpPost]
public ActionResult OpenDIDIService(String companyId, String companyName, String userId, string adminAuth, Int32 editFlag)
{
string url = "http://api.es.xiaojukeji.com/openauth/Platform/index";
ResponseContext<Object> result = new ResponseContext<object>();
ICOMMONCompanyDIDI proc = new COMMONCompanyDIDIService();
List<CndModel> pars = new List<CndModel>();
pars.Add(new CndModel("1=1"));
List<BaseDto> list = proc.GetList(pars);
///检测滴滴参数是否配置
if (list == null || list.Count == 0)
{
result.Head.Code = ErrCode.SaveBudgetSucess;
result.Head.Msg = "请配置滴滴参数";
}
COMMONCompanyDIDIModel modelTmp = list.Where(p => (p as COMMONCompanyDIDIModel).LegalUnitID == "000000").FirstOrDefault() as COMMONCompanyDIDIModel;
if (modelTmp == null || string.IsNullOrWhiteSpace(modelTmp.LegalUnitID))
{
result.Head.Code = ErrCode.SaveBudgetSucess;
result.Head.Msg = "请配置滴滴参数";
}
///当前公司是否已配置
COMMONCompanyDIDIModel model = list.Where(p => (p as COMMONCompanyDIDIModel).LegalUnitID == UserContext.CompanyGUID).FirstOrDefault() as COMMONCompanyDIDIModel;
//COMMONCompanyDIDIModel model = list.Where(p => (p as COMMONCompanyDIDIModel).LegalUnitID == "000086").FirstOrDefault() as COMMONCompanyDIDIModel;
if (model == null || string.IsNullOrWhiteSpace(model.LegalUnitID))
{
model = new COMMONCompanyDIDIModel();
model.LegalUnitID = UserContext.CompanyGUID;
model.Client_Id = modelTmp.Client_Id;
model.Client_Secret = modelTmp.Client_Secret;
model.Grant_Type = modelTmp.Grant_Type;
model.Sign_Key = modelTmp.Sign_Key;
model.IsOpen = false;
model.Out_Company_Id = companyId;
model.Out_Company_Name = companyName;
model.Auth_scope = adminAuth;
model.Out_member_id = userId;
int value = proc.AddModel(model);
if (value == 1)
{
Tuple<bool, string> resultValue = DIDIHelper.GetDIDIOpenAuthorize(model);
if (resultValue.Item1 == false)
{
result.Head.Code = ErrCode.SaveBudgetSucess;
result.Head.Msg = resultValue.Item2;
}
else
{
result.Head.Code = ErrCode.Sucess;
result.Head.Msg = url + "?open_auth_token=" + resultValue.Item2;
}
}
else
{
result.Head.Code = ErrCode.SaveBudgetSucess;
result.Head.Msg = "开通失败";
}
}
else
{
Tuple<bool, string> resultValue = DIDIHelper.GetDIDIOpenAuthorize(model);
if (resultValue.Item1 == false)
{
result.Head.Code = ErrCode.SaveBudgetSucess;
result.Head.Msg = resultValue.Item2;
}
else
{
result.Head.Code = ErrCode.Sucess;
result.Head.Msg = url + "?open_auth_token=" + resultValue.Item2;
}
}
return Json(result);
}
3.授权认证(获取access_token)
http://api.es.xiaojukeji.com/river/Auth/authorize
HTTP请求方式
POST
请求参数
名称 | 类型 | 必选 | 描述 |
client_id | string | yes | 申请应用时分配的AppKey |
client_secret | string | yes | 申请应用时分配的AppSecret |
grant_type | string | yes | 请求的类型,填写client_credentials |
phone | string | yes | 管理员手机号 |
timestamp | bigint | yes | 当前时间戳 |
sign | string | yes | 签名 |
注意事项
sign签名请参照 签名算法
返回数据
{
"access_token":"e1aa319d6622ddb7f30b6a24781dce6e01a5a578",
"expires_in":3600,
"token_type":"Bearer",
"scope":"test1 test2 test3"
}
返回值字段 | 字段类型 | 字段说明 |
access_token | string | 接口获取授权后的access token |
expires_in | int | access_token的生命周期,单位是秒数 |
token_type | string | access_token类型 |
scope | string | 权限范围 |
代码示例
public static Tuple<Boolean, object> GetAuthorizeForDIDI(COMMONCompanyDIDIModel companyModel)
{
string url = @"http://api.es.xiaojukeji.com/river/Auth/authorize";
#region 接口参数
//时间戳
//TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan ts = DAHelper.GetSysDate() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();
companyModel.Token_Date = DAHelper.GetSysDate();
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("client_id", companyModel.Client_Id);
dic.Add("client_secret", companyModel.Client_Secret);
dic.Add("grant_type", companyModel.Grant_Type);
dic.Add("phone", companyModel.Phone);
dic.Add("timestamp", timeStamp);
dic.Add("sign_key", companyModel.Sign_Key);
var tmp = dic.OrderBy(item => item.Key).ToList();
string signString = "";
foreach (var item in tmp)
{
if (!string.IsNullOrWhiteSpace(signString))
{
signString += "&";
}
signString += item.Key + "=" + item.Value;
}
string sign = GetMD5(signString);
#endregion
string buffer = "client_id=" + companyModel.Client_Id + "&" + "client_secret=" + companyModel.Client_Secret +
"&" + "grant_type=" + companyModel.Grant_Type + "&" + "phone=" + companyModel.Phone +
"&" + "timestamp=" + timeStamp + "&" + "sign=" + sign;
Encoding requestEncoding = Encoding.GetEncoding("utf-8");
string retString = PostHttp(url, buffer, requestEncoding);
var responseInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DIDIResponseAuthorize>(retString);
if (!string.IsNullOrWhiteSpace(responseInfo.access_token))
{
companyModel.Access_Token = responseInfo.access_token;
companyModel.Expires_In = responseInfo.expires_in;
companyModel.AddNeedUpdateField("*", false);
companyModel.AddNeedUpdateField("Access_Token", true);
companyModel.AddNeedUpdateField("Token_Date", true);
companyModel.AddNeedUpdateField("Expires_In", true);
(new COMMONCompanyDIDIService()).ModifyModel(companyModel);
return new Tuple<bool, object>(true, (object)companyModel);
}
else
{
return new Tuple<bool, object>(false, responseInfo.errno + ";" + responseInfo.errmsg);
}
}
4.调用“获取公司授权状态”接口
http://api.es.xiaojukeji.com/river/Company/getAuthStatus
HTTP请求方式
POST
请求参数
名称 | 类型 | 必选 | 描述 |
out_company_id | string | yes | 授权公司在平台的id |
client_id | string | yes | 平台在滴滴的client_id |
access_token | string | yes | 接口访问的access_token |
timestamp | string | yes | 当前时间戳 |
sign | string(32) | yes | 签名 |
返回数据
返回值为json格式,示例
{
errno: 0,
errmsg: "SUCCESS",
data: {
auth_status: 2,
out_company_id: "2222_5",
company_id: "1744563595",
out_member_id: "bbbbbAAAA133_5",
phone: "11111111113",
callback: "",
auth_scope: "1|2|3",
create_time: "1464161795"
}
}
data中字段说明
返回值字段 | 字段类型 | 字段说明 |
auth_status | int | 授权状态:0未授权(或已取消授权),1已授权在回调中,2已授权并回调成功,3已授权但是回调失败 |
out_company_id | string | 授权公司在平台的id |
company_id | string | 授权公司在滴滴的id |
out_member_id | string | 操作人在平台的id |
auth_scope | string | 授权范围(值: 1用户管理 2订单管理 3发票管理, 多个用|隔开,比如 1|2|3) |
callback | string | 回调信息(回调时会透传的信息) |
create_time | string | 授权时间戳 |
phone | string | 操作人手机号 |
timestamp | string | 当前时间戳 |
代码示例
public static Tuple<bool, string> GetDIDIOpenGetAuthStatus(string legal_unit_id)
{
#region 获取Token
COMMONCompanyDIDIService companyService = new COMMONCompanyDIDIService();
COMMONCompanyDIDIModel companyModel = new COMMONCompanyDIDIModel();
companyModel.LegalUnitID = legal_unit_id;
//companyModel.LegalUnitID = "000086";
companyModel = companyService.GetModel(companyModel) as COMMONCompanyDIDIModel;
var companyCheck = CheckCompanyModel(companyModel);
if (companyCheck.Item1 == false && companyCheck.Item2 == Token错误)
{
var authorizeRespone = GetAuthorizeForDIDI(companyModel);
if (authorizeRespone.Item1 == false)
{
return new Tuple<Boolean, string>(authorizeRespone.Item1, authorizeRespone.Item2.ToString());
}
else
{
companyModel = authorizeRespone.Item2 as COMMONCompanyDIDIModel;
}
}
else if (companyCheck.Item1 == false)
{
return new Tuple<Boolean, string>(companyCheck.Item1, companyCheck.Item2);
}
#endregion
#region 获取Token
string url = "http://api.es.xiaojukeji.com/river/Company/getAuthStatus";
#region 接口参数
//时间戳
TimeSpan ts = DAHelper.GetSysDate() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("out_company_id", companyModel.Out_Company_Id);
dic.Add("client_id", companyModel.Client_Id);
dic.Add("access_token", companyModel.Access_Token);
dic.Add("timestamp", timeStamp);
dic.Add("sign_key", companyModel.Sign_Key);
var tmp = dic.OrderBy(item => item.Key).ToList();
string signString = "";
foreach (var item in tmp)
{
if (!string.IsNullOrWhiteSpace(signString))
{
signString += "&";
}
signString += item.Key + "=" + item.Value;
}
string sign = GetMD5(signString);
#endregion
string buffer = "out_company_id=" + companyModel.Out_Company_Id + "&" + "client_id=" + companyModel.Client_Id +
"&" + "access_token=" + companyModel.Access_Token +
"&" + "timestamp=" + timeStamp + "&" + "sign=" + sign;
Encoding requestEncoding = Encoding.GetEncoding("utf-8");
string retString = PostHttp(url, buffer, requestEncoding);
#endregion
var responseInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DIDIResponseAuthorizeStatus>(retString);
if (responseInfo != null && responseInfo.errno == 0 && responseInfo.errmsg.ToUpper() == 成功)
{
if (responseInfo.data.auth_status == 1 || responseInfo.data.auth_status == 2 || responseInfo.data.auth_status == 3)
{
companyModel.IsOpen = true;
companyModel.Company_id = responseInfo.data.company_id;
companyModel.Admin_Phone = responseInfo.data.phone;
companyModel.Auth_scope = responseInfo.data.auth_scope;
companyModel.AddNeedUpdateField("*", false);
companyModel.AddNeedUpdateField("IsOpen", true);
companyModel.AddNeedUpdateField("Company_id", true);
companyModel.AddNeedUpdateField("Admin_Phone", true);
companyModel.AddNeedUpdateField("Auth_scope", true);
companyService.ModifyModel(companyModel);
return new Tuple<Boolean, string>(true, responseInfo.errmsg);
}
}
return new Tuple<Boolean, string>(false, responseInfo.errmsg);
}
5.获取授权Token
http://api.es.xiaojukeji.com/openauth/Service/getToken
HTTP请求方式
Post
请求参数
名称 | 类型 | 必选 | 描述 |
out_company_id | string | yes | 待授权公司在平台的id |
out_company_name | string | yes | 待授权公司在平台的名称 |
out_member_id | string | yes | 操作人在平台的id |
auth_scope | string | yes | 授权范围(值: 1用户管理 2订单管理 3发票管理, 多个用|隔开,比如 1|2|3) |
callback | string | yes | 回调信息(完成授权后,要透传的信息) |
client_id | string | yes | 平台在滴滴的client_id |
client_secret | string | yes | 平台在滴滴的client_secret |
timestamp | string | yes | 当前时间戳 |
sign | string(32) | yes | 签名 |
注意事项
暂无
返回数据
返回值为json格式,示例
{
errno: 0,
errmsg: "SUCCESS",
data: {
open_auth_token: "EaOlTqYGs-ATl-ie7yFa8CfL3ZOu8F93-7Oi6IwLIZ9SyMpZfHM03WAM4JqIU2ryWREpnA0HsJKthQwMVZ4rzx-RElqiTneyGHdl",
auth_status: 0
}
}
data中字段说明
返回值字段 | 字段类型 | 字段说明 |
open_auth_token | string | 授权token |
auth_status | int | 当前授权状态:0未授权,1已授权在回调中,2已授权并回调成功,3已授权但是回调失败 |
代码示例:
public static Tuple<bool, string> GetDIDIOpenAuthorize(COMMONCompanyDIDIModel companyModel)
{
#region 获取Token
string url = "http://api.es.xiaojukeji.com/openauth/Service/getToken";
#region 接口参数
//时间戳
TimeSpan ts = DAHelper.GetSysDate() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();
companyModel.Token_Date = DAHelper.GetSysDate();
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("out_company_id", companyModel.Out_Company_Id);
dic.Add("out_company_name", companyModel.Out_Company_Name);
dic.Add("out_member_id", companyModel.Out_member_id);
dic.Add("auth_scope", companyModel.Auth_scope);
dic.Add("callback", "");
dic.Add("client_id", companyModel.Client_Id);
dic.Add("client_secret", companyModel.Client_Secret);
dic.Add("timestamp", timeStamp);
dic.Add("sign_key", companyModel.Sign_Key);
var tmp = dic.OrderBy(item => item.Key).ToList();
string signString = "";
foreach (var item in tmp)
{
if (!string.IsNullOrWhiteSpace(signString))
{
signString += "&";
}
signString += item.Key + "=" + item.Value;
}
string sign = GetMD5(signString);
#endregion
string buffer = "out_company_id=" + companyModel.Out_Company_Id + "&" + "out_company_name=" + companyModel.Out_Company_Name +
"&" + "out_member_id=" + companyModel.Out_member_id + "&" + "auth_scope=" + companyModel.Auth_scope +
"&" + "callback=" + "&" + "client_id=" + companyModel.Client_Id +
"&" + "client_secret=" + companyModel.Client_Secret +
"&" + "timestamp=" + timeStamp + "&" + "sign=" + sign;
Encoding requestEncoding = Encoding.GetEncoding("utf-8");
string retString = PostHttp(url, buffer, requestEncoding);
#endregion
var responseInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DIDIResponseOpenAuthorize>(retString);
if (responseInfo != null && responseInfo.errno == 0 && responseInfo.errmsg.ToUpper() == 成功)
{
return new Tuple<Boolean, string>(true, responseInfo.data.open_auth_token);
}
return new Tuple<Boolean, string>(false, responseInfo.errmsg);
}
三:系统中批量开通企业滴滴
http://api.es.xiaojukeji.com/river/Member/add
HTTP请求方式
POST
请求参数
名称 | 类型 | 必选 | 描述 |
client_id | string | yes | 申请应用时分配的AppKey |
access_token | string | yes | 授权后的access token |
timestamp | int | yes | 当前时间戳,精确到秒级 |
company_id | bigint | yes | 企业ID |
data | string | yes | 员工数据json格式,最大500条 |
sign | string(32) | yes | 签名 |
员工信息(data对应数组中每条记录中字段)
名称 | 类型 | 必选 | 描述 |
phone | string | yes | 员工手机号 |
realname | string | yes | 员工姓名 |
employee_number | string | no | 员工ID(员工在公司的员工号) |
string | no | 邮箱 | |
department | string | no | 部门名称 |
branch_name | string | no | 所在分公司名称 |
system_role | int | no | 系统角色(0-车辆预定人员,1-普通管理员,2-超级管理员;默认为0) |
residentsname | string | no | 常驻地中文 |
use_company_money | int | no | 是否企业支付余额(0-否,1-是,默认为0) |
total_quota | string | no | 每月配额 |
is_remark | int | no | 叫车时备注信息是否必填(0-选填,1-必填;默认为0) |
budget_center_id | bigint | no | 成本中心ID(从已审核通过的成本中心选取) |
regulation_id | string | no | 用车制度ID(从 9.1用车制度查询 中选取,可以填多个,以_分隔,如 123_456_789)注:如不传用车制度ID,无法使用企业支付 |
注意事项
参数data为json格式,最多500条;如:
[{"phone":"18600002395","realname":"\u5f20\u4e09","employee_number":"","email":"[email protected]","department":"QA","branch_name":"TEST","system_role":0,"use_company_money":1,"total_quota":10000,"is_remark":0,"budget_center_id":5494886025395700949,"regulation_id":"5489198484344538189_5489709520894035023"},{"phone":"18610002296","realname":"\u5f20\u4e09\u4e09","employee_number":"","email":"[email protected]","department":"QA","branch_name":"TEST","system_role":0,"use_company_money":1,"total_quota":10000,"is_remark":0,"budget_center_id":5494886025395700949,"regulation_id":"5489198484344538189_5489709520894035020"}]
返回数据
{
"errno":0,
"errmsg":"success",
"data": [
{
"id": "6271374443730709510",
"phone": "18600002292"
},
{
"id": "6271374443730709511",
"phone": "18610002292"
},
...
]
}
返回值字段 | 字段类型 | 字段说明 |
id | bigint | 员工在滴滴企业平台的ID |
phone | string | 员工手机号 |
代码示例
public static Tuple<Boolean, object> AddUserForDIDI(List<CommonEmployeeModel> employeeList, string legal_unit_id, int system_role, int use_company_money, string total_quota, int is_remark)
{
if (employeeList == null || employeeList.Count == 0)
{
return new Tuple<Boolean, object>(false, "员工不能为空");
}
foreach (CommonEmployeeModel employeeModel in employeeList)
{
#region 获取Token
COMMONCompanyDIDIService companyService = new COMMONCompanyDIDIService();
COMMONCompanyDIDIModel companyModel = new COMMONCompanyDIDIModel();
companyModel.LegalUnitID = legal_unit_id;
companyModel = companyService.GetModel(companyModel) as COMMONCompanyDIDIModel;
var companyCheck = CheckCompanyModel(companyModel);
if (companyCheck.Item1 == false && companyCheck.Item2 == Token错误)
{
var authorizeRespone = GetAuthorizeForDIDI(companyModel);
if (authorizeRespone.Item1 == false)
{
return new Tuple<Boolean, object>(authorizeRespone.Item1, authorizeRespone.Item2);
}
else
{
companyModel = authorizeRespone.Item2 as COMMONCompanyDIDIModel;
}
}
else if (companyCheck.Item1 == false)
{
return new Tuple<Boolean, object>(companyCheck.Item1, (object)companyCheck.Item2);
}
#endregion
#region 接口参数
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("client_id", companyModel.Client_Id);
dic.Add("access_token", companyModel.Access_Token);
dic.Add("company_id", companyModel.Company_id);
dic.Add("sign_key", companyModel.Sign_Key);
DIDIEnterEmployee didiEmployee = new DIDIEnterEmployee();
didiEmployee.phone = employeeModel.CellPhone;
//didiEmployee.realname = employeeModel.EmployeeName;
didiEmployee.realname = StringToUnicode(employeeModel.EmployeeName);
didiEmployee.employee_number = employeeModel.EmployeeID;
didiEmployee.email = employeeModel.Email;
didiEmployee.department = unicode_0(employeeModel.OrgName);
//系统角色(0-车辆预定人员,1-普通管理员,2-超级管理员;默认为0)
didiEmployee.system_role = system_role;
didiEmployee.use_company_money = use_company_money;
didiEmployee.total_quota = total_quota;
didiEmployee.is_remark = is_remark;
string data = GetModelJsonNotNull<DIDIEnterEmployee>(didiEmployee);
if (string.IsNullOrWhiteSpace(data))
{
return new Tuple<Boolean, object>(false, "data不能为空");
}
//string dataJson = Newtonsoft.Json.JsonConvert.SerializeObject("[" + data + "]");
//dic.Add("data", dataJson);
dic.Add("data", "[" + data + "]");
//时间戳
TimeSpan ts = DAHelper.GetSysDate() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();
dic.Add("timestamp", timeStamp);
var tmp = dic.OrderBy(item => item.Key).ToList();
string signString = "";
foreach (var item in tmp)
{
if (!string.IsNullOrWhiteSpace(signString))
{
signString += "&";
}
signString += item.Key + "=" + item.Value;
}
string sign = GetMD5(signString);
#endregion
string url = "http://api.es.xiaojukeji.com/river/Member/add";
string buffer = "client_id=" + dic["client_id"] + "&" + "access_token=" + dic["access_token"] +
"&" + "timestamp=" + timeStamp + "&" + "company_id=" + dic["company_id"] +
"&" + "sign=" + sign + "&" + "data=" + dic["data"];
Encoding requestEncoding = Encoding.GetEncoding("utf-8");
string retString = PostHttp(url, buffer, requestEncoding);
//InterfaceInfoDIDIModel infoModel = new InterfaceInfoDIDIModel();
//infoModel.Info_Type = "【didi】【新增用户】";
//infoModel.Info_Name = "http://api.es.xiaojukeji.com/river/Member/add";
//infoModel.Input_Params = buffer;
//infoModel.Output_Params = retString;
//infoModel.LegalUnitID = legal_unit_id;
//LogForDIDI(infoModel);
var tokenResponseEntity = Newtonsoft.Json.JsonConvert.DeserializeObject<DIDIResponseEmployee>(retString);
try
{
if (UserContext.CurrentContext != null && UserContext.CurrentContext.UserID != null)
{
EClaim.Common.Log.LogMsg(UserContext.CurrentContext.UserID + "\\滴滴添加用户", buffer);
EClaim.Common.Log.LogMsg(UserContext.CurrentContext.UserID + "\\滴滴添加用户", retString);
}
else
{
EClaim.Common.Log4Request.LogMsg("滴滴添加用户", buffer);
EClaim.Common.Log4Request.LogMsg("滴滴添加用户", retString);
}
}
catch (Exception)
{
}
if (tokenResponseEntity.errno == 0 && tokenResponseEntity.errmsg == 成功)
{
if (tokenResponseEntity.data != null && tokenResponseEntity.data.Count > 0)
{
CommandItem sql = DAHelper.GetCommandItem();
CommonEmployeeService employeeService = new CommonEmployeeService();
foreach (DIDIResponseEmployeeDetail employeeDetail in tokenResponseEntity.data)
{
string uid = employeeList.Where(item => item.CellPhone == employeeDetail.phone).Select(item => item.EmployeeID).FirstOrDefault();
sql.Text = @"insert into T_COMMON_EMPLOYEE_LINK
select CompanyGUID,EmployeeGUID,EmployeeID,2,'" + employeeDetail.id + @"',null,null from t_common_employee
where employeeID='" + uid + "'";
DAHelper.GetDataAccess().ExecuteNonQuery(sql);
try
{
if (UserContext.CurrentContext != null && UserContext.CurrentContext.UserID != null)
{
EClaim.Common.Log.LogMsg(UserContext.CurrentContext.UserID + "\\滴滴添加用户", sql.Text);
}
else
{
EClaim.Common.Log4Request.LogMsg("滴滴添加用户", sql.Text);
}
}
catch (Exception)
{
}
}
}
}
else
{
return new Tuple<bool, object>(false, tokenResponseEntity.errmsg);
}
}
return new Tuple<bool, object>(true, "成功");
}
四:订单查询
http://api.es.xiaojukeji.com/river/Order/get
HTTP请求方式
Get
请求参数
名称 | 类型 | 必选 | 描述 |
client_id | string | yes | 申请应用时分配的AppKey |
access_token | string | yes | 授权后的access token |
timestamp | string | yes | 当前时间戳 |
company_id | string | yes | 企业ID |
call_phone | string | no | 叫车人手机号 |
phone | string | no | 乘客手机号 |
start_date | string | no | 开始日期(如:2015-05-01) |
end_date | string | no | 结束日期(如:2015-05-28) |
use_car_type | int | no | 用车方式(1:出租车,2:专车,3:快车,4:代驾,5:豪华车) |
pay_type | int | no | 支付方式(0企业支付 1个人垫付 2混合支付) |
is_invoice | int | no | 开票状态(1:开过 0:未开) |
offset | int | yes | 数据开始位置 |
length | int | yes | 数据条数(最大100条) |
sign | string | yes | 签名 |
need_approval_id | int | no | 是否需要返回审批单ID字段 0:不返回 1:返回。默认0 |
注意事项
暂无
返回数据
{
"errno": 0,
"errmsg": "SUCCESS",
"data": {
"total": 6,
"records": [
{
"order_id": "6166067918382059610",
"create_time": "2015-11-30 10:39:31",
"require_level": "100",
"city": "1",
"city_name": "北京市",
"start_name": "当代城市家园",
"end_name": "北京南站",
"departure_time": "2015-11-30 10:39:31",
"finish_time": "2015-11-30 10:40:33",
"status": "2",
"pay_type": "1",
"member_id": "2992137043884639240",
"pay_time": "2015-11-30 10:59:16",
"total_price": "10.00",
"actual_price": "10.00",
"refund_price": "0.00",
"company_real_pay": "10.00",
"company_card_pay": "10.00",
"personal_real_pay": "0.00",
"personal_pay": "0.00",
"company_pay": "10.00",
"company_real_refund": "0.00",
"personal_real_refund": "0.00",
"is_invoice": "0",
"use_car_type": "2",
"normal_distance": "0.00",
"call_phone": "13086000110",
"passenger_phone": "13086000110",
"budget_center_id": "5576477588712326171",
"budget_item_id": "5576477588712326272",
"use_car_config_id":"5489198484344538189",
"order_source":"3",
"is_carpool":"1",
"encrypted_info":"L32HWhrHmgorFYp0lCJ6h6i24PqdjP9Nlsj1F2Hv0M%2FqedfadfaRfv1g3fPdD%2BesMCLni4BIviMjagk7Z8SeRu4FU60jCw3GYzFhHrZoXEX4VTx2o%3D",
},
....
]
}
}
返回值字段 | 字段类型 | 字段说明 |
order_id | string | 订单ID |
create_time | string | 叫单时间 |
use_car_type | string | 用车方式 |
require_level | string | 车型 |
city | string | 城市ID |
city_name | string | 城市名称 |
start_name | string | 出发地地址 |
end_name | string | 目的地地址 |
departure_time | int | 出发时间 |
finish_time | string | 结束计价时间 |
status | int | 订单状态(2-已支付 3-已退款 4-已取消 7-部分退款) |
pay_type | int | 支付方式(0企业支付 1个人垫付 2混合支付) |
member_id | bigint | 员工在滴滴企业的ID(同员工新增接口中返回的id) |
pay_time | string | 支付时间 |
normal_distance | int | 总里程 |
total_price | float | 总金额 |
actual_price | float | 实付金额(总金额-券抵扣金额) |
refund_price | float | 退款金额 |
company_pay | float | 公司支付金额 |
company_card_pay | float | 公司出行卡支付金额 |
personal_pay | float | 个人支付金额 |
company_real_pay | float | 公司实付金额 |
personal_real_pay | float | 个人实付金额 |
company_real_refund | float | 公司实际退款金额 |
personal_real_refund | float | 个人实际退款金额 |
is_invoice | int | 报销开票状态(1:开过 0:未开) |
call_phone | int | 叫车人手机号 |
passenger_phone | int | 乘车人手机号 |
budget_center_id | int | 成本中心ID |
budget_item_id | int | 费用科目ID |
use_car_config_id | int | 用车规则ID |
order_source | int | 订单来源(0-Web 1-滴滴出行App 2-H5 3-OpenAPI 4-企业APP 5-邀约券 6-SDK) |
is_carpool | int | 是否拼车(0-不是 1-是) |
encrypted_info | string | 价格加密信息 |
approval_id | string | 滴滴内部审批单ID |
out_approval_id | string | 接入方内部审批单ID |
代码示例
public static Tuple<Boolean, object> GetOrder(string uid, string active_uid, string legal_unit_id, string phone, string start_date, string end_date, int use_car_type, int pay_type, string pay_time, int length)
{
#region 获取Token
COMMONCompanyDIDIService companyService = new COMMONCompanyDIDIService();
COMMONCompanyDIDIModel companyModel = new COMMONCompanyDIDIModel();
companyModel.LegalUnitID = legal_unit_id;
companyModel = companyService.GetModel(companyModel) as COMMONCompanyDIDIModel;
var companyCheck = CheckCompanyModel(companyModel);
if (companyCheck.Item1 == false && companyCheck.Item2 == Token错误)
{
var authorizeRespone = GetAuthorizeForDIDI(companyModel);
if (authorizeRespone.Item1 == false)
{
return new Tuple<Boolean, object>(authorizeRespone.Item1, authorizeRespone.Item2);
}
else
{
companyModel = authorizeRespone.Item2 as COMMONCompanyDIDIModel;
}
}
else if (companyCheck.Item1 == false)
{
return new Tuple<Boolean, object>(companyCheck.Item1, (object)companyCheck.Item2);
}
#endregion
string url = @"http://api.es.xiaojukeji.com/river/Order/get";
#region 接口参数
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("client_id", companyModel.Client_Id);
dic.Add("access_token", companyModel.Access_Token);
dic.Add("company_id", companyModel.Company_id);
dic.Add("phone", phone);
dic.Add("offset", "0");
dic.Add("length", "100");
dic.Add("sign_key", companyModel.Sign_Key);
///TODO:确认查询时开始时间是否小于等于该时间
string didi_start_date = GetLastDownDate(uid);
if (!string.IsNullOrWhiteSpace(didi_start_date))
{
didi_start_date = Convert.ToDateTime(didi_start_date).ToString("yyyy-MM-dd");
dic.Add("start_date", didi_start_date);
}
if (!string.IsNullOrWhiteSpace(end_date))
{
dic.Add("end_date", end_date);
}
#endregion
//读取DIDI接口,查询订单并保存到数据库
responseOrderList = new List<InterfaceOrderDIDIModel>();
var orderResponse = GetOrderForDIDI(dic, url, companyModel);
if (orderResponse.Item1 == true)
{
if (responseOrderList != null && responseOrderList.Count > 0)
{
SaveInterfaceOrderData(responseOrderList, legal_unit_id, pay_time, length.ToString());
}
}
///获取支付时间为1970年的订单
var tmp = GetOrderForTaxi(uid, active_uid, legal_unit_id, phone);
if (tmp.Item1 == false)
{
return tmp;
}
//从数据库查询订单
List<AppResponseOrder> dataList = GetInterfaceOrderList(phone, start_date, end_date, use_car_type, pay_type, pay_time, length.ToString(), legal_unit_id);
if (dataList != null && dataList.Count > 0)
{
//dataList = dataList.OrderByDescending(item => item.Pay_Time).ToList();
string responseJson = "";
foreach (AppResponseOrder model in dataList)
{
if (!string.IsNullOrWhiteSpace(responseJson))
{
responseJson += ",";
}
string json = GetModelJson<AppResponseOrder>(model);
responseJson += json;
}
return new Tuple<bool, object>(true, "[" + responseJson + "]");
}
else
{
return new Tuple<bool, object>(false, "未获取到订单");
}
}