Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/main/java/com/checkout/ApiClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ public interface ApiClient {

<T extends HttpMetadata> CompletableFuture<T> getAsync(String path, SdkAuthorization authorization, Type responseType);

<T extends HttpMetadata> CompletableFuture<T> getAsync(String path, SdkAuthorization authorization, Class<T> responseType, IHeaders headers);

<T extends HttpMetadata> CompletableFuture<T> putAsync(String path, SdkAuthorization authorization, Class<T> responseType, Object request);

<T extends HttpMetadata> CompletableFuture<T> putAsync(String path, SdkAuthorization authorization, Class<T> responseType, Object request, IHeaders headers);

<T extends HttpMetadata> CompletableFuture<T> postAsync(String path, SdkAuthorization authorization, Class<T> responseType, Object request, String idempotencyKey);

<T extends HttpMetadata> CompletableFuture<T> postAsync(String path, SdkAuthorization authorization, Class<T> responseType, Object request, String idempotencyKey, IHeaders headers);
Expand Down Expand Up @@ -41,8 +45,12 @@ public interface ApiClient {

<T extends HttpMetadata> T get(String path, SdkAuthorization authorization, Type responseType);

<T extends HttpMetadata> T get(String path, SdkAuthorization authorization, Class<T> responseType, IHeaders headers);

<T extends HttpMetadata> T put(String path, SdkAuthorization authorization, Class<T> responseType, Object request);

<T extends HttpMetadata> T put(String path, SdkAuthorization authorization, Class<T> responseType, Object request, IHeaders headers);

<T extends HttpMetadata> T patch(String path, SdkAuthorization authorization, Class<T> responseType, Object request, String idempotencyKey);

<T extends HttpMetadata> T patch(String path, SdkAuthorization authorization, Type type, Object request, String idempotencyKey);
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/com/checkout/ApiClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ public <T extends HttpMetadata> CompletableFuture<T> getAsync(final String path,
);
}

@Override
public <T extends HttpMetadata> CompletableFuture<T> getAsync(final String path, final SdkAuthorization authorization, final Class<T> responseType, final IHeaders headers) {
validateParams(PATH, path, AUTHORIZATION, authorization);
return executeAsyncOrSync(
() -> get(path, authorization, responseType, headers),
() -> sendRequestAsync(GET, path, authorization, null, null, responseType, headers)
);
}

@Override
public <T extends HttpMetadata> CompletableFuture<T> putAsync(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request) {
validateParams(PATH, path, AUTHORIZATION, authorization);
Expand All @@ -68,6 +77,15 @@ public <T extends HttpMetadata> CompletableFuture<T> putAsync(final String path,
);
}

@Override
public <T extends HttpMetadata> CompletableFuture<T> putAsync(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request, final IHeaders headers) {
validateParams(PATH, path, AUTHORIZATION, authorization);
return executeAsyncOrSync(
() -> put(path, authorization, responseType, request, headers),
() -> sendRequestAsync(PUT, path, authorization, request, null, responseType, headers)
);
}

@Override
public <T extends HttpMetadata> CompletableFuture<T> patchAsync(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request, final String idempotencyKey) {
validateParams(PATH, path, AUTHORIZATION, authorization);
Expand Down Expand Up @@ -326,12 +344,24 @@ public <T extends HttpMetadata> T get(final String path, final SdkAuthorization
return sendRequestSync(GET, path, authorization, null, null, responseType);
}

@Override
public <T extends HttpMetadata> T get(final String path, final SdkAuthorization authorization, final Class<T> responseType, final IHeaders headers) {
validateParams(PATH, path, AUTHORIZATION, authorization);
return sendRequestSync(GET, path, authorization, null, null, responseType, headers);
}

@Override
public <T extends HttpMetadata> T put(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request) {
validateParams(PATH, path, AUTHORIZATION, authorization);
return sendRequestSync(PUT, path, authorization, request, null, responseType);
}

@Override
public <T extends HttpMetadata> T put(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request, final IHeaders headers) {
validateParams(PATH, path, AUTHORIZATION, authorization);
return sendRequestSync(PUT, path, authorization, request, null, responseType, headers);
}

@Override
public <T extends HttpMetadata> T patch(final String path, final SdkAuthorization authorization, final Class<T> responseType, final Object request, final String idempotencyKey) {
validateParams(PATH, path, AUTHORIZATION, authorization);
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/com/checkout/accounts/AccountsClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,18 @@ public interface AccountsClient {

CompletableFuture<OnboardEntityResponse> createEntity(OnboardEntityRequest entityRequest);

CompletableFuture<OnboardEntityResponse> createEntity(OnboardEntityRequest entityRequest, String schemaVersion);

CompletableFuture<PaymentInstrumentDetailsResponse> retrievePaymentInstrumentDetails(String entityId, String paymentInstrumentId);

CompletableFuture<OnboardEntityDetailsResponse> getEntity(String entityId);

CompletableFuture<OnboardEntityDetailsResponse> getEntity(String entityId, String schemaVersion);

CompletableFuture<OnboardEntityResponse> updateEntity(OnboardEntityRequest entityRequest, String entityId);

CompletableFuture<OnboardEntityResponse> updateEntity(OnboardEntityRequest entityRequest, String entityId, String schemaVersion);

/**
* @deprecated Use {{@link #createPaymentInstrument(String, PaymentInstrumentRequest)}} instead
*/
Expand Down Expand Up @@ -71,6 +77,8 @@ CompletableFuture<ReserveRuleCreateResponse> updateReserveRule(String entityId,
*/
CompletableFuture<EntityRequirementListResponse> getEntityRequirements(String entityId);

CompletableFuture<EntityRequirementListResponse> getEntityRequirements(String entityId, String schemaVersion);

/**
* Retrieves detailed information for a single requirement.
*
Expand Down Expand Up @@ -99,12 +107,18 @@ CompletableFuture<ReserveRuleCreateResponse> updateReserveRule(String entityId,

OnboardEntityResponse createEntitySync(final OnboardEntityRequest entityRequest);

OnboardEntityResponse createEntitySync(final OnboardEntityRequest entityRequest, final String schemaVersion);

PaymentInstrumentDetailsResponse retrievePaymentInstrumentDetailsSync(final String entityId, final String paymentInstrumentId);

OnboardEntityDetailsResponse getEntitySync(final String entityId);

OnboardEntityDetailsResponse getEntitySync(final String entityId, final String schemaVersion);

OnboardEntityResponse updateEntitySync(final OnboardEntityRequest entityRequest, final String entityId);

OnboardEntityResponse updateEntitySync(final OnboardEntityRequest entityRequest, final String entityId, final String schemaVersion);

EmptyResponse createPaymentInstrumentSync(final AccountsPaymentInstrument accountsPaymentInstrument, final String entityId);

IdResponse createPaymentInstrumentSync(final String entityId, final PaymentInstrumentRequest paymentInstrumentRequest);
Expand Down Expand Up @@ -135,6 +149,8 @@ IdResponse updatePaymentInstrumentDetailsSync(final String entityId,
*/
EntityRequirementListResponse getEntityRequirementsSync(final String entityId);

EntityRequirementListResponse getEntityRequirementsSync(final String entityId, final String schemaVersion);

/**
* Synchronous variant of {@link #getEntityRequirementDetails(String, String)}.
*/
Expand Down
72 changes: 64 additions & 8 deletions src/main/java/com/checkout/accounts/AccountsClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,16 @@ public class AccountsClientImpl extends AbstractClient implements AccountsClient
private static final String RESERVE_RULES_PATH = "reserve-rules";
private static final String REQUIREMENTS_PATH = "requirements";

private static final String DEFAULT_SCHEMA_VERSION = "3.0";

private final ApiClient filesClient;

private static Headers buildSchemaVersionHeaders(final String schemaVersion) {
return Headers.builder()
.accept("application/json;schema_version=" + schemaVersion)
.build();
}

public AccountsClientImpl(final ApiClient apiClient,
final ApiClient filesClient,
final CheckoutConfiguration configuration) {
Expand Down Expand Up @@ -77,13 +85,19 @@ public CompletableFuture<FileDetailsResponse> retrieveFile(final String entityId

@Override
public CompletableFuture<OnboardEntityResponse> createEntity(final OnboardEntityRequest entityRequest) {
return createEntity(entityRequest, DEFAULT_SCHEMA_VERSION);
}

@Override
public CompletableFuture<OnboardEntityResponse> createEntity(final OnboardEntityRequest entityRequest, final String schemaVersion) {
validateEntityRequest(entityRequest);
return apiClient.postAsync(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH),
sdkAuthorization(),
OnboardEntityResponse.class,
entityRequest,
null);
null,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand All @@ -97,21 +111,33 @@ public CompletableFuture<PaymentInstrumentDetailsResponse> retrievePaymentInstru

@Override
public CompletableFuture<OnboardEntityDetailsResponse> getEntity(final String entityId) {
return getEntity(entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public CompletableFuture<OnboardEntityDetailsResponse> getEntity(final String entityId, final String schemaVersion) {
validateEntityId(entityId);
return apiClient.getAsync(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId),
sdkAuthorization(),
OnboardEntityDetailsResponse.class);
OnboardEntityDetailsResponse.class,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
public CompletableFuture<OnboardEntityResponse> updateEntity(final OnboardEntityRequest entityRequest, final String entityId) {
return updateEntity(entityRequest, entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public CompletableFuture<OnboardEntityResponse> updateEntity(final OnboardEntityRequest entityRequest, final String entityId, final String schemaVersion) {
validateEntityRequestAndId(entityRequest, entityId);
return apiClient.putAsync(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId),
sdkAuthorization(),
OnboardEntityResponse.class,
entityRequest);
entityRequest,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand Down Expand Up @@ -243,11 +269,17 @@ public CompletableFuture<ReserveRulesResponse> getReserveRules(final String enti

@Override
public CompletableFuture<EntityRequirementListResponse> getEntityRequirements(final String entityId) {
return getEntityRequirements(entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public CompletableFuture<EntityRequirementListResponse> getEntityRequirements(final String entityId, final String schemaVersion) {
validateEntityId(entityId);
return apiClient.getAsync(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId, REQUIREMENTS_PATH),
sdkAuthorization(),
EntityRequirementListResponse.class);
EntityRequirementListResponse.class,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand Down Expand Up @@ -302,13 +334,19 @@ public FileDetailsResponse retrieveFileSync(final String entityId, final String

@Override
public OnboardEntityResponse createEntitySync(final OnboardEntityRequest entityRequest) {
return createEntitySync(entityRequest, DEFAULT_SCHEMA_VERSION);
}

@Override
public OnboardEntityResponse createEntitySync(final OnboardEntityRequest entityRequest, final String schemaVersion) {
validateEntityRequest(entityRequest);
return apiClient.post(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH),
sdkAuthorization(),
OnboardEntityResponse.class,
entityRequest,
null);
null,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand All @@ -322,21 +360,33 @@ public PaymentInstrumentDetailsResponse retrievePaymentInstrumentDetailsSync(fin

@Override
public OnboardEntityDetailsResponse getEntitySync(final String entityId) {
return getEntitySync(entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public OnboardEntityDetailsResponse getEntitySync(final String entityId, final String schemaVersion) {
validateEntityId(entityId);
return apiClient.get(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId),
sdkAuthorization(),
OnboardEntityDetailsResponse.class);
OnboardEntityDetailsResponse.class,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
public OnboardEntityResponse updateEntitySync(final OnboardEntityRequest entityRequest, final String entityId) {
return updateEntitySync(entityRequest, entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public OnboardEntityResponse updateEntitySync(final OnboardEntityRequest entityRequest, final String entityId, final String schemaVersion) {
validateEntityRequestAndId(entityRequest, entityId);
return apiClient.put(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId),
sdkAuthorization(),
OnboardEntityResponse.class,
entityRequest);
entityRequest,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand Down Expand Up @@ -465,11 +515,17 @@ public ReserveRulesResponse getReserveRulesSync(final String entityId) {

@Override
public EntityRequirementListResponse getEntityRequirementsSync(final String entityId) {
return getEntityRequirementsSync(entityId, DEFAULT_SCHEMA_VERSION);
}

@Override
public EntityRequirementListResponse getEntityRequirementsSync(final String entityId, final String schemaVersion) {
validateEntityId(entityId);
return apiClient.get(
buildPath(ACCOUNTS_PATH, ENTITIES_PATH, entityId, REQUIREMENTS_PATH),
sdkAuthorization(),
EntityRequirementListResponse.class);
EntityRequirementListResponse.class,
buildSchemaVersionHeaders(schemaVersion));
}

@Override
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/com/checkout/accounts/AgreedTerms.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.checkout.accounts;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public final class AgreedTerms {

private String date;

private String ipAddress;

private String name;

private String email;

private String version;

}
26 changes: 25 additions & 1 deletion src/main/java/com/checkout/accounts/BusinessType.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,29 @@ public enum BusinessType {
@SerializedName("unincorporated_association")
UNINCORPORATED_ASSOCIATION,
@SerializedName("auto_entrepreneur")
AUTO_ENTREPRENEUR
AUTO_ENTREPRENEUR,
@SerializedName("individual_or_sole_proprietorship")
INDIVIDUAL_OR_SOLE_PROPRIETORSHIP,
@SerializedName("scottish_limited_partnership")
SCOTTISH_LIMITED_PARTNERSHIP,
@SerializedName("limited_liability_corporation")
LIMITED_LIABILITY_CORPORATION,
@SerializedName("private_corporation")
PRIVATE_CORPORATION,
@SerializedName("publicly_traded_corporation")
PUBLICLY_TRADED_CORPORATION,
@SerializedName("government_agency")
GOVERNMENT_AGENCY,
@SerializedName("non_profit_entity")
NON_PROFIT_ENTITY,
@SerializedName("trust")
TRUST,
@SerializedName("club_or_society")
CLUB_OR_SOCIETY,
@SerializedName("regulated_financial_institution")
REGULATED_FINANCIAL_INSTITUTION,
@SerializedName("cftc_registered_entity")
CFTC_REGISTERED_ENTITY,
@SerializedName("sec_registered_entity")
SEC_REGISTERED_ENTITY
}
28 changes: 28 additions & 0 deletions src/main/java/com/checkout/accounts/Citizenship.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.checkout.accounts;

import com.checkout.common.CountryCode;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* A citizenship or legal status held by a company representative, as required by the
* Accounts API v3.0 individual schema.
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public final class Citizenship {

/**
* The type of citizenship or legal status (for example, {@code citizenship} or {@code residency}).
*/
private String type;

/**
* The two-letter ISO 3166-1 alpha-2 country code.
*/
private CountryCode country;
}
Loading
Loading