wacai-open-sdk

wacai open sdk

License

License

GroupId

GroupId

com.wacai
ArtifactId

ArtifactId

wacai-open-sdk
Last Version

Last Version

1.5.1
Release Date

Release Date

Type

Type

pom
Description

Description

wacai-open-sdk
wacai open sdk
Project URL

Project URL

https://github.com/wacai/wacai-open-sdk
Source Code Management

Source Code Management

https://github.com/wacai/wacai-open-sdk/tree/master

Download wacai-open-sdk

Filename Size
wacai-open-sdk-1.5.1.pom 6 KB
Browse

How to add to project

<!-- https://jarcasting.com/artifacts/com.wacai/wacai-open-sdk/ -->
<dependency>
    <groupId>com.wacai</groupId>
    <artifactId>wacai-open-sdk</artifactId>
    <version>1.5.1</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.wacai/wacai-open-sdk/
implementation 'com.wacai:wacai-open-sdk:1.5.1'
// https://jarcasting.com/artifacts/com.wacai/wacai-open-sdk/
implementation ("com.wacai:wacai-open-sdk:1.5.1")
'com.wacai:wacai-open-sdk:pom:1.5.1'
<dependency org="com.wacai" name="wacai-open-sdk" rev="1.5.1">
  <artifact name="wacai-open-sdk" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.wacai', module='wacai-open-sdk', version='1.5.1')
)
libraryDependencies += "com.wacai" % "wacai-open-sdk" % "1.5.1"
[com.wacai/wacai-open-sdk "1.5.1"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

  • wacai-token-sdk
  • wacai-openAllInOne-sdk

wacai-openAllInOne-sdk是用来跟API网关交互的sdk

依赖GAV

依赖已经提交到 maven 中央仓库,直接使用即可

<dependency>
   <groupId>com.wacai</groupId>
   <artifactId>wacai-openAllInOne-sdk</artifactId>
   <version>${version}</version>
</dependency>

如果想直接使用 jar 包,可以去中央仓库下载。

交互图及对应核心功能

交互图

核心功能

  1. 封装和授权系统的交互逻辑,高版本的 SDK 的不再使用 token,而是和 API 网关直连
  2. 封装和API网关协议及透传请求实现细节
  3. 封装参数签名逻辑
  4. 被调用时的参数请求签名校验
  5. 提供token服务sdk
  6. 封装接口序列化&反序列化 定制序列化详情

核心依赖

  • okhttp3 用于在http层面做通信
  • slf4j-api 日志接口
  • fastjson/jackson 用于序列化&反序列化
  • commons-codes 签名字节数组的base64处理

核心类和实现

  • WacaiOpenApiClient 核心类,用于对API网关发起调用的Client
  • WacaiOpenApiRequest API网关请求报文的封装类
  • WacaiOpenApiResponse API网关响应报文的封装类

代码案例

构建Client和Request
// 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);
    }
});
FAQ
  • sdk中使用okhttp3来发起请求,如果在调试过程中出现response.body.string()报错"java.lang.NoSuchMethodError",请确认项目中okhttp的依赖。这个问题是由低版本的okhttp引起的。
com.wacai

wacai

挖财研发团队

Versions

Version
1.5.1
1.5.0
1.4.2
1.4.1
1.4.0
1.3.0