test:新增更多单元测试
Java版本
<dependency> <groupId>com.xiaoju.sdk</groupId> <artifactId>ddes-open-sdk</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>
mvn clean install
调用API的流程如下:
com.xiaoju.open.sdk.didies.core.Config
clientId
clientSecret
signKey
baseUrl
https://api.es.xiaojukeji.com
grantType
client_credentials
unauthorizedRetryTimes
2
unauthorizedRetryInterval
1000
httpTransport
RestHttpTransport
IHttpTransport
signMethod
MD5
SHA256
enableHoldToken
true
enableRequestLog
logLevel
DEBUG
INFO
enableAES
false
aesKey
encryptType
NORMAL
AES128
AES256
connectTimeout
3000
timeoutUnit
callTimeOut
MILLISECONDS
SECONDS
说明:
必填项:clientId、clientSecret、signKey 必须通过代码手动设置(如 setClientId("your-id"))。
setClientId("your-id")
条件必填:aesKey 仅在启用 AES 加密(enableAES=true)时需设置。
enableAES=true
默认行为:• httpTransport 未设置时,自动使用 RestHttpTransport 实现类。
• 接口整体加密默认关闭(enableAES=false),签名方法默认使用 MD5。
enableAES=false
超时配置:connectTimeout 和 callTimeOut 的单位由 timeoutUnit 统一控制,默认毫秒。
依赖关系:• logLevel 仅在 enableRequestLog=true 时生效。
enableRequestLog=true
• encryptType 的具体值需根据 EncryptTypeEnum 枚举定义选择(如 NORMAL 表示不加密)。
EncryptTypeEnum
1、以查询公司主体为例,更多示例请参考:samplemodule
sample
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、更多示例
📢注意: 请替换代码中的clientId、clientSecret和signKey为实际的值,以及替换实际入参中的companyId
📢注意
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 = 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字符串,赋值给原属性传递给滴滴企业级。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
滴滴企业级开放接口SDK[
Java版本]概述
运行环境
安装方法
1、Maven 仓库
2、手动下载
mvn clean install快速使用
流程概述
调用API的流程如下:
SDK配置参数说明(
com.xiaoju.open.sdk.didies.core.Config)clientIdclientSecretsignKeybaseUrlhttps://api.es.xiaojukeji.comgrantTypeclient_credentialsunauthorizedRetryTimes2unauthorizedRetryInterval1000(毫秒)httpTransportRestHttpTransport实例IHttpTransport接口。未设置时使用默认实现。signMethodMD5MD5、SHA256,默认MD5)。enableHoldTokentrueenableRequestLoglogLevel使用。logLevelenableRequestLog),可选枚举如DEBUG、INFO。enableAESfalseaesKeyenableAES为true时需设置)encryptTypeNORMALNORMAL),启用 AES 时可选择AES128或AES256。connectTimeout3000(毫秒)timeoutUnit决定)。callTimeOut3000(毫秒)timeoutUnit决定)。timeoutUnitMILLISECONDSMILLISECONDS、SECONDS等)。说明:
必填项:
clientId、clientSecret、signKey必须通过代码手动设置(如setClientId("your-id"))。条件必填:
aesKey仅在启用 AES 加密(enableAES=true)时需设置。默认行为:
•
httpTransport未设置时,自动使用RestHttpTransport实现类。• 接口整体加密默认关闭(
enableAES=false),签名方法默认使用MD5。超时配置:
connectTimeout和callTimeOut的单位由timeoutUnit统一控制,默认毫秒。依赖关系:
•
logLevel仅在enableRequestLog=true时生效。•
encryptType的具体值需根据EncryptTypeEnum枚举定义选择(如NORMAL表示不加密)。使用示例
1、以查询公司主体为例,更多示例请参考:
samplemodule2、使用整体加密
3、更多示例
📢注意: 请替换代码中的clientId、clientSecret和signKey为实际的值,以及替换实际入参中的companyId特殊说明
1、接口中以obj结尾的字段均为SDK特有字段,在文档中无Obj结尾,文档中为字段类型为json-string,SDK中可直接使用对象,SDK自动完成对象转为json-string的过程。
如(仅保留了特殊处理的Obj字段及源字段信息):