com.wacai:wacai-token-sdk

wacai open sdk

License

License

GroupId

GroupId

com.wacai
ArtifactId

ArtifactId

wacai-token-sdk
Last Version

Last Version

1.5.1
Release Date

Release Date

Type

Type

jar
Description

Description

wacai open sdk
Source Code Management

Source Code Management

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

Download wacai-token-sdk

How to add to project

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

Dependencies

compile (9)

Group / Artifact Type Version
org.projectlombok : lombok jar 1.16.12
com.fasterxml.jackson.core : jackson-core jar 2.9.4
com.fasterxml.jackson.core : jackson-databind jar 2.9.4
com.fasterxml.jackson.core : jackson-annotations jar 2.9.4
com.alibaba : fastjson jar 1.2.35
com.squareup.okhttp3 : okhttp jar 3.8.1
org.slf4j : slf4j-api jar 1.7.24
commons-io : commons-io jar 2.5
commons-codec : commons-codec jar 1.10

test (3)

Group / Artifact Type Version
ch.qos.logback : logback-classic jar 1.1.11
com.google.guava : guava jar 20.0
junit : junit jar 4.12

Project Modules

There are no modules declared in this project.

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