Skip to content

Commit

Permalink
Merge pull request #118 from hyperwallet/DEV-v3
Browse files Browse the repository at this point in the history
Dev v3
  • Loading branch information
akalichety-hw committed Nov 21, 2020
2 parents 749a993 + 3d01555 commit 2fe3b70
Show file tree
Hide file tree
Showing 35 changed files with 2,255 additions and 43 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
Changelog
=========

1.7.0
-----------------
- Added custom headers
- Added multipart upload functionality without Jersey dependency
- Added TransferStatusTransitions (get, list)
- Added Tranfer Refund methods (create, get, list)
- Added updatePaypalAccount method
- Added methods - getBankAccountStatusTransition(), listTransferMethods

1.6.1
-----------------
- Added 'processingTime' to BankCards
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Hyperwallet REST SDK (Beta)
===========================

A library to manage users, transfer methods and payments through the Hyperwallet Rest V3 API
For V4 Rest API, please use SDK V 2.1.0
For V4 Rest API, please use SDK V 2.x.x

Prerequisites
------------
Expand All @@ -21,13 +21,13 @@ Installation
<dependency>
<groupId>com.hyperwallet</groupId>
<artifactId>sdk</artifactId>
<version>1.6.1</version>
<version>1.7.0</version>
</dependency>
```

**Gradle**
```
compile 'com.hyperwallet:sdk:1.6.1'
compile 'com.hyperwallet:sdk:1.7.0'
```

Documentation
Expand All @@ -42,7 +42,7 @@ API Overview
To write an app using the SDK

* Register for a sandbox account and get your username, password and program token at the [Hyperwallet Program Portal](https://portal.hyperwallet.com).
* Add dependency `com.hyperwallet:sdk:1.6.1` to your `pom.xml` (or `build.gradle`).
* Add dependency `com.hyperwallet:sdk:1.7.0` to your `pom.xml` (or `build.gradle`).

* Create a instance of the Hyperwallet Client (with username, password and program token)
```java
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.hyperwallet</groupId>
<artifactId>sdk</artifactId>
<version>1.6.2-SNAPSHOT</version>
<version>1.7.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>hyperwallet-java-sdk</name>
Expand Down
230 changes: 218 additions & 12 deletions src/main/java/com/hyperwallet/clientsdk/Hyperwallet.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,20 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.hyperwallet.clientsdk.model.*;
import com.hyperwallet.clientsdk.util.HyperwalletApiClient;
import com.hyperwallet.clientsdk.util.HyperwalletEncryption;
import com.hyperwallet.clientsdk.util.HyperwalletJsonUtil;
import com.hyperwallet.clientsdk.util.*;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.TimeZone;
import java.util.*;

/**
* The Hyperwallet Client
*/
public class Hyperwallet {

public static final String VERSION = "1.4.2";
public static final String VERSION = "1.7.0";

private final HyperwalletApiClient apiClient;
private final String programToken;
Expand Down Expand Up @@ -840,6 +836,7 @@ public HyperwalletStatusTransition deactivatePaperCheck(String userToken, String
*
* @param userToken User token
* @param paperCheckToken Paper Check token
* @param notes notes for deactivating paper check
* @return The status transition
*/
public HyperwalletStatusTransition deactivatePaperCheck(String userToken, String paperCheckToken, String notes) {
Expand Down Expand Up @@ -1000,6 +997,7 @@ public HyperwalletList<HyperwalletTransfer> listTransfers() {
* Create Transfer Status Transition
*
* @param transferToken Transfer token assigned
* @param transition HyperwalletStatusTransition object passed
* @return HyperwalletStatusTransition new status for Transfer Request
*/
public HyperwalletStatusTransition createTransferStatusTransition(String transferToken, HyperwalletStatusTransition transition) {
Expand All @@ -1019,6 +1017,51 @@ public HyperwalletStatusTransition createTransferStatusTransition(String transfe
return apiClient.post(url + "/transfers/" + transferToken + "/status-transitions", transition, HyperwalletStatusTransition.class);
}

/**
* Get Transfer Status Transition
*
* @param transferToken Transfer token assigned
* @param statusTransitionToken Status transition token
* @return HyperwalletStatusTransition new status for Transfer Request
*/
public HyperwalletStatusTransition getTransferStatusTransition(String transferToken, String statusTransitionToken) {
if (StringUtils.isEmpty(transferToken)) {
throw new HyperwalletException("Transfer token is required");
}
if (StringUtils.isEmpty(statusTransitionToken)) {
throw new HyperwalletException("statusTransitionToken is required");
}
return apiClient.get(url + "/transfers/" + transferToken + "/status-transitions/" + statusTransitionToken, HyperwalletStatusTransition.class);
}

/**
* List All Transfer Status Transition information
*
* @param transferToken User token
* @return HyperwalletList of HyperwalletStatusTransition
*/
public HyperwalletList<HyperwalletStatusTransition> listTransferStatusTransition(String transferToken) {
return listTransferStatusTransition(transferToken, null);
}

/**
* List Transfer Status Transition
*
* @param transferToken Transfer token assigned
* @param options List filter option
* @return HyperwalletList of HyperwalletStatusTransition
*/
public HyperwalletList<HyperwalletStatusTransition> listTransferStatusTransition(String transferToken,
HyperwalletPaginationOptions options) {
if (StringUtils.isEmpty(transferToken)) {
throw new HyperwalletException("Transfer token is required");
}
String url = paginate(this.url + "/transfers/" + transferToken + "/status-transitions", options);

return apiClient.get(url, new TypeReference<HyperwalletList<HyperwalletStatusTransition>>() {
});
}

//--------------------------------------
// PayPal Accounts
//--------------------------------------
Expand Down Expand Up @@ -1057,11 +1100,32 @@ public HyperwalletPayPalAccount createPayPalAccount(HyperwalletPayPalAccount pay
return apiClient.post(url + "/users/" + payPalAccount.getUserToken() + "/paypal-accounts", payPalAccount, HyperwalletPayPalAccount.class);
}

/**
* Update PayPal Account
*
* @param payPalAccount PayPal Account to Update.
* @return HyperwalletPayPalAccount Updated PayPal Account
*/
public HyperwalletPayPalAccount updatePayPalAccount(HyperwalletPayPalAccount payPalAccount) {
if (payPalAccount == null) {
throw new HyperwalletException("PayPal Account is required");
}
if (StringUtils.isEmpty(payPalAccount.getUserToken())) {
throw new HyperwalletException("User token is required");
}
if (StringUtils.isEmpty(payPalAccount.getToken())) {
throw new HyperwalletException("PayPal Account token is required");
}
return apiClient.put(url + "/users/" + payPalAccount.getUserToken() + "/paypal-accounts/" + payPalAccount.getToken(), payPalAccount,
HyperwalletPayPalAccount.class);
}


/**
* Get PayPal Account Request
*
* @param userToken User token assigned
* @param payPalAccountToken PayPal Account token assigned
* @param userToken User token assigned
* @param payPalAccountToken PayPal Account token assigned
* @return HyperwalletPayPalAccount PayPal Account
*/
public HyperwalletPayPalAccount getPayPalAccount(String userToken, String payPalAccountToken) {
Expand Down Expand Up @@ -1539,7 +1603,30 @@ public HyperwalletStatusTransition createBankAccountStatusTransition(String user
transition.setCreatedOn(null);
transition.setFromStatus(null);
transition.setToStatus(null);
return apiClient.post(url + "/users/" + userToken + "/bank-accounts/" + bankAccountToken + "/status-transitions", transition, HyperwalletStatusTransition.class);
return apiClient.post(url + "/users/" + userToken + "/bank-accounts/" + bankAccountToken + "/status-transitions", transition,
HyperwalletStatusTransition.class);
}

/**
* Get Bank Account Status Transition
*
* @param userToken User token
* @param bankAccountToken Bank Account token
* @param statusTransitionToken Status transition token
* @return HyperwalletStatusTransition
*/
public HyperwalletStatusTransition getBankAccountStatusTransition(String userToken, String bankAccountToken, String statusTransitionToken) {
if (StringUtils.isEmpty(userToken)) {
throw new HyperwalletException("User token is required");
}
if (StringUtils.isEmpty(bankAccountToken)) {
throw new HyperwalletException("Bank Account token is required");
}
if (StringUtils.isEmpty(statusTransitionToken)) {
throw new HyperwalletException("Status Transition token may not be present");
}
return apiClient.get(url + "/users/" + userToken + "/bank-accounts/" + bankAccountToken + "/status-transitions/" + statusTransitionToken,
HyperwalletStatusTransition.class);
}

/**
Expand Down Expand Up @@ -2109,8 +2196,124 @@ public HyperwalletTransferMethod createTransferMethod(String jsonCacheToken, Str
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Json-Cache-Token", jsonCacheToken);

return apiClient.post(url + "/users/" + transferMethod.getUserToken() + "/transfer-methods", transferMethod, HyperwalletTransferMethod.class, headers);
return apiClient.post(url + "/users/" + transferMethod.getUserToken() + "/transfer-methods", transferMethod, HyperwalletTransferMethod.class,
headers);
}

/**
* List Transfer Methods
*
* @param userToken String user token
* @param options List filter option
* @return HyperwalletList of HyperwalletTransferMethod
*/
public HyperwalletList<HyperwalletTransferMethod> listTransferMethods(String userToken, HyperwalletPaginationOptions options) {
String url = paginate(this.url + "/users/" + userToken + "/transfer-methods", options);
if (StringUtils.isEmpty(userToken)) {
throw new HyperwalletException("User token is required");
}
return apiClient.get(url, new TypeReference<HyperwalletList<HyperwalletTransferMethod>>() {
});
}

//--------------------------------------
// Transfer refunds
//--------------------------------------

/**
* Create Transfer Refund
*
* @param transferToken Transfer token assigned
* @param transferRefund Transfer Refund object to create
* @return Created Transfer Refund
*/
public HyperwalletTransferRefund createTransferRefund(String transferToken, HyperwalletTransferRefund transferRefund) {
if (transferRefund == null) {
throw new HyperwalletException("Transfer Refund is required");
}
if (StringUtils.isEmpty(transferToken)) {
throw new HyperwalletException("Transfer token is required");
}
if (StringUtils.isEmpty(transferRefund.getClientRefundId())) {
throw new HyperwalletException("ClientRefundId is required");
}

transferRefund = copy(transferRefund);
transferRefund.clearStatus();
transferRefund.clearCreatedOn();
return apiClient.post(url + "/transfers/" + transferToken + "/refunds", transferRefund, HyperwalletTransferRefund.class);
}

/**
* Get Transfer Refund
*
* @param transferToken Transfer token assigned
* @param transferRefundToken Transfer Refund token assigned
* @return Transfer Refund object
*/
public HyperwalletTransferRefund getTransferRefund(String transferToken, String transferRefundToken) {
if (StringUtils.isEmpty(transferToken)) {
throw new HyperwalletException("Transfer token is required");
}
if (StringUtils.isEmpty(transferRefundToken)) {
throw new HyperwalletException("Transfer Refund token is required");
}

return apiClient.get(url + "/transfers/" + transferToken + "/refunds/" + transferRefundToken, HyperwalletTransferRefund.class);
}

/**
* List Transfer Refund Requests
*
* @param options List filter option
* @param transferToken Transfer token assigned
* @return HyperwalletList of HyperwalletTransferRefund
*/
public HyperwalletList<HyperwalletTransferRefund> listTransferRefunds(String transferToken, HyperwalletTransferListOptions options) {
if (StringUtils.isEmpty(transferToken)) {
throw new HyperwalletException("Transfer token is required");
}

String url = paginate(this.url + "/transfers/" + transferToken + "/refunds", options);
if (options != null) {
url = addParameter(url, "clientRefundId", options.getDestinationToken());
url = addParameter(url, "sourceToken", options.getSourceToken());
}
return apiClient.get(url, new TypeReference<HyperwalletList<HyperwalletTransferRefund>>() {
});
}

//--------------------------------------
// Upload documents for user endpoint
//--------------------------------------

/**
* Upload documents
*
* @param userToken userToken for which documents to be uploaded
* @param uploadData HyperwalletVerificationDocument to get uploaded
* @return HyperwalletUser user object with document upload status
*/
public HyperwalletUser uploadUserDocuments(String userToken, List<HyperwalletVerificationDocument> uploadData) {
Multipart multipart = new Multipart();
if (StringUtils.isEmpty(userToken)) {
throw new HyperwalletException("User token is not present");
}
if (uploadData == null || uploadData.size() < 1) {
throw new HyperwalletException("Data for upload is missing");
}
if (uploadData.get(0).getUploadFiles() == null || uploadData.get(0).getUploadFiles().size() < 1) {
throw new HyperwalletException("Upload Files are missing");
}
try {
multipart = HyperwalletMultipartUtils.convert(uploadData);
} catch(IOException e) {
throw new HyperwalletException("Unable to convert to Multipart formdata");
}
return apiClient.put(url + "/users/" + userToken, multipart, HyperwalletUser.class);
}


//--------------------------------------
// Internal utils
//--------------------------------------
Expand Down Expand Up @@ -2211,5 +2414,8 @@ private HyperwalletVenmoAccount copy(HyperwalletVenmoAccount venmoAccount) {
venmoAccount = HyperwalletJsonUtil.fromJson(HyperwalletJsonUtil.toJson(venmoAccount), HyperwalletVenmoAccount.class);
return venmoAccount;
}
private HyperwalletTransferRefund copy(HyperwalletTransferRefund transferRefund) {
return HyperwalletJsonUtil.fromJson(HyperwalletJsonUtil.toJson(transferRefund), HyperwalletTransferRefund.class);
}

}
Loading

0 comments on commit 2fe3b70

Please sign in to comment.