pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/didi/ddes-openapi-sdk-java

a1e66.css" /> GitHub - didi/ddes-openapi-sdk-java · GitHub
Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

滴滴企业级开放接口SDK[Java版本]

概述


  • 滴滴企业级开发接口SDK,便捷调用开放平台API,目前包括以下服务:
    • 接口认证[auth]
    • 审批 [行前(approval)、行后(afterapproval)、外部(outapproval)]
    • 账单 [bill]
    • 成本中心 [budgetcenter]
    • 城市信息 [city]
    • 扩展信息 [extend]
    • 公司主体 [legalentity]
    • 单点登录 [login]
    • 用户信息 [member]
    • 订单 [order]
    • 职级 [rank]
    • 制度 [regulation]
    • 角色 [role]
    • 外部人员 [traveler]
    • 工作地点 [workplace] 具体可以访问 管理API对接文档(2024版) 查看。

运行环境


  • JDK 1.8

安装方法


1、Maven 仓库

<dependency>
  <groupId>com.xiaoju.sdk</groupId>
  <artifactId>ddes-open-sdk</artifactId>
  <version>1.0.0</version>
  <scope>compile</scope>
</dependency>

2、手动下载

  • 1、下载最新的源码
  • 2、使用Maven命令打包:mvn clean install
  • 3、将生成的jar包引入到项目中

快速使用

流程概述

调用API的流程如下:

  1. 创建应用
  2. 获取访问凭证
  3. 设置IP白名单 [前3步参考:接入前必读]
  4. 调用API

SDK配置参数说明(com.xiaoju.open.sdk.didies.core.Config)

配置项 配置方式 描述
clientId 必填 客户端 ID,用于身份认证。
clientSecret 必填 客户端密钥,用于身份认证。
signKey 必填 签名密钥,用于请求签名。
baseUrl 可选,默认值:https://api.es.xiaojukeji.com 接口请求的基础 URL。
grantType 可选,默认值:client_credentials OAuth 认证的授权类型,默认使用客户端凭证模式。
unauthorizedRetryTimes 可选,默认值:2 因 Token 失效导致接口请求失败时的重试次数。
unauthorizedRetryInterval 可选,默认值:1000(毫秒) Token 失效重试的时间间隔,默认1秒。
httpTransport 可选,默认自动创建 RestHttpTransport 实例 自定义 HTTP 请求实现类,需实现 IHttpTransport 接口。未设置时使用默认实现。
signMethod 可选,默认值:MD5 签名方法,可选枚举值(如 MD5SHA256,默认MD5)。
enableHoldToken 可选,默认值:true 是否开启自动获取并持有 Token(如未开启,需用自己管理token在每个接口中设置,推荐开启)。
enableRequestLog 可选 是否开启请求日志打印。需配合 logLevel 使用。
logLevel 可选 请求日志的打印级别(需开启 enableRequestLog),可选枚举如 DEBUGINFO
enableAES 可选,默认值:false 是否启用 AES 加密(此加密为整体加密,开启整体加密时人员信息不需要额外加密)。
aesKey 条件必填(当 enableAEStrue 时需设置) AES 加密使用的密钥。
encryptType 可选,默认值:NORMAL 加密类型。默认不加密(NORMAL),启用 AES 时可选择 AES128AES256
connectTimeout 可选,默认值:3000(毫秒) 网络连接超时时间(单位由 timeoutUnit 决定)。
callTimeOut 可选,默认值:3000(毫秒) 接口调用超时时间(单位由 timeoutUnit 决定)。
timeoutUnit 可选,默认值:MILLISECONDS 超时时间单位(如 MILLISECONDSSECONDS 等)。

说明:

  1. 必填项:clientIdclientSecretsignKey 必须通过代码手动设置(如 setClientId("your-id"))。

  2. 条件必填:aesKey 仅在启用 AES 加密(enableAES=true)时需设置。

  3. 默认行为:
    httpTransport 未设置时,自动使用 RestHttpTransport 实现类。

    • 接口整体加密默认关闭(enableAES=false),签名方法默认使用 MD5

  4. 超时配置:connectTimeoutcallTimeOut 的单位由 timeoutUnit 统一控制,默认毫秒。

  5. 依赖关系:
    logLevel 仅在 enableRequestLog=true 时生效。

    encryptType 的具体值需根据 EncryptTypeEnum 枚举定义选择(如 NORMAL 表示不加密)。


使用示例

1、以查询公司主体为例,更多示例请参考:samplemodule

public class Test {

  public static void main(String[] args) {
    Config config = Config.builder()
        .clientId("your_client_id")
        .clientSecret("your_client_secret")
        .signKey("your_sign_key")
        .signMethod(SignMethodEnum.MD5) // 默认使用MD5签名,可选SHA256签名,具体和对接人确认
        .build();

    ApiClient client = new ApiClient(config);
    getLegalEntityTest(client);
  }

  /**
   * 公司主体查询
   * <p>
   * 说明: * 查询公司在滴滴侧的具体信息; * 通过获取的信息用于确认相关的配置信息,可以用于同步滴滴ES后台的信息; * 只返回有效的公司信息。不包含禁用和过期的公司主体信息。需要返回全部的,是不是需要重新封接口。
   */
  public static void getLegalEntityTest(ApiClient client) throws Exception {
    GetLegalEntityRequest request = GetLegalEntityRequest.builder()
        .companyId("替换成自己的companyId")
        .legalEntityId("xxx")
        .build();

    GetLegalEntityApiReply response = client.legalentity().v1().getLegalEntity(request);
    if (response != null) {
      System.out.println(JacksonUtils.toJson(response));
    }
    System.out.println("getAdjustBillDataResultTest end");
  }
}

2、使用整体加密

public class EncryptTest {

  public static void main(String[] args) {
    Config config = Config.builder()
        .clientId("your_client_id")
        .clientSecret("your_client_secret")
        .signKey("your_sign_key")
        .enableAES(true) // 启用整体加密[默认为false]
        .aesKey("your_aes_key") // 设置AES密钥[enableAES为false的时候,该值无效]
        .encryptType(EncryptTypeEnum.AES128) // 设置加密方式[enableAES为false的时候,该值无效]
        .build();

    ApiClient client = new ApiClient(config);
    // 接口的调用不需要任何额外的操作,SDK会自动处理加密和解密
    getLegalEntityTest(client);
  }

  /**
   * 公司主体查询
   * <p>
   * 说明: * 查询公司在滴滴侧的具体信息; * 通过获取的信息用于确认相关的配置信息,可以用于同步滴滴ES后台的信息; * 只返回有效的公司信息。不包含禁用和过期的公司主体信息。需要返回全部的,是不是需要重新封接口。
   */
  public static void getLegalEntityTest(ApiClient client) throws Exception {
    GetLegalEntityRequest request = GetLegalEntityRequest.builder()
        .companyId("替换成自己的companyId")
        .legalEntityId("xxx")
        .build();

    GetLegalEntityApiReply response = client.legalentity().v1().getLegalEntity(request);
    if (response != null) {
      System.out.println(JacksonUtils.toJson(response));
    }
    System.out.println("getAdjustBillDataResultTest end");
  }
}

3、更多示例

示例模块 示例代码路径 包含接口 接口地址
接口认证 sample/AuthSample.java 接口认证(获取access_token) /river/Auth/authorize
行后授权 sample/AfterapprovalSample.java 行后审批结果同步 /river/AfterApproval/createPersonalReceipt
行后审批完订单查询个人付款单 /river/AfterApproval/getPersonalReceiptOrder
审批对接 sample/ApprovalSample.java 创建申请单(已按业务拆分) /river/Approval/create
修改申请单(已按业务拆分) /river/Approval/update
取消申请单 /river/Approval/cancel
查询审批单列表 /river/Approval/getOrder
查询申请单详情 /open-apis/v1/approval/detail
外部审批处理 /river/Approval/pass
外部审批处理 sample/OutapprovalSample.java 外部通知审批单状态变更 /river/OutApproval/Status
财税信息 sample/BillSample.java 账单列表 /river/Bill/get
已出账单(已按业务类型拆分) /river/Bill/detail
未出账单(已按业务类型拆分) /river/Bill/getNotGeneratedBillDetail
网约车,出租车交易明细 /river/Bill/transactionDetail
账单汇总查询-商旅、网约车、出租车 /river/Bill/summary
网约车、商旅账单树查询 /river/Bill/getBillStructure
商旅、网约车账单确认 /river/Bill/confirm
调账提交 /river/Bill/adjustBillData
调账结果查询 /river/Bill/queryAdjustBillDataResult
部门或项目 sample/BudgetcenterSample.java 部门或项目查询 /river/BudgetCenter/get
部门或项目新增 /river/BudgetCenter/add
部门或项目修改 /river/BudgetCenter/edit
部门或项目停用 /river/BudgetCenter/del
城市 sample/CitySample.java 国家查询(全量获取国际ID) /river/DemeterAres/Country/index
全量开城城市列表查询 /open-apis/v1/city/list
地点 sample/WorkspaceSample.java 地点新增 /open-apis/v1/workplace/create
地点删除 /open-apis/v1/workplace/del
地点修改 /open-apis/v1/workplace/update
外部出行人 sample/TravelerSample.java 外部出行人新增 /open-apis/v1/traveler/create
外部出行人修改 /open-apis/v1/traveler/update
外部出行人删除 /open-apis/v1/traveler/del
角色 sample/RoleSample.java 角色查询 /river/Role/get
制度 sample/RegulationSample.java 制度列表 /river/Regulation/get
制度详情 /river/Regulation/detail
职级 sample/RankSample.java 职级新增 /open-apis/v1/rank/create
职级更新 /open-apis/v1/rank/update
职级删除 /open-apis/v1/rank/del
职级查询 /river/Rank/getRanks
订单 sample/OrderSample.java 订单号列表查询 /open-apis/v1/order/list
机票订单详情查询 /api-gateway/g/flight/orderDetail
酒店订单详情查询 /api-gateway/g/hotel/orderDetail
火车票订单详情查询 /api-gateway/g/train/orderDetail
用车订单详情查询 /river/Order/detail
用车列表 /river/Order/get
机票预估价获取 /api-gateway/g/flight/info/estimatePrice
火车票直达列表 /api-gateway/train/queryLeftTicket
火车票中转车次列表 /api-gateway/g/train/transfer/queryLeftTicket
用户 sample/MemberSample.java 用户查询~员工列表(批量查询) /river/Member/get
用户查询~员工明细 /river/Member/detail
员工限额查询 /river/Member/getQuota
用户新增 /river/Member/single
用户修改 /river/Member/edit
用户删除 /river/Member/del
单点页面 sample/LoginSample.java 单点请求 /river/Login/getLoginEncryptStr
公司主体 sample/LegalentitySample.java 公司主体查询 /river/LegalEntity/get
公司主体新增 /river/LegalEntity/add
公司主体修改 /river/LegalEntity/edit
公司主体停用 /river/LegalEntity/del
拓展 sample/ExtendSample.java 拓展信息批量创建 /river/ExtendInfo/BatchSync
档案状态处理 /river/ExtendInfo/Status
拓展信息查询 /river/ExtendInfo/Get

📢注意: 请替换代码中的clientIdclientSecretsignKey为实际的值,以及替换实际入参中的companyId


特殊说明

1、接口中以obj结尾的字段均为SDK特有字段,在文档中无Obj结尾,文档中为字段类型为json-string,SDK中可直接使用对象,SDK自动完成对象转为json-string的过程。

如(仅保留了特殊处理的Obj字段及源字段信息):

public class CreateApprovalRequest extends BaseReq {
  /**
   * 扩展信息,扩展信息,自定义字段;最长不大于 500 字符;(必须为json字符串);默认为空字符
   */
  @JsonProperty("extra_info")
  private String extraInfo;
  /**
   * 扩展信息。转成json赋值给extra_info字段
   */
  @JsonProperty("extra_info__obj__")
  private Map<String, String> extraInfoObj;
  /**
   * 扩展信息list,自定义字段,最长不大于 500 字符,将extend_field_list转为 json 字符串,三个字段仅作为备注性字段。详见extend_field_list
   */
  @JsonProperty("extend_field_list")
  private String extendFieldList;
  /**
   * extendFieldListObj
   */
  @JsonProperty("extend_field_list__obj__")
  private ExtendFieldList extendFieldListObj;

  /**
   * 差旅单行程信息,差旅单行程信息,将travel_detail的值转为 json 字符串,approval_type &#x3D; 1 时必传。
   */
  @JsonProperty("travel_detail")
  private String travelDetail;
  /**
   * travelDetailObj
   */
  @JsonProperty("travel_detail__obj__")
  private TravelDetail travelDetailObj;
  /**
   * 差旅预算总额,差旅预算控制,一个申请单对应一个总预算纬度,一次只能全部或者选择部分品类。
   */
  @JsonProperty("travel_budget")
  private String travelBudget;
  /**
   * travelBudgetObj
   */
  @JsonProperty("travel_budget__obj__")
  private TravelBudget travelBudgetObj;
  /**
   * 差旅管控,差旅管控,目前仅支持市内用车每日限额设置(为json字符串类型,具体看请求示例)
   */
  @JsonProperty("travel_management")
  private String travelManagement;
  /**
   * travelManagementObj
   */
  @JsonProperty("travel_management__obj__")
  private TravelManagement travelManagementObj;
  /**
   * 出行人信息,出行人信息,不传时默认出行人为申请人,将passenger_list 转为 json 数组字符串。详见passenger_list
   */
  @JsonProperty("passenger_list")
  private String passengerList;
  /**
   * 出行人信息,可使用脚本将其转换为json后赋值给 passenger_list 字段
   */
  @JsonProperty("passenger_list__obj__")
  private List<TripPassenger> passengerListObj;
  /**
   * 多成本中心(array),序号1对应远成本中心字段,依然支持滴滴内部主键ID。使用部门CODE主键,和项目时名称和code作为主键。
   */
  @JsonProperty("budget_center_list")
  private String budgetCenterList;
  /**
   * 差旅预算总额,可使用脚本将其转换为json后赋值给 budget_center_list 字段
   */
  @JsonProperty("budget_center_list__obj__")
  private List<BudgetCenterListItem> budgetCenterListObj;
}

上述实体在使用时,可直接通过已Obj结尾的属性赋值,实际传调用接口时,SDK会自动将Obj结尾的属性转为json字符串,赋值给原属性传递给滴滴企业级。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy