系统对接企业滴滴

一:管理员注册企业滴滴

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(员工在公司的员工号)
email 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, "未获取到订单");
            }
        }

猜你喜欢

转载自blog.csdn.net/weixin_41392824/article/details/82018927
今日推荐