Skip to content

Commit

Permalink
Merge pull request #5 from konduto/payment-types
Browse files Browse the repository at this point in the history
Payment types
  • Loading branch information
raphaelsampaio authored Sep 8, 2016
2 parents 3054262 + f620e7d commit 2b7b861
Show file tree
Hide file tree
Showing 42 changed files with 599 additions and 257 deletions.
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ To get started add our SDK as a dependency in your **pom.xml**:
<dependency>
<groupId>com.konduto.sdk</groupId>
<artifactId>java-sdk</artifactId>
<version>2.7.0</version>
<version>2.8.0</version>
</dependency>
```

Expand Down Expand Up @@ -115,13 +115,23 @@ created_at | _(optional)_ Date when customer was created.

#### Payment information

##### Credit card
Parameter | Description
--- | ---
status | _(required)_ The status of the transaction returned by the payment processor. Accepts `approved`, `declined` or `pending` if the payment wasn't been processed yet.
bin | _(optional)_ First six digits of the customer's credit card. Used to identify the type of card being sent.
last4 | _(optional)_ Four last digits of the customer's credit card number.
expiration_date | _(optional)_ Card's expiration date under MMYYYY format.

##### Boleto
Parameter | Description
--- | ---
expiration_date | _(optional)_ Boleto's expiration date (yyyy-MM-dd).

##### Other payment types available
* DEBIT
* TRANSFER
* VOUCHER

#### Billing address

Expand Down
6 changes: 3 additions & 3 deletions java-sdk-test/src/com/konduto/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import com.konduto.sdk.exceptions.KondutoHTTPException;
import com.konduto.sdk.exceptions.KondutoInvalidEntityException;
import com.konduto.sdk.exceptions.KondutoUnexpectedAPIResponseException;
import com.konduto.sdk.models.*;

import java.net.URI;
import com.konduto.sdk.models.KondutoCustomer;
import com.konduto.sdk.models.KondutoOrder;
import com.konduto.sdk.models.KondutoOrderStatus;

public class Main {

Expand Down
2 changes: 1 addition & 1 deletion konduto.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = 2.7.0
version = 2.8.0
3 changes: 1 addition & 2 deletions src/main/java/com/konduto/sdk/Konduto.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.konduto.sdk;

import com.google.gson.JsonObject;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.konduto.sdk.exceptions.KondutoHTTPException;
import com.konduto.sdk.exceptions.KondutoHTTPExceptionFactory;
import com.konduto.sdk.exceptions.KondutoInvalidEntityException;
import com.konduto.sdk.exceptions.KondutoUnexpectedAPIResponseException;
import com.konduto.sdk.models.*;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.konduto.sdk.adapters;

import com.google.gson.JsonObject;
import com.konduto.sdk.models.KondutoBoletoPayment;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Created by rsampaio on 9/8/16.
*
* Serializes a boleto payment.
* Note the expiration date formatting.
*/
public class KondutoBoletoPaymentSerializer extends KondutoPaymentSerializer {
public JsonObject completeSerialization(JsonObject paymentAsJson, KondutoBoletoPayment boletoPayment) {
Date expirationDate = boletoPayment.getExpirationDate();
if(expirationDate == null) { return paymentAsJson; }
SimpleDateFormat boletoDateFormat = new SimpleDateFormat("yyyy-MM-dd");
paymentAsJson.addProperty("expiration_date", boletoDateFormat.format(expirationDate));
return paymentAsJson;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.konduto.sdk.adapters;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.konduto.sdk.models.KondutoCreditCardPayment;

/**
* Created by rsampaio on 9/8/16.
*
* Serializes a credit card payment.
*/
public class KondutoCreditCardPaymentSerializer extends KondutoPaymentSerializer {
JsonElement completeSerialization(JsonObject paymentAsJson, KondutoCreditCardPayment creditCardPayment) {
paymentAsJson.addProperty("status", creditCardPayment.getStatusAsString());
paymentAsJson.addProperty("bin", creditCardPayment.getBin());
paymentAsJson.addProperty("last4", creditCardPayment.getLast4());
paymentAsJson.addProperty("expiration_date", creditCardPayment.getExpirationDate());
return paymentAsJson;
}
}
68 changes: 0 additions & 68 deletions src/main/java/com/konduto/sdk/adapters/KondutoPaymentAdapter.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.konduto.sdk.adapters;

import com.google.gson.*;
import com.konduto.sdk.models.*;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;

/**
*
* Deserialization of KondutoPayment collections.
*
*/
public class KondutoPaymentCollectionDeserializer implements JsonDeserializer<Collection<KondutoPayment>> {

/**
* Method to deserialize a JSON object into a collection of KondutoPayment.
*
* @param json a serialized object
* @param typeOfT the object type
* @param context GSON serialization context
* @return an ArrayList of payments
* @throws JsonParseException
*/
@Override
public Collection<KondutoPayment> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {

Collection<KondutoPayment> payments = new ArrayList<KondutoPayment>();

for(JsonElement je : json.getAsJsonArray()) {
KondutoPaymentType type =
KondutoPaymentType.valueOf(((JsonObject) je).get("type").getAsString().toUpperCase());
switch (type){
case BOLETO:
KondutoBoletoPayment boletoPayment = new KondutoBoletoPayment();
String expirationDateAsStr = ((JsonObject) je).get("expiration_date").getAsString();
boletoPayment.setExpirationDate(expirationDateAsStr);
payments.add(boletoPayment);
break;
case CREDIT:
payments.add((KondutoCreditCardPayment) context.deserialize(je, KondutoCreditCardPayment.class));
break;
case DEBIT:
payments.add((KondutoDebitPayment) context.deserialize(je, KondutoDebitPayment.class));
break;
case TRANSFER:
payments.add((KondutoTransferPayment) context.deserialize(je, KondutoTransferPayment.class));
break;
case VOUCHER:
payments.add((KondutoVoucherPayment) context.deserialize(je, KondutoVoucherPayment.class));
break;
}
}

return payments;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.konduto.sdk.adapters;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.konduto.sdk.models.KondutoBoletoPayment;
import com.konduto.sdk.models.KondutoCreditCardPayment;
import com.konduto.sdk.models.KondutoPayment;
import com.konduto.sdk.models.KondutoPaymentType;

import java.lang.reflect.Type;

/**
* Created by rsampaio on 9/8/16.
*
*/
public class KondutoPaymentSerializer implements JsonSerializer<KondutoPayment> {
/**
* KondutoPayment serializer
*
* @param payment the payment that needs to be converted to Json.
* @param typeOfSrc the actual type (fully genericized version) of the source object.
* @param context the serialization context
* @return a JsonElement corresponding to the specified object.
*/
@Override
public JsonElement serialize(KondutoPayment payment, Type typeOfSrc, JsonSerializationContext context) {
JsonObject paymentAsJson = new JsonObject();
paymentAsJson.addProperty("type", payment.getTypeAsString());
if(payment.getType().equals(KondutoPaymentType.CREDIT)) {
KondutoCreditCardPaymentSerializer creditCardPaymentSerializer = new KondutoCreditCardPaymentSerializer();
return creditCardPaymentSerializer.completeSerialization(paymentAsJson, (KondutoCreditCardPayment) payment);
}
if(payment.getType().equals(KondutoPaymentType.BOLETO)) {
KondutoBoletoPaymentSerializer boletoPaymentSerializer = new KondutoBoletoPaymentSerializer();
return boletoPaymentSerializer.completeSerialization(paymentAsJson, (KondutoBoletoPayment) payment);
}
return paymentAsJson;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,8 @@
import com.konduto.sdk.models.*;

import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

/**
* KondutoTravelAdapter to deserialize KondutoTravel objects.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.konduto.sdk.models.*;
import com.konduto.sdk.models.KondutoTravelLeg;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
Expand Down
Loading

0 comments on commit 2b7b861

Please sign in to comment.