依赖已经提交到 maven 中央仓库,直接使用即可
<dependency>
<groupId>com.wacai</groupId>
<artifactId>wacai-openAllInOne-sdk</artifactId>
<version>${version}</version>
</dependency>
如果想直接使用 jar 包,可以去中央仓库下载。
封装和授权系统的交互逻辑,高版本的 SDK 的不再使用 token,而是和 API 网关直连- 封装和API网关协议及透传请求实现细节
- 封装参数签名逻辑
- 被调用时的参数请求签名校验
- 提供token服务sdk
- 封装接口序列化&反序列化 定制序列化详情
- okhttp3 用于在http层面做通信
- slf4j-api 日志接口
- fastjson/jackson 用于序列化&反序列化
- commons-codes 签名字节数组的base64处理
- WacaiOpenApiClient 核心类,用于对API网关发起调用的Client
- WacaiOpenApiRequest API网关请求报文的封装类
- WacaiOpenApiResponse API网关响应报文的封装类
// WacaiOpenApiClient 是一个单例,不要在每次调用时候创建!!!
WacaiOpenApiClient wacaiOpenApiClient = new WacaiOpenApiClient("${appKey}", "${appSecret}");
// 如果是测试联调环境,需要添加如下一行代码,线上环境则不需要
// wacaiOpenApiClient.setGatewayEntryUrl("http://guard.ngrok.wacaiyun.com/gw/api_entry");
wacaiOpenApiClient.init();
// 在wacaiOpenApiClient中,sdk到网关的超时时间,默认为connectTimeout 10s、readTimeout 10s、writeTimeout 10s
// 如果业务需要修改超时时间,可以在wacaiOpenApiClient.init()之后添加如下代码,不指定的话,使用okHttpClient的默认值10s
// OkHttpClient okHttpClient = new OkHttpClient().newBuilder(.connectTimeout(60000, TimeUnit.MILLISECONDS).readTimeout(60000, TimeUnit.MILLISECONDS).build();
// wacaiOpenApiClient.setClient(okHttpClient);
WacaiOpenApiRequest wacaiOpenApiRequest = new WacaiOpenApiRequest("wacai.order.delete", "v2");
wacaiOpenApiRequest.putBizParam("card_id", "34121141242144");
wacaiOpenApiRequest.putBizParam("apply_money", 10);
OrderDeleteResponseObject wacaiOpenApiResponse = wacaiOpenApiClient.invoke(wacaiOpenApiRequest, new TypeReference<OrderDeleteResponseObject>() {});
同步接口在异常返回时会抛出 WacaiOpenApiResponseException 异常,里边可以获取响应的错误码和详细的错误信息
wacaiOpenApiClient.invoke(wacaiOpenApiRequest, new TypeReference<OrderDeleteResponseObject>() {}, new WacaiOpenApiResponseCallback<OrderDeleteResponseObject>() {
@Override
public void onSuccess(OrderDeleteResponseObject data){
log.error("success {}", data);
}
@Override
public void onFailure(WacaiOpenApiResponseException ex) {
log.error("failure {}", ex);
}
});
- sdk中使用okhttp3来发起请求,如果在调试过程中出现response.body.string()报错"java.lang.NoSuchMethodError",请确认项目中okhttp的依赖。这个问题是由低版本的okhttp引起的。