From ec77e9fc74e04800114f7ace29ecddf0b292e1e3 Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Wed, 18 Nov 2015 13:07:57 -0800 Subject: [PATCH 1/9] start working on the Android pay feature - initial commit --- .../connectors/inapp/InAppGateway.java | 4 +-- .../connectors/inapp/InAppSDKApiClient.java | 4 +-- .../inapp/envelopes/InAppEncryptEnvelope.java | 14 ++++---- ...pEnvelopeEncryptionTransactionObject.java} | 11 +++--- ...va => InAppEnvelopeTransactionObject.java} | 2 +- .../InAppAndroidPayTransactionObject.java | 31 +++++++++++++++++ .../InAppEncryptTransactionObject.java} | 14 ++++---- .../client/InAppTransactionObject.java} | 34 ++++++++++--------- .../client/InAppTransactionType.java} | 6 ++-- .../visa/inappsdk/datamodel/SDKGateway.java | 4 +-- .../inapp/InAppSDKApiClientTest.java | 12 +++---- 11 files changed, 84 insertions(+), 52 deletions(-) rename src/main/java/com/visa/inappsdk/connectors/inapp/transaction/{InAppEncryptionTransactionObject.java => InAppEnvelopeEncryptionTransactionObject.java} (78%) rename src/main/java/com/visa/inappsdk/connectors/inapp/transaction/{InAppTransactionObject.java => InAppEnvelopeTransactionObject.java} (95%) create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java rename src/main/java/com/visa/inappsdk/{datamodel/transaction/SDKEncryptTransactionObject.java => connectors/inapp/transaction/client/InAppEncryptTransactionObject.java} (54%) rename src/main/java/com/visa/inappsdk/{datamodel/transaction/SDKTransactionObject.java => connectors/inapp/transaction/client/InAppTransactionObject.java} (59%) rename src/main/java/com/visa/inappsdk/{datamodel/transaction/SDKTransactionType.java => connectors/inapp/transaction/client/InAppTransactionType.java} (50%) diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java index 846de8c..bb82173 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java @@ -8,7 +8,7 @@ import com.visa.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; import com.visa.inappsdk.datamodel.SDKGateway; import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; /** @@ -30,7 +30,7 @@ public static InAppGateway getGateway() { } @Override - protected boolean performEncryption(SDKTransactionObject transactionObject, SDKApiConnectionCallback applicationConnectionCallback) { + protected boolean performEncryption(InAppTransactionObject transactionObject, SDKApiConnectionCallback applicationConnectionCallback) { if(transactionInProgress) return transactionInProgress; if (transactionObject == null) diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java index 5bace67..03dc464 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java @@ -4,7 +4,7 @@ import com.visa.inappsdk.common.SDKCore; import com.visa.inappsdk.connectors.inapp.connection.InAppConnectionData; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; import java.lang.ref.WeakReference; @@ -75,7 +75,7 @@ public static void dispose() { InAppGateway.dispose(); } - public boolean performApi(Api api, SDKTransactionObject transactionObject, String messageSignature){ + public boolean performApi(Api api, InAppTransactionObject transactionObject, String messageSignature){ if(api == null) throw new NullPointerException("API must not be null"); if(transactionObject == null) diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java index 26f20c5..f2f1aee 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java @@ -5,9 +5,9 @@ import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; -import com.visa.inappsdk.connectors.inapp.transaction.InAppEncryptionTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; import com.visa.inappsdk.soap.model.SDKXMLParentNode; @@ -22,18 +22,18 @@ public class InAppEncryptEnvelope extends InAppBaseEnvelope { InAppEncryptEnvelope() { } - public InAppEncryptEnvelope(SDKTransactionObject transactionObject, String merchantId, String messageSignature) { + public InAppEncryptEnvelope(InAppTransactionObject transactionObject, String merchantId, String messageSignature) { createEnvelopeHeader(merchantId, messageSignature); - InAppEncryptionTransactionObject encryptionTransactionObject = convertTransactionObject(transactionObject, merchantId); + InAppEnvelopeEncryptionTransactionObject encryptionTransactionObject = convertTransactionObject(transactionObject, merchantId); createEnvelopeBody(encryptionTransactionObject); } - private void createEnvelopeBody(InAppEncryptionTransactionObject paymentObject) { + private void createEnvelopeBody(InAppEnvelopeEncryptionTransactionObject paymentObject) { SDKXMLParentNode request = this.createRequestMessage(); paymentObject.updateEnvelope(request); } - private InAppEncryptionTransactionObject convertTransactionObject(SDKTransactionObject transactionObject, + private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppTransactionObject transactionObject, String merchantId) { String merchantReferenceCode = transactionObject.getMerchantReferenceCode(); @@ -64,7 +64,7 @@ private InAppEncryptionTransactionObject convertTransactionObject(SDKTransaction encryptedPayment.setEncodedMetaData(VMposMessageSignature.MetadataEncodedValue); encryptedPayment.setPaymentSolution(VMposMessageSignature.PAYMENT_SOLUTION_DEFAULT_VALUE);*/ - InAppEncryptionTransactionObject inAppEncryptionTransactionObject = new InAppEncryptionTransactionObject( + InAppEnvelopeEncryptionTransactionObject inAppEncryptionTransactionObject = new InAppEnvelopeEncryptionTransactionObject( merchantId, merchantReferenceCode, card, bill, inAppEncryptPaymentDataService, CLIENT_LIBRARY/*, encryptedPayment*/); return inAppEncryptionTransactionObject; } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEncryptionTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java similarity index 78% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEncryptionTransactionObject.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java index 7c304fd..1163690 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEncryptionTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java @@ -2,7 +2,6 @@ import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; import com.visa.inappsdk.soap.model.SDKXMLParentNode; @@ -11,7 +10,7 @@ * * Created by fzubair on 10/8/2015. */ -public class InAppEncryptionTransactionObject extends InAppTransactionObject { +public class InAppEnvelopeEncryptionTransactionObject extends InAppEnvelopeTransactionObject { public InAppCard card; public InAppBillTo billTo; @@ -35,10 +34,10 @@ public class InAppEncryptionTransactionObject extends InAppTransactionObject { * @param encryptPaymentDataService * @param //shipTo */ - public InAppEncryptionTransactionObject(String merchantId, String merchantReferenceCode, - InAppCard inAppWebServiceCard, InAppBillTo inAppBillTo, - InAppEncryptPaymentDataService encryptPaymentDataService, - String clientLibrary) { + public InAppEnvelopeEncryptionTransactionObject(String merchantId, String merchantReferenceCode, + InAppCard inAppWebServiceCard, InAppBillTo inAppBillTo, + InAppEncryptPaymentDataService encryptPaymentDataService, + String clientLibrary) { this.merchantID = merchantId; this.merchantReferenceCode = merchantReferenceCode; this.clientLibrary = clientLibrary; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java similarity index 95% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppTransactionObject.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java index 4c000c8..7ea293e 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java @@ -9,7 +9,7 @@ * * @author fzubair */ -public abstract class InAppTransactionObject { +public abstract class InAppEnvelopeTransactionObject { public final String MERCHANT_ID = "merchantID"; public final String MERCHANT_REFERENCE_CODE = "merchantReferenceCode"; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java new file mode 100644 index 0000000..1640676 --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java @@ -0,0 +1,31 @@ +package com.visa.inappsdk.connectors.inapp.transaction.client; + +import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.SDK_TRANSACTION_ANDROID_PAY; + +/** + * Created by fzubair on 11/18/2015. + */ +final class InAppAndroidPayTransactionObject extends InAppTransactionObject { + + private InAppAndroidPayTransactionObject(Builder builder) + { + this.transactionType = builder.transactionType; + this.merchantReferenceCode = builder.merchantReferenceCode; + this.transactionTime = builder.transactionTime; + this.transactionDate = builder.transactionDate; + this.billTo = builder.billTo; + } + + public static class Builder extends InAppTransactionObject.Builder{ + + public Builder(){ + this.transactionType = SDK_TRANSACTION_ANDROID_PAY; + this.merchantReferenceCode = Long.toString(System.currentTimeMillis()); + } + + @Override + public InAppAndroidPayTransactionObject build(){ + return new InAppAndroidPayTransactionObject(this); + } + } +} diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKEncryptTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java similarity index 54% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/SDKEncryptTransactionObject.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java index 91626de..0191ff6 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKEncryptTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java @@ -1,15 +1,15 @@ -package com.visa.inappsdk.datamodel.transaction; +package com.visa.inappsdk.connectors.inapp.transaction.client; -import static com.visa.inappsdk.datamodel.transaction.SDKTransactionType.SDK_TRANSACTION_ENCRYPTION; +import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.SDK_TRANSACTION_ENCRYPTION; /** * Provides data for refund transaction * * @author fzubair */ -final class SDKEncryptTransactionObject extends SDKTransactionObject { +final class InAppEncryptTransactionObject extends InAppTransactionObject { - private SDKEncryptTransactionObject(Builder builder) + private InAppEncryptTransactionObject(Builder builder) { this.transactionType = builder.transactionType; this.merchantReferenceCode = builder.merchantReferenceCode; @@ -19,7 +19,7 @@ private SDKEncryptTransactionObject(Builder builder) this.billTo = builder.billTo; } - public static class Builder extends SDKTransactionObject.Builder{ + public static class Builder extends InAppTransactionObject.Builder{ public Builder(){ this.transactionType = SDK_TRANSACTION_ENCRYPTION; @@ -27,8 +27,8 @@ public Builder(){ } @Override - public SDKEncryptTransactionObject build(){ - return new SDKEncryptTransactionObject(this); + public InAppEncryptTransactionObject build(){ + return new InAppEncryptTransactionObject(this); } } } \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java similarity index 59% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionObject.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java index 1df0eb9..8567f10 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction; +package com.visa.inappsdk.connectors.inapp.transaction.client; import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; @@ -8,19 +8,19 @@ * * @author fzubair */ -public abstract class SDKTransactionObject { +public abstract class InAppTransactionObject { protected String merchantReferenceCode; - protected SDKTransactionType transactionType; + protected InAppTransactionType transactionType; protected String transactionTime; protected String transactionDate; protected SDKCardData cardData; protected SDKBillTo billTo; - SDKTransactionObject(Builder builder) { + InAppTransactionObject(Builder builder) { } - SDKTransactionObject() { + InAppTransactionObject() { } public String getMerchantReferenceCode() { @@ -43,7 +43,7 @@ public SDKBillTo getBillTo() { return billTo; } - public SDKTransactionType getTransactionType() { + public InAppTransactionType getTransactionType() { return transactionType; } @@ -53,50 +53,52 @@ public SDKTransactionType getTransactionType() { * @param type transaction type * @return one of transaction objects */ - public static SDKTransactionObject.Builder createTransactionObject(SDKTransactionType type) { + public static InAppTransactionObject.Builder createTransactionObject(InAppTransactionType type) { switch (type) { case SDK_TRANSACTION_ENCRYPTION: - return new SDKEncryptTransactionObject.Builder(); + return new InAppEncryptTransactionObject.Builder(); + case SDK_TRANSACTION_ANDROID_PAY: + return new InAppAndroidPayTransactionObject.Builder(); default: - return new SDKEncryptTransactionObject.Builder(); + return new InAppEncryptTransactionObject.Builder(); } } public static abstract class Builder { protected String merchantReferenceCode; - protected SDKTransactionType transactionType; + protected InAppTransactionType transactionType; protected String transactionTime; protected String transactionDate; protected SDKCardData cardData; protected SDKBillTo billTo; - public SDKTransactionObject.Builder merchantReferenceCode(String merchantReferenceCode) { + public InAppTransactionObject.Builder merchantReferenceCode(String merchantReferenceCode) { this.merchantReferenceCode = merchantReferenceCode; return this; } - public SDKTransactionObject.Builder cardData(SDKCardData cardData) { + public InAppTransactionObject.Builder cardData(SDKCardData cardData) { this.cardData = cardData; return this; } - public SDKTransactionObject.Builder billTo(SDKBillTo billTo) { + public InAppTransactionObject.Builder billTo(SDKBillTo billTo) { this.billTo = billTo; return this; } - public SDKTransactionObject.Builder transactionDate(String transactionDate) { + public InAppTransactionObject.Builder transactionDate(String transactionDate) { this.transactionDate = transactionDate; return this; } - public SDKTransactionObject.Builder transactionTime(String transactionTime) { + public InAppTransactionObject.Builder transactionTime(String transactionTime) { this.transactionTime = transactionTime; return this; } - public abstract SDKEncryptTransactionObject build(); + public abstract InAppTransactionObject build(); } } diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionType.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java similarity index 50% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionType.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java index 732d9b7..df8224e 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/SDKTransactionType.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction; +package com.visa.inappsdk.connectors.inapp.transaction.client; /** * Enumeration used to indicate the transaction type. Possible states: @@ -8,6 +8,6 @@ * * @author fzubair */ -public enum SDKTransactionType { - SDK_TRANSACTION_ENCRYPTION +public enum InAppTransactionType { + SDK_TRANSACTION_ENCRYPTION, SDK_TRANSACTION_ANDROID_PAY } diff --git a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java b/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java index 7c2de92..b9ca371 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java +++ b/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java @@ -1,6 +1,6 @@ package com.visa.inappsdk.datamodel; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; /** @@ -39,7 +39,7 @@ protected static void setGateway(SDKGateway gatewayInstance) { * during operation * @return true if a transaction is already in progress */ - protected abstract boolean performEncryption(SDKTransactionObject transactionObject, + protected abstract boolean performEncryption(InAppTransactionObject transactionObject, SDKApiConnectionCallback applicationConnectionCallback); /** diff --git a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java index 0e8e53d..9621a6d 100644 --- a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java +++ b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java @@ -4,8 +4,8 @@ import android.test.mock.MockContext; import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionObject; -import com.visa.inappsdk.datamodel.transaction.SDKTransactionType; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; import org.junit.After; @@ -135,8 +135,8 @@ public void testApiClientConnectThrowsNullTransactionObjectException() throws Ex @Test public void testApiClientConnectThrowsNullCardDataException() throws Exception { - SDKTransactionObject transactionObject = SDKTransactionObject. - createTransactionObject(SDKTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object + InAppTransactionObject transactionObject = InAppTransactionObject. + createTransactionObject(InAppTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object .cardData(null) // card data to be encrypted .build(); try @@ -152,8 +152,8 @@ public void testApiClientConnectThrowsNullCardDataException() throws Exception { @Test public void testApiClientConnectThrowsInvalidMessageSignatureException() throws Exception { - SDKTransactionObject transactionObject = SDKTransactionObject. - createTransactionObject(SDKTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object + InAppTransactionObject transactionObject = InAppTransactionObject. + createTransactionObject(InAppTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object .cardData(prepareTestCardData()) // card data to be encrypted .build(); try From 5d4f6ebb753a4a3500cabf66ae2dceb228dcd234 Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Wed, 18 Nov 2015 17:51:35 -0800 Subject: [PATCH 2/9] added envelope and transaction objects --- .../inapp/datamodel/InAppBillTo.java | 46 +++++++- .../datamodel/InAppEncryptedPayment.java | 44 +++++++ .../connectors/inapp/datamodel/InAppItem.java | 81 +++++++++++++ .../envelopes/InAppAndroidPayEnvelope.java | 110 ++++++++++++++++++ .../inapp/envelopes/InAppEncryptEnvelope.java | 4 +- .../inapp/services/InAppAuthService.java | 57 +++++++++ ...ppEnvelopeAndroidPayTransactionObject.java | 82 +++++++++++++ ...ppEnvelopeEncryptionTransactionObject.java | 7 +- .../InAppEnvelopeTransactionObject.java | 9 +- .../response/SDKGatewayResponseType.java | 2 +- .../transaction/fields/SDKBillTo.java | 100 +++++++++++++--- 11 files changed, 518 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java index 754b048..2a13d28 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java @@ -11,21 +11,47 @@ public class InAppBillTo implements InAppBaseModel { public final String FIRST_NAME = "firstName"; public final String LAST_NAME = "lastName"; + public final String EMAIL = "email"; public final String POSTAL_CODE = "postalCode"; + public final String STREET1 = "street1"; + public final String STREET2 = "street2"; + public final String CITY = "city"; + public final String STATE = "state"; + public final String COUNTRY = "country"; public String firstName; public String lastName; + public String email; public String postalCode; + public String street1; + public String street2; + public String city; + public String state; + public String country; /** * @param firstName * @param lastName + * @param email * @param postalCode + * @param street1 + * @param street2 + * @param city + * @param state + * @param country */ - public InAppBillTo(String firstName, String lastName, String postalCode) { + public InAppBillTo(String firstName, String lastName, String email, + String postalCode, String street1, String street2, + String city, String state, String country) { this.firstName = firstName; this.lastName = lastName; this.postalCode = postalCode; + this.email = email; + this.street1 = street1; + this.street2 = street2; + this.city = city; + this.state = state; + this.country = country; } @Override @@ -37,8 +63,26 @@ public void updateEnvelope(SDKXMLParentNode request) { if (this.lastName != null) { billTo.addTextNode(billTo.getNamespace(), LAST_NAME, this.lastName); } + if (this.email != null) { + billTo.addTextNode(billTo.getNamespace(), EMAIL, this.email); + } if (this.postalCode != null) { billTo.addTextNode(billTo.getNamespace(), POSTAL_CODE, this.postalCode); } + if (this.street1 != null) { + billTo.addTextNode(billTo.getNamespace(), STREET1, this.street1); + } + if (this.street2 != null) { + billTo.addTextNode(billTo.getNamespace(), STREET2, this.street2); + } + if (this.city != null) { + billTo.addTextNode(billTo.getNamespace(), CITY, this.city); + } + if (this.state != null) { + billTo.addTextNode(billTo.getNamespace(), STATE, this.state); + } + if (this.country != null) { + billTo.addTextNode(billTo.getNamespace(), COUNTRY, this.country); + } } } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java new file mode 100644 index 0000000..03ef730 --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java @@ -0,0 +1,44 @@ +package com.visa.inappsdk.connectors.inapp.datamodel; + +import com.visa.inappsdk.soap.model.SDKXMLParentNode; + +/** + * Created by fzubair on 11/18/2015. + */ +public class InAppEncryptedPayment implements InAppBaseModel { + + public final String OBJECT_NAME = "encryptedPayment"; + public final String DESCRIPTOR = "descriptor"; + public final String DATA = "data"; + + public String descriptor; + public String data; + + /** + * All fields in constructor are required + * + * @param descriptor the FID + * @param data encrypted payment data as a blob + */ + public InAppEncryptedPayment(String descriptor, String data) { + this.descriptor = descriptor; + this.data = data; + } + + @Override + public void updateEnvelope(SDKXMLParentNode request) { + if (validateObject()) { + SDKXMLParentNode purchase = request.addNode(request.getNamespace(), OBJECT_NAME); + if (this.descriptor != null) { + purchase.addTextNode(purchase.getNamespace(), DESCRIPTOR, this.descriptor); + } + if (this.data != null) { + purchase.addTextNode(null, DATA, this.data); + } + } + } + + private boolean validateObject() { + return !(this.descriptor == null && this.data == null); + } +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java new file mode 100644 index 0000000..98f1a3e --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java @@ -0,0 +1,81 @@ +package com.visa.inappsdk.connectors.inapp.datamodel; + +import com.visa.inappsdk.soap.model.SDKXMLParentNode; + +/** + * Describes fields in "item" object in WebService request + * + * @author fzubair + */ +public class InAppItem implements InAppBaseModel { + + public final String OBJECT_NAME = "item"; + public final String ID = "id"; + public final String UNIT_PRICE = "unitPrice"; + public final String QUANTITY = "quantity"; + public final String PRODUCT_CODE = "productCode"; + public final String PRODUCT_NAME = "productName"; + public final String PRODUCT_SKU = "productSKU"; + public final String TAX_AMOUNT = "taxAmount"; + + public String unitPrice; + public String quantity; + public String id; + public String productCode; + public String productName; + public String productSKU; + public String taxAmount; + + /** + * @param id + * @param unitPrice + * @param quantity + * @param productCode + * @param productName + * @param productSKU + * @param taxAmount + */ + public InAppItem(String id, String unitPrice, String quantity, String productCode, String productName, + String productSKU, String taxAmount) { + this.id = id; + this.unitPrice = unitPrice; + this.quantity = quantity; + this.productCode = productCode; + this.productName = productName; + this.productSKU = productSKU; + this.taxAmount = taxAmount; + } + + @Override + public void updateEnvelope(SDKXMLParentNode request) { + if (validateObject()) { + SDKXMLParentNode item = request.addNode(request.getNamespace(), OBJECT_NAME); + if (this.id != null) { + item.addAttribute(null, ID, this.id); + } + if (this.unitPrice != null) { + item.addTextNode(item.getNamespace(), UNIT_PRICE, this.unitPrice); + } + if (this.quantity != null) { + item.addTextNode(item.getNamespace(), QUANTITY, this.quantity); + } + if (this.productCode != null) { + item.addTextNode(item.getNamespace(), PRODUCT_CODE, this.productCode); + } + if (this.productName != null) { + item.addTextNode(item.getNamespace(), PRODUCT_NAME, this.productName); + } + if (this.productSKU != null) { + item.addTextNode(item.getNamespace(), PRODUCT_SKU, this.productSKU); + } + if (this.taxAmount != null) { + item.addTextNode(item.getNamespace(), TAX_AMOUNT, this.taxAmount); + } + } + } + + private boolean validateObject() { + return !(this.id == null && this.unitPrice == null && this.quantity == null && this.productCode == null + && this.productName == null && this.productSKU == null && this.taxAmount == null); + } +} \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java new file mode 100644 index 0000000..1fa08ed --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java @@ -0,0 +1,110 @@ +package com.visa.inappsdk.connectors.inapp.envelopes; + +import com.visa.inappsdk.common.error.SDKError; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; +import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; +import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; +import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; +import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; +import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.visa.inappsdk.soap.model.SDKXMLParentNode; + +import java.io.InputStream; + +/** + * Created by fzubair on 11/18/2015. + */ +public class InAppAndroidPayEnvelope extends InAppBaseEnvelope{ + + InAppAndroidPayEnvelope() { + } + + public InAppAndroidPayEnvelope(InAppTransactionObject transactionObject, String merchantId, String messageSignature) { + createEnvelopeHeader(merchantId, messageSignature); + InAppEnvelopeEncryptionTransactionObject encryptionTransactionObject = convertTransactionObject(transactionObject, merchantId); + createEnvelopeBody(encryptionTransactionObject); + } + + private void createEnvelopeBody(InAppEnvelopeEncryptionTransactionObject paymentObject) { + SDKXMLParentNode request = this.createRequestMessage(); + paymentObject.updateEnvelope(request); + } + + private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppTransactionObject transactionObject, + String merchantId) { + + String merchantReferenceCode = transactionObject.getMerchantReferenceCode(); + + SDKCardData cardData = transactionObject.getCardData(); + InAppCard card = null; + if (cardData != null) { + card = new InAppCard(cardData.getAccountNumber(), cardData.getCardExpirationMonth(), + cardData.getCardExpirationYear(), cardData.getCvNumber(), + cardData.getCardAccountNumberType()); + } + + SDKBillTo billTo = transactionObject.getBillTo(); + InAppBillTo bill = null; + if (billTo != null) { + bill = new InAppBillTo(billTo.getFirstName(), billTo.getLastName(), + billTo.getEmail(), billTo.getPostalCode(), billTo.getStreet1(), + billTo.getStreet2(), billTo.getCity(), billTo.getState(), + billTo.getCountry()); + } + + InAppEncryptPaymentDataService inAppEncryptPaymentDataService = new InAppEncryptPaymentDataService(true, null); + /*transactionObject.getPurchaseDetails().getCommerceIndicator());*/ + + // Faizan -- added the encrypted payment part + //VMposEncryptedPayment encryptedPayment = transactionObject.getEncryptedPayment(); + +/* VMposEncryptedPayment encryptedPayment = new VMposEncryptedPayment(); + encryptedPayment.setEncodedData(getIDTechTestBlob()); + encryptedPayment.setEncodedMetaData(VMposMessageSignature.MetadataEncodedValue); + encryptedPayment.setPaymentSolution(VMposMessageSignature.PAYMENT_SOLUTION_DEFAULT_VALUE);*/ + + InAppEnvelopeEncryptionTransactionObject inAppEncryptionTransactionObject = new InAppEnvelopeEncryptionTransactionObject( + merchantId, merchantReferenceCode, card, bill, inAppEncryptPaymentDataService, CLIENT_LIBRARY/*, encryptedPayment*/); + return inAppEncryptionTransactionObject; + } + + @Override + protected void createEnvelopeHeader(String merchantID, String messageSignature) { + super.createEnvelopeHeader(merchantID, messageSignature); + } + + @Override + public SDKError parseGatewayError(InputStream inputStream) { + return super.parseGatewayError(inputStream); + } + + @Override + public InAppResponseObject parseResponse(InputStream inputStream) { + return InAppResponseObject.createEncryptionResponse(inputStream, getResponseType()); + } + + @Override + public SDKGatewayResponseType getResponseType() { + return SDKGatewayResponseType.SDK_ANDROID_PAY; + } + +/* protected InAppEncryptEnvelope(Parcel in) { + super(in); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + + @Override + public InAppEncryptEnvelope createFromParcel(Parcel in) { + return new InAppEncryptEnvelope(in); + } + + @Override + public InAppEncryptEnvelope[] newArray(int size) { + return new InAppEncryptEnvelope[size]; + } + };*/ +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java index f2f1aee..676f8db 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java @@ -50,7 +50,9 @@ private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppT InAppBillTo bill = null; if (billTo != null) { bill = new InAppBillTo(billTo.getFirstName(), billTo.getLastName(), - billTo.getPostalCode()); + billTo.getEmail(), billTo.getPostalCode(), billTo.getStreet1(), + billTo.getStreet2(), billTo.getCity(), billTo.getState(), + billTo.getCountry()); } InAppEncryptPaymentDataService inAppEncryptPaymentDataService = new InAppEncryptPaymentDataService(true, null); diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java new file mode 100644 index 0000000..fcb894e --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java @@ -0,0 +1,57 @@ +package com.visa.inappsdk.connectors.inapp.services; + +import com.visa.inappsdk.soap.model.SDKXMLParentNode; + +/** + * Describes fields of "ccAuthService" object in WebService request + * + * Created by fzubair on 11/18/2015. + */ +public class InAppAuthService extends InAppBaseService { + + public final String OBJECT_NAME = "ccAuthService"; + public final String RUN = "run"; + public final String COMMERCE_INDICATOR = "commerceIndicator"; + public final String BILL_PAYMENT = "billPayment"; + public final String PARTIAL_AUTH_INDICATOR = "partialAuthIndicator"; + + public String run; + String commerceIndicator; + public String partialAuthIndicator; + + /** + * All fields in constructor are required + * + * @param run + */ + public InAppAuthService(boolean run, String commerceIndicator, + boolean partialAuthIndicator) { + this.run = String.valueOf(run); + this.commerceIndicator = commerceIndicator; + this.partialAuthIndicator = String.valueOf(partialAuthIndicator); + } + + @Override + public void updateEnvelope(SDKXMLParentNode request) { + if (validateObject()) { + SDKXMLParentNode creditService = request.addNode(request.getNamespace(), OBJECT_NAME); + if (this.run != null) { + creditService.addAttribute(null, RUN, this.run); + } + if (this.commerceIndicator != null) { + creditService.addTextNode(creditService.getNamespace(), COMMERCE_INDICATOR, commerceIndicator); + } + if (this.partialAuthIndicator != null) { + creditService.addTextNode(creditService.getNamespace(), PARTIAL_AUTH_INDICATOR, partialAuthIndicator); + } + } + } + + private boolean validateObject() { + if (this.run == null) { + return false; + } else { + return true; + } + } +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java new file mode 100644 index 0000000..db9da75 --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java @@ -0,0 +1,82 @@ +package com.visa.inappsdk.connectors.inapp.transaction; + +import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppItem; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; +import com.visa.inappsdk.connectors.inapp.services.InAppAuthService; +import com.visa.inappsdk.soap.model.SDKXMLParentNode; + +import java.util.List; + +/** + * Contains payment data that will be send to WebService in request body; + * + * @author fzubair + */ +public class InAppEnvelopeAndroidPayTransactionObject extends InAppEnvelopeTransactionObject { + + public List items; + public InAppPurchaseTotals purchaseTotals; + public InAppBillTo billTo; + public InAppAuthService ccAuthService; + private String paymentSolution; + + public final String PAYMENT_SOLUTION = "paymentSolution"; + + public InAppEncryptedPayment encryptedPayment; + + /** + * All fields in constructor are required + * + * @param merchantId + * @param merchantReferenceCode + * @param inAppBillTo + * @param inAppItems + * @param inAppPurchaseTotals + * @param inAppAuthService + * @param paymentSolution + * @param clientLibrary + * @param encryptedPayment + */ + public InAppEnvelopeAndroidPayTransactionObject(String merchantId, String merchantReferenceCode, + InAppBillTo inAppBillTo, List inAppItems, + InAppPurchaseTotals inAppPurchaseTotals, + InAppAuthService inAppAuthService, String paymentSolution, + String clientLibrary, InAppEncryptedPayment encryptedPayment) { + this.merchantID = merchantId; + this.merchantReferenceCode = merchantReferenceCode; + this.items = inAppItems; + this.purchaseTotals = inAppPurchaseTotals; + this.billTo = inAppBillTo; + this.clientLibrary = clientLibrary; + this.ccAuthService = inAppAuthService; + this.paymentSolution = paymentSolution; + this.encryptedPayment = encryptedPayment; + } + + @Override + public void updateEnvelope(SDKXMLParentNode request) { + createMerchantData(request); + if (this.billTo != null) { + this.billTo.updateEnvelope(request); + } + if (this.items != null) { + for (InAppItem item : this.items) { + item.updateEnvelope(request); + } + } + if (this.purchaseTotals != null) { + this.purchaseTotals.updateEnvelope(request); + } + if (this.encryptedPayment != null) { + this.encryptedPayment.updateEnvelope(request); + } + if (this.ccAuthService != null) { + this.ccAuthService.updateEnvelope(request); + } + if (this.paymentSolution != null) { + request.addTextNode(request.getNamespace(), PAYMENT_SOLUTION, this.paymentSolution); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java index 1163690..2010afa 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java @@ -14,11 +14,9 @@ public class InAppEnvelopeEncryptionTransactionObject extends InAppEnvelopeTrans public InAppCard card; public InAppBillTo billTo; - public String clientLibrary; public InAppEncryptPaymentDataService encryptPaymentDataService; - private final String CLIENT_LIBRARY = "clientLibrary"; public final String PAYMENT_SOLUTION = "paymentSolution"; //public VMposEncryptedPayment encryptedPayment; @@ -32,7 +30,7 @@ public class InAppEnvelopeEncryptionTransactionObject extends InAppEnvelopeTrans * @param inAppWebServiceCard * @param inAppBillTo * @param encryptPaymentDataService - * @param //shipTo + * @param clientLibrary */ public InAppEnvelopeEncryptionTransactionObject(String merchantId, String merchantReferenceCode, InAppCard inAppWebServiceCard, InAppBillTo inAppBillTo, @@ -49,9 +47,6 @@ public InAppEnvelopeEncryptionTransactionObject(String merchantId, String mercha @Override public void updateEnvelope(SDKXMLParentNode request) { createMerchantData(request); - if(this.clientLibrary != null){ - request.addTextNode(request.getNamespace(), CLIENT_LIBRARY, this.clientLibrary); - } if (this.billTo != null) { this.billTo.updateEnvelope(request); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java index 7ea293e..371a850 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java @@ -13,9 +13,11 @@ public abstract class InAppEnvelopeTransactionObject { public final String MERCHANT_ID = "merchantID"; public final String MERCHANT_REFERENCE_CODE = "merchantReferenceCode"; + private final String CLIENT_LIBRARY = "clientLibrary"; - public String merchantID; - public String merchantReferenceCode; + protected String merchantID; + protected String merchantReferenceCode; + protected String clientLibrary; /** * Updates request with fields needed in WebService request. @@ -39,5 +41,8 @@ protected void createMerchantData(SDKXMLParentNode request) { if (this.merchantReferenceCode != null) { request.addTextNode(request.getNamespace(), MERCHANT_REFERENCE_CODE, this.merchantReferenceCode); } + if(this.clientLibrary != null){ + request.addTextNode(request.getNamespace(), CLIENT_LIBRARY, this.clientLibrary); + } } } \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java b/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java index 6bc7725..3c18b6f 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java +++ b/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java @@ -7,7 +7,7 @@ */ public enum SDKGatewayResponseType { - SDK_ENCRYPTION; + SDK_ENCRYPTION, SDK_ANDROID_PAY; } \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java index 2eb0203..eb34ae8 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java +++ b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java @@ -6,12 +6,19 @@ * Created by fzubair on 11/16/2015. */ public final class SDKBillTo { + // required - private String firstName; - private String lastName; - private String postalCode; + private final String firstName; + private final String lastName; // optional + private final String email; + private final String postalCode; + private final String street1; + private final String street2; + private final String city; + private final String state; + private final String country; /** * Creates an instance of object to store keyed card data. Also it sets a @@ -19,7 +26,13 @@ public final class SDKBillTo { private SDKBillTo(Builder builder){ this.firstName = builder.firstName; this.lastName = builder.lastName; + this.email = builder.email; this.postalCode = builder.postalCode; + this.street1 = builder.street1; + this.street2 = builder.street2; + this.city = builder.city; + this.state = builder.state; + this.country = builder.country; } public String getFirstName() { @@ -34,6 +47,30 @@ public String getPostalCode() { return postalCode; } + public String getStreet2() { + return street2; + } + + public String getCity() { + return city; + } + + public String getCountry() { + return country; + } + + public String getEmail() { + return email; + } + + public String getState() { + return state; + } + + public String getStreet1() { + return street1; + } + /* * (non-Javadoc) * @see java.lang.Object#hashCode() @@ -44,6 +81,7 @@ public int hashCode() { int result = super.hashCode(); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); result = prime * result + ((lastName == null) ? 0 : lastName.hashCode()); + result = prime * result + ((email == null) ? 0 : email.hashCode()); result = prime * result + ((postalCode == null) ? 0 : postalCode.hashCode()); return result; } @@ -78,6 +116,13 @@ public boolean equals(Object obj) { } else if (!lastName.equals(other.lastName)) { return false; } + if (email == null) { + if (other.email != null) { + return false; + } + } else if (!email.equals(other.email)) { + return false; + } if (postalCode == null) { if (other.postalCode != null) { return false; @@ -90,27 +135,56 @@ public boolean equals(Object obj) { public static class Builder { // required - private String firstName; - private String lastName; - private String postalCode; + private final String firstName; + private final String lastName; // optional + private String email; + private String postalCode; + private String street1; + private String street2; + private String city; + private String state; + private String country; + + // TODO: change documentation on github + public Builder(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } - public Builder() { + public SDKBillTo.Builder email(String email) { + this.email = email; + return this; } - public SDKBillTo.Builder firstName(String firstName) { - this.firstName = firstName; + public SDKBillTo.Builder postalCode(String postalCode) { + this.postalCode = postalCode; return this; } - public SDKBillTo.Builder lastName(String lastName) { - this.lastName = lastName; + public SDKBillTo.Builder street1(String street1) { + this.street1 = street1; return this; } - public SDKBillTo.Builder postalCode(String postalCode) { - this.postalCode = postalCode; + public SDKBillTo.Builder street2(String street2) { + this.street2 = street2; + return this; + } + + public SDKBillTo.Builder city(String city) { + this.city = city; + return this; + } + + public SDKBillTo.Builder state(String state) { + this.state = state; + return this; + } + + public SDKBillTo.Builder country(String country) { + this.country = country; return this; } From 3531d4f3d6ffb4c9d992ead210f26e8714d458d9 Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Thu, 19 Nov 2015 18:10:19 -0800 Subject: [PATCH 3/9] added network layer for Android Pay --- build.gradle | 6 +- .../inappsdk/common/utils/SDKMathUtils.java | 84 +++++++++++++ .../connectors/inapp/InAppGateway.java | 22 +++- .../connectors/inapp/InAppSDKApiClient.java | 15 ++- .../envelopes/InAppAndroidPayEnvelope.java | 82 ++++++++----- .../inapp/envelopes/InAppBaseEnvelope.java | 5 +- .../inapp/envelopes/InAppEncryptEnvelope.java | 6 +- .../inapp/services/InAppAuthService.java | 10 +- .../InAppEncryptPaymentDataService.java | 2 - ...ppEnvelopeEncryptionTransactionObject.java | 4 +- .../InAppAndroidPayTransactionObject.java | 10 +- .../client/InAppEncryptTransactionObject.java | 12 +- ...ctionObject.java => InAppTransaction.java} | 51 +++++--- .../client/InAppTransactionType.java | 7 +- .../visa/inappsdk/datamodel/SDKGateway.java | 17 ++- .../transaction/fields/SDKLineItem.java | 68 +++++++++++ .../transaction/fields/SDKPurchaseOrder.java | 114 ++++++++++++++++++ .../inapp/InAppSDKApiClientTest.java | 12 +- 18 files changed, 434 insertions(+), 93 deletions(-) create mode 100644 src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java rename src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/{InAppTransactionObject.java => InAppTransaction.java} (56%) create mode 100644 src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java create mode 100644 src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java diff --git a/build.gradle b/build.gradle index 1adf983..2f6f84a 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ ext { siteUrl = 'https://github.com/AuthorizeNet/cybersource-android-sdk' gitUrl = 'https://github.com/AuthorizeNet/cybersource-android-sdk.git' - libraryVersion = '1.0.0' + libraryVersion = '2.0.0' developerId = 'fezzubair' developerName = 'Faizan Zubair' @@ -33,8 +33,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 23 - versionCode 1 - versionName "1.0" + versionCode 2 + versionName "2.0" } buildTypes { release { diff --git a/src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java b/src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java new file mode 100644 index 0000000..7b097fb --- /dev/null +++ b/src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java @@ -0,0 +1,84 @@ +package com.visa.inappsdk.common.utils; + +import java.math.BigDecimal; + +import static java.math.BigDecimal.ZERO; + +/* + * @author fzubair + */ + +public class SDKMathUtils { + + /** used to calculate the percentage **/ + private static BigDecimal HUNDRED = new BigDecimal("100"); + + /** number of decimals returned **/ + private static int DECIMALS = 2; + + /** + * given an amount and a percentage, the method calculates the percentage + * using BigDecimal numbers + * + * @param amount + * @param percentage + * @return the percentage of the amount input + */ + public static BigDecimal calculatePercentage(BigDecimal amount, BigDecimal percentage) { + if (isZero(percentage) || (amount == null)) { + return ZERO; + } + + BigDecimal fractionalChange = amount.multiply(percentage).divide(HUNDRED); + + return fractionalChange.setScale(DECIMALS, BigDecimal.ROUND_HALF_UP); + } + + /** + * r checks if "number" equals zero + * + * @param number + * @return true if number equals zero, false otherwise + */ + public static boolean isZero(BigDecimal number) { + if (number == null) { + number = BigDecimal.ZERO; + } + return number.compareTo(BigDecimal.ZERO) == 0; + } + + /** + * adds two BigDecimals and returns the total + * + * @param number1 + * @param number2 + * @return total + */ + public static BigDecimal add(BigDecimal number1, BigDecimal number2) { + if (number1 == null) { + number1 = BigDecimal.ZERO; + } + if (number2 == null) { + number2 = BigDecimal.ZERO; + } + return number1.add(number2).setScale(DECIMALS, BigDecimal.ROUND_HALF_UP); + } + + /** + * substracts trwo BigDecimal numbers + * + * @param number1 + * @param number2 + * @return result of the subtraction + */ + public static BigDecimal substract(BigDecimal number1, BigDecimal number2) { + if (number1 == null) { + number1 = BigDecimal.ZERO; + } + if (number2 == null) { + number2 = BigDecimal.ZERO; + } + return number1.subtract(number2).setScale(DECIMALS, BigDecimal.ROUND_HALF_UP); + } + +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java index bb82173..43716d8 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java @@ -8,7 +8,7 @@ import com.visa.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; import com.visa.inappsdk.datamodel.SDKGateway; import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; /** @@ -30,7 +30,25 @@ public static InAppGateway getGateway() { } @Override - protected boolean performEncryption(InAppTransactionObject transactionObject, SDKApiConnectionCallback applicationConnectionCallback) { + protected boolean performEncryption(InAppTransaction transactionObject, SDKApiConnectionCallback applicationConnectionCallback) { + if(transactionInProgress) + return transactionInProgress; + if (transactionObject == null) + return false; + + registerResultReceiver(); + transactionInProgress = true; + this.connectionCallback = applicationConnectionCallback; + InAppEncryptEnvelope envelope = new InAppEncryptEnvelope(transactionObject, merchantId, + messageSignature); + if (envelope == null) + return false; + InAppConnectionService.startActionConnect(InAppSDKApiClient.getContext().get(), envelope, resultReceiver); + return transactionInProgress; + } + + @Override + protected boolean performAndroidPayTransaction(InAppTransaction transactionObject, SDKApiConnectionCallback applicationConnectionCallback) { if(transactionInProgress) return transactionInProgress; if (transactionObject == null) diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java index 03dc464..bdd7d4a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java @@ -4,7 +4,7 @@ import com.visa.inappsdk.common.SDKCore; import com.visa.inappsdk.connectors.inapp.connection.InAppConnectionData; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; import java.lang.ref.WeakReference; @@ -23,7 +23,7 @@ public enum Environment {ENV_TEST, ENV_PROD}; private final SDKApiConnectionCallback connectionCallback; // endpoint API to be used once the 'performApi' method is invoked - public enum Api {API_ENCRYPTION} + public enum Api {API_ENCRYPTION, API_ANDROID_PAY} private InAppSDKApiClient(Builder builder) { this.context = builder.context; @@ -75,20 +75,25 @@ public static void dispose() { InAppGateway.dispose(); } - public boolean performApi(Api api, InAppTransactionObject transactionObject, String messageSignature){ + public boolean performApi(Api api, InAppTransaction transactionObject, String messageSignature){ if(api == null) throw new NullPointerException("API must not be null"); if(transactionObject == null) throw new NullPointerException("Transaction Object must not be null"); - if(transactionObject.getCardData() == null) - throw new NullPointerException("Missing fields: Card Data must not be null"); if(messageSignature == null || messageSignature.isEmpty()) throw new NullPointerException("Invalid Message Signature"); InAppGateway.getGateway().setMessageSignature(messageSignature); switch (api){ case API_ENCRYPTION: + if(transactionObject.getCardData() == null) + throw new NullPointerException("Missing fields: Card Data must not be null"); return InAppGateway.getGateway().performEncryption(transactionObject, this.connectionCallback); + case API_ANDROID_PAY: + if(transactionObject.getPurchaseOrder() == null) + throw new NullPointerException("Missing fields: Purchase Order must not be null"); + return InAppGateway.getGateway().performAndroidPayTransaction(transactionObject, + this.connectionCallback); default: return false; } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java index 1fa08ed..787b847 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java @@ -2,17 +2,25 @@ import com.visa.inappsdk.common.error.SDKError; import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppItem; +import com.visa.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; -import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; +import com.visa.inappsdk.connectors.inapp.services.InAppAuthService; +import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeAndroidPayTransactionObject; import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; -import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.visa.inappsdk.datamodel.transaction.fields.SDKLineItem; +import com.visa.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; import com.visa.inappsdk.soap.model.SDKXMLParentNode; import java.io.InputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; /** * Created by fzubair on 11/18/2015. @@ -22,30 +30,22 @@ public class InAppAndroidPayEnvelope extends InAppBaseEnvelope{ InAppAndroidPayEnvelope() { } - public InAppAndroidPayEnvelope(InAppTransactionObject transactionObject, String merchantId, String messageSignature) { + public InAppAndroidPayEnvelope(InAppTransaction transactionObject, String merchantId, String messageSignature) { createEnvelopeHeader(merchantId, messageSignature); - InAppEnvelopeEncryptionTransactionObject encryptionTransactionObject = convertTransactionObject(transactionObject, merchantId); - createEnvelopeBody(encryptionTransactionObject); + InAppEnvelopeAndroidPayTransactionObject androidPayTransactionObject = convertTransactionObject(transactionObject, merchantId); + createEnvelopeBody(androidPayTransactionObject); } - private void createEnvelopeBody(InAppEnvelopeEncryptionTransactionObject paymentObject) { + private void createEnvelopeBody(InAppEnvelopeAndroidPayTransactionObject paymentObject) { SDKXMLParentNode request = this.createRequestMessage(); paymentObject.updateEnvelope(request); } - private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppTransactionObject transactionObject, + private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppTransaction transactionObject, String merchantId) { String merchantReferenceCode = transactionObject.getMerchantReferenceCode(); - SDKCardData cardData = transactionObject.getCardData(); - InAppCard card = null; - if (cardData != null) { - card = new InAppCard(cardData.getAccountNumber(), cardData.getCardExpirationMonth(), - cardData.getCardExpirationYear(), cardData.getCvNumber(), - cardData.getCardAccountNumberType()); - } - SDKBillTo billTo = transactionObject.getBillTo(); InAppBillTo bill = null; if (billTo != null) { @@ -55,20 +55,39 @@ private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppT billTo.getCountry()); } - InAppEncryptPaymentDataService inAppEncryptPaymentDataService = new InAppEncryptPaymentDataService(true, null); - /*transactionObject.getPurchaseDetails().getCommerceIndicator());*/ - - // Faizan -- added the encrypted payment part - //VMposEncryptedPayment encryptedPayment = transactionObject.getEncryptedPayment(); + InAppAuthService inAppAuthService = new InAppAuthService(true, false); + + SDKPurchaseOrder purchaseOrder = transactionObject.getPurchaseOrder(); + List items = null; + InAppPurchaseTotals purchaseTotals = null; + if(purchaseOrder != null) { + purchaseTotals = new InAppPurchaseTotals( + purchaseOrder.getCurrency().name(), getGatewayAmountString(purchaseOrder.getGrandTotalAmount())); + List lineItems = purchaseOrder.getLineItems(); + if (lineItems != null) { + items = new ArrayList<>(); + int id = 0; + for (SDKLineItem item : lineItems) { + String itemId = String.valueOf(id); + + InAppItem newItem = new InAppItem(itemId, String.valueOf(item.getUnitPrice()), + String.valueOf(item.getQuantity()), null, item.getProductName(), null, + String.valueOf(item.getTaxAmount())); + items.add(newItem); + id++; + } + } + } -/* VMposEncryptedPayment encryptedPayment = new VMposEncryptedPayment(); - encryptedPayment.setEncodedData(getIDTechTestBlob()); - encryptedPayment.setEncodedMetaData(VMposMessageSignature.MetadataEncodedValue); - encryptedPayment.setPaymentSolution(VMposMessageSignature.PAYMENT_SOLUTION_DEFAULT_VALUE);*/ + String encryptedPaymentData = transactionObject.getEncryptedPaymentData(); + InAppEncryptedPayment inAppEncryptedPayment = new InAppEncryptedPayment + (DESCRIPTOR_FID, encryptedPaymentData); - InAppEnvelopeEncryptionTransactionObject inAppEncryptionTransactionObject = new InAppEnvelopeEncryptionTransactionObject( - merchantId, merchantReferenceCode, card, bill, inAppEncryptPaymentDataService, CLIENT_LIBRARY/*, encryptedPayment*/); - return inAppEncryptionTransactionObject; + InAppEnvelopeAndroidPayTransactionObject inAppEnvelopeAndroidPayTransactionObject = + new InAppEnvelopeAndroidPayTransactionObject(merchantId, merchantReferenceCode, + bill, items, purchaseTotals, inAppAuthService, PAYMENT_SOLUTION, CLIENT_LIBRARY, + inAppEncryptedPayment); + return inAppEnvelopeAndroidPayTransactionObject; } @Override @@ -91,6 +110,11 @@ public SDKGatewayResponseType getResponseType() { return SDKGatewayResponseType.SDK_ANDROID_PAY; } + public String getGatewayAmountString(BigDecimal value){ + BigDecimal amount = value.setScale(2, RoundingMode.CEILING); + return amount.toPlainString(); + } + /* protected InAppEncryptEnvelope(Parcel in) { super(in); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java index d10f822..808a995 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java @@ -43,7 +43,10 @@ public abstract class InAppBaseEnvelope extends SDKBaseSoapEnvelope { protected static final String HEADER_PASSWORD_TYPE_VALUE_DIGEST = "PasswordDigest"; // -- Faizan -- added this field to provide uniqueness for the sdk identity // TODO: always update this version of client library with every new version release of the SDK - protected static final String CLIENT_LIBRARY = "InAppSDK Android v1.0.0"; + protected static final String CLIENT_LIBRARY = "InAppSDK Android v2.0.0"; + protected static final String PAYMENT_SOLUTION = "006"; // 006 for Android Pay + + public final static String DESCRIPTOR_FID = "RklEPUNPTU1PTi5BTkRST0lELklOQVBQLlBBWU1FTlQ="; protected String merchantId; protected String messageSignature; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java index 676f8db..e2eb2e9 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java @@ -7,7 +7,7 @@ import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; import com.visa.inappsdk.soap.model.SDKXMLParentNode; @@ -22,7 +22,7 @@ public class InAppEncryptEnvelope extends InAppBaseEnvelope { InAppEncryptEnvelope() { } - public InAppEncryptEnvelope(InAppTransactionObject transactionObject, String merchantId, String messageSignature) { + public InAppEncryptEnvelope(InAppTransaction transactionObject, String merchantId, String messageSignature) { createEnvelopeHeader(merchantId, messageSignature); InAppEnvelopeEncryptionTransactionObject encryptionTransactionObject = convertTransactionObject(transactionObject, merchantId); createEnvelopeBody(encryptionTransactionObject); @@ -33,7 +33,7 @@ private void createEnvelopeBody(InAppEnvelopeEncryptionTransactionObject payment paymentObject.updateEnvelope(request); } - private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppTransactionObject transactionObject, + private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppTransaction transactionObject, String merchantId) { String merchantReferenceCode = transactionObject.getMerchantReferenceCode(); diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java index fcb894e..8af691f 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java @@ -11,12 +11,9 @@ public class InAppAuthService extends InAppBaseService { public final String OBJECT_NAME = "ccAuthService"; public final String RUN = "run"; - public final String COMMERCE_INDICATOR = "commerceIndicator"; - public final String BILL_PAYMENT = "billPayment"; public final String PARTIAL_AUTH_INDICATOR = "partialAuthIndicator"; public String run; - String commerceIndicator; public String partialAuthIndicator; /** @@ -24,10 +21,8 @@ public class InAppAuthService extends InAppBaseService { * * @param run */ - public InAppAuthService(boolean run, String commerceIndicator, - boolean partialAuthIndicator) { + public InAppAuthService(boolean run, boolean partialAuthIndicator) { this.run = String.valueOf(run); - this.commerceIndicator = commerceIndicator; this.partialAuthIndicator = String.valueOf(partialAuthIndicator); } @@ -38,9 +33,6 @@ public void updateEnvelope(SDKXMLParentNode request) { if (this.run != null) { creditService.addAttribute(null, RUN, this.run); } - if (this.commerceIndicator != null) { - creditService.addTextNode(creditService.getNamespace(), COMMERCE_INDICATOR, commerceIndicator); - } if (this.partialAuthIndicator != null) { creditService.addTextNode(creditService.getNamespace(), PARTIAL_AUTH_INDICATOR, partialAuthIndicator); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java index bbd4321..ac4220e 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java @@ -13,7 +13,6 @@ public class InAppEncryptPaymentDataService extends InAppBaseService { public final String RUN = "run"; public String run; - String commerceIndicator; /** * All fields in constructor are required @@ -22,7 +21,6 @@ public class InAppEncryptPaymentDataService extends InAppBaseService { */ public InAppEncryptPaymentDataService(boolean run, String commerceIndicator) { this.run = String.valueOf(run); - this.commerceIndicator = commerceIndicator; } @Override diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java index 2010afa..7490ae7 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java @@ -12,8 +12,8 @@ */ public class InAppEnvelopeEncryptionTransactionObject extends InAppEnvelopeTransactionObject { - public InAppCard card; - public InAppBillTo billTo; + private InAppCard card; + private InAppBillTo billTo; public InAppEncryptPaymentDataService encryptPaymentDataService; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java index 1640676..b73036c 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java @@ -1,11 +1,13 @@ package com.visa.inappsdk.connectors.inapp.transaction.client; -import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.SDK_TRANSACTION_ANDROID_PAY; +import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.IN_APP_TRANSACTION_ANDROID_PAY; /** + * Provides data for Android Pay transaction + * * Created by fzubair on 11/18/2015. */ -final class InAppAndroidPayTransactionObject extends InAppTransactionObject { +final class InAppAndroidPayTransactionObject extends InAppTransaction { private InAppAndroidPayTransactionObject(Builder builder) { @@ -16,10 +18,10 @@ private InAppAndroidPayTransactionObject(Builder builder) this.billTo = builder.billTo; } - public static class Builder extends InAppTransactionObject.Builder{ + public static class Builder extends InAppTransaction.Builder{ public Builder(){ - this.transactionType = SDK_TRANSACTION_ANDROID_PAY; + this.transactionType = IN_APP_TRANSACTION_ANDROID_PAY; this.merchantReferenceCode = Long.toString(System.currentTimeMillis()); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java index 0191ff6..5f9a28e 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java @@ -1,13 +1,13 @@ package com.visa.inappsdk.connectors.inapp.transaction.client; -import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.SDK_TRANSACTION_ENCRYPTION; +import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.IN_APP_TRANSACTION_ENCRYPTION; /** - * Provides data for refund transaction + * Provides data for Encrypt transaction * - * @author fzubair + * Created by fzubair on 11/18/2015. */ -final class InAppEncryptTransactionObject extends InAppTransactionObject { +final class InAppEncryptTransactionObject extends InAppTransaction { private InAppEncryptTransactionObject(Builder builder) { @@ -19,10 +19,10 @@ private InAppEncryptTransactionObject(Builder builder) this.billTo = builder.billTo; } - public static class Builder extends InAppTransactionObject.Builder{ + public static class Builder extends InAppTransaction.Builder{ public Builder(){ - this.transactionType = SDK_TRANSACTION_ENCRYPTION; + this.transactionType = IN_APP_TRANSACTION_ENCRYPTION; this.merchantReferenceCode = Long.toString(System.currentTimeMillis()); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java similarity index 56% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java rename to src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java index 8567f10..c6d152e 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java @@ -2,13 +2,14 @@ import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.visa.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; /** - * This class represents a transaction that is sent to a reader and then received back from it. + * This class represents a transaction that is sent to the server. * - * @author fzubair + * Created by fzubair on 11/18/2015. */ -public abstract class InAppTransactionObject { +public abstract class InAppTransaction { protected String merchantReferenceCode; protected InAppTransactionType transactionType; @@ -16,11 +17,13 @@ public abstract class InAppTransactionObject { protected String transactionDate; protected SDKCardData cardData; protected SDKBillTo billTo; + protected String encryptedPaymentData; + protected SDKPurchaseOrder purchaseOrder; - InAppTransactionObject(Builder builder) { + InAppTransaction(Builder builder) { } - InAppTransactionObject() { + InAppTransaction() { } public String getMerchantReferenceCode() { @@ -43,22 +46,30 @@ public SDKBillTo getBillTo() { return billTo; } + public SDKPurchaseOrder getPurchaseOrder() { + return purchaseOrder; + } + public InAppTransactionType getTransactionType() { return transactionType; } + public String getEncryptedPaymentData() { + return encryptedPaymentData; + } + /** * A factory method for creating proper transaction object. * * @param type transaction type * @return one of transaction objects */ - public static InAppTransactionObject.Builder createTransactionObject(InAppTransactionType type) { + public static InAppTransaction.Builder createTransactionObject(InAppTransactionType type) { switch (type) { - case SDK_TRANSACTION_ENCRYPTION: + case IN_APP_TRANSACTION_ENCRYPTION: return new InAppEncryptTransactionObject.Builder(); - case SDK_TRANSACTION_ANDROID_PAY: + case IN_APP_TRANSACTION_ANDROID_PAY: return new InAppAndroidPayTransactionObject.Builder(); default: return new InAppEncryptTransactionObject.Builder(); @@ -72,33 +83,45 @@ public static abstract class Builder { protected String transactionDate; protected SDKCardData cardData; protected SDKBillTo billTo; + protected String encryptedPaymentData; + protected SDKPurchaseOrder purchaseOrder; - public InAppTransactionObject.Builder merchantReferenceCode(String merchantReferenceCode) { + public InAppTransaction.Builder merchantReferenceCode(String merchantReferenceCode) { this.merchantReferenceCode = merchantReferenceCode; return this; } - public InAppTransactionObject.Builder cardData(SDKCardData cardData) { + public InAppTransaction.Builder cardData(SDKCardData cardData) { this.cardData = cardData; return this; } - public InAppTransactionObject.Builder billTo(SDKBillTo billTo) { + public InAppTransaction.Builder billTo(SDKBillTo billTo) { this.billTo = billTo; return this; } - public InAppTransactionObject.Builder transactionDate(String transactionDate) { + public InAppTransaction.Builder purchaseOrder(SDKPurchaseOrder purchaseOrder) { + this.purchaseOrder = purchaseOrder; + return this; + } + + public InAppTransaction.Builder transactionDate(String transactionDate) { this.transactionDate = transactionDate; return this; } - public InAppTransactionObject.Builder transactionTime(String transactionTime) { + public InAppTransaction.Builder transactionTime(String transactionTime) { this.transactionTime = transactionTime; return this; } - public abstract InAppTransactionObject build(); + public InAppTransaction.Builder encryptedPaymentData(String encryptedPaymentData) { + this.encryptedPaymentData = encryptedPaymentData; + return this; + } + + public abstract InAppTransaction build(); } } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java index df8224e..b448cde 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java @@ -3,11 +3,12 @@ /** * Enumeration used to indicate the transaction type. Possible states: *
    - *
  • SDK_TRANSACTION_ENCRYPTION
  • + *
  • IN_APP_TRANSACTION_ENCRYPTION
  • + *
  • IN_APP_TRANSACTION_ANDROID_PAY
  • *
* - * @author fzubair + * Created by fzubair on 11/18/2015. */ public enum InAppTransactionType { - SDK_TRANSACTION_ENCRYPTION, SDK_TRANSACTION_ANDROID_PAY + IN_APP_TRANSACTION_ENCRYPTION, IN_APP_TRANSACTION_ANDROID_PAY } diff --git a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java b/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java index b9ca371..d1f92ac 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java +++ b/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java @@ -1,6 +1,6 @@ package com.visa.inappsdk.datamodel; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; /** @@ -34,14 +34,23 @@ protected static void setGateway(SDKGateway gatewayInstance) { /** - * Performs payment Authorization for the transaction object + * Performs encryption for the provided credit card data object * - * during operation * @return true if a transaction is already in progress */ - protected abstract boolean performEncryption(InAppTransactionObject transactionObject, + protected abstract boolean performEncryption(InAppTransaction transactionObject, SDKApiConnectionCallback applicationConnectionCallback); + /** + * Performs Transaction using the Android pay encrypted payment data provided with + * the transaction object + * + * @return true if a transaction is already in progress + */ + protected abstract boolean performAndroidPayTransaction(InAppTransaction transactionObject, + SDKApiConnectionCallback applicationConnectionCallback); + + /** * Cleans the gateway instance. */ diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java new file mode 100644 index 0000000..32b5674 --- /dev/null +++ b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java @@ -0,0 +1,68 @@ +package com.visa.inappsdk.datamodel.transaction.fields; + +import com.visa.inappsdk.common.SDKCurrency; + +import java.math.BigDecimal; + +/** + * Contains fields that describes basket item. + * + * Created by fzubair on 11/19/2015. + */ +public final class SDKLineItem { + + private final String productName; + private final BigDecimal unitPrice; + private final int quantity; + private final BigDecimal taxAmount; + + private SDKLineItem(Builder builder){ + this.productName = builder.productName; + this.unitPrice = builder.unitPrice; + this.quantity = builder.quantity; + this.taxAmount = builder.taxAmount; + } + + public String getProductName() { + return productName; + } + + public int getQuantity() { + return quantity; + } + + public BigDecimal getTaxAmount() { + return taxAmount; + } + + public BigDecimal getUnitPrice() { + return unitPrice; + } + + public static class Builder{ + private final String productName; + private final BigDecimal unitPrice; + private final int quantity; + private BigDecimal taxAmount = BigDecimal.ZERO; + + public Builder(String productName, BigDecimal unitPrice, int quantity) { + this.productName = productName; + this.unitPrice = unitPrice; + this.quantity = quantity; + } + + public SDKLineItem.Builder taxAmount(BigDecimal taxAmount) { + if(taxAmount != null) + this.taxAmount = taxAmount; + return this; + } + } + + /** + * @return price of all items based on quantity and individual price + */ + public BigDecimal getLineItemsPriceForQuantity() { + return unitPrice.multiply(new BigDecimal(quantity)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java new file mode 100644 index 0000000..4eeb5ff --- /dev/null +++ b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java @@ -0,0 +1,114 @@ +package com.visa.inappsdk.datamodel.transaction.fields; + +import com.visa.inappsdk.common.SDKCurrency; +import com.visa.inappsdk.common.utils.SDKMathUtils; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * This class represents purchase and contains purchase data which are required + * for transaction. + * + * Created by fzubair on 11/19/2015. + */ +public final class SDKPurchaseOrder { + + private final List items; + private final SDKCurrency currency; + + private BigDecimal grandTotalAmount; + private BigDecimal subtotalAmount; + private BigDecimal shippingAmount; + private BigDecimal totalTax; + + private SDKPurchaseOrder(Builder builder){ + this.items = builder.items; + this.grandTotalAmount = builder.grandTotalAmount; + this.subtotalAmount = builder.subtotalAmount; + this.shippingAmount = builder.shippingAmount; + this.totalTax = builder.totalTax; + this.currency = builder.currency; + updateTotals(); + } + + public BigDecimal getTotalTax() { + return totalTax; + } + + public SDKCurrency getCurrency() { + return currency; + } + + public BigDecimal getGrandTotalAmount() { + return grandTotalAmount; + } + + public List getLineItems() { + return items; + } + + public BigDecimal getSubtotalAmount() { + return subtotalAmount; + } + + + public static class Builder{ + private List items; + private BigDecimal grandTotalAmount = BigDecimal.ZERO; + private BigDecimal subtotalAmount = BigDecimal.ZERO; + private BigDecimal shippingAmount = BigDecimal.ZERO; + private BigDecimal totalTax = BigDecimal.ZERO; + private SDKCurrency currency = SDKCurrency.USD; + + public Builder() { + } + + public SDKPurchaseOrder.Builder items(List items) { + this.items = items; + return this; + } + public SDKPurchaseOrder.Builder grandTotalAmount(BigDecimal grandTotalAmount) { + this.grandTotalAmount = grandTotalAmount; + return this; + } + public SDKPurchaseOrder.Builder subtotalAmount(BigDecimal subtotalAmount) { + this.subtotalAmount = subtotalAmount; + return this; + } + public SDKPurchaseOrder.Builder shippingAmount(BigDecimal shippingAmount) { + this.shippingAmount = shippingAmount; + return this; + } + public SDKPurchaseOrder.Builder totalTax(BigDecimal totalTax) { + this.totalTax = totalTax; + return this; + } + public SDKPurchaseOrder.Builder currency(SDKCurrency currency) { + this.currency = currency; + return this; + } + } + + /** + * Calculates totalAmount and subtotalAmount. + */ + public void updateTotals() { + for (SDKLineItem item : items) { + subtotalAmount = SDKMathUtils.add(subtotalAmount, + item.getLineItemsPriceForQuantity()); + totalTax = SDKMathUtils.add(totalTax, item.getTaxAmount()); + } + grandTotalAmount = subtotalAmount; + + if (shippingAmount.compareTo(BigDecimal.ZERO) > 0) { + grandTotalAmount = SDKMathUtils.add(grandTotalAmount, shippingAmount); + } + + if (totalTax.compareTo(BigDecimal.ZERO) > 0) { + grandTotalAmount = SDKMathUtils.add(grandTotalAmount, totalTax); + } + } + +} diff --git a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java index 9621a6d..6b7701d 100644 --- a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java +++ b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java @@ -4,7 +4,7 @@ import android.test.mock.MockContext; import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionObject; +import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; @@ -101,7 +101,7 @@ public void testDispose() throws Exception { @Test public void testConnect() throws Exception { /* assertTrue(apiClient.performApi(InAppSDKApiClient.Api.API_ENCRYPTION, SDKTransactionObject. - createTransactionObject(SDKTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object + createTransactionObject(SDKTransactionType.IN_APP_TRANSACTION_ENCRYPTION) // type of transaction object .merchantReferenceCode("Android_Sample_Code" + "_" + Long.toString(System.currentTimeMillis())) // you can set it to anything meaningful .cardData(prepareDummyCardData()) // card data to be encrypted .build(), "sdfskjdfs"));*/ @@ -135,8 +135,8 @@ public void testApiClientConnectThrowsNullTransactionObjectException() throws Ex @Test public void testApiClientConnectThrowsNullCardDataException() throws Exception { - InAppTransactionObject transactionObject = InAppTransactionObject. - createTransactionObject(InAppTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object + InAppTransaction transactionObject = InAppTransaction. + createTransactionObject(InAppTransactionType.IN_APP_TRANSACTION_ENCRYPTION) // type of transaction object .cardData(null) // card data to be encrypted .build(); try @@ -152,8 +152,8 @@ public void testApiClientConnectThrowsNullCardDataException() throws Exception { @Test public void testApiClientConnectThrowsInvalidMessageSignatureException() throws Exception { - InAppTransactionObject transactionObject = InAppTransactionObject. - createTransactionObject(InAppTransactionType.SDK_TRANSACTION_ENCRYPTION) // type of transaction object + InAppTransaction transactionObject = InAppTransaction. + createTransactionObject(InAppTransactionType.IN_APP_TRANSACTION_ENCRYPTION) // type of transaction object .cardData(prepareTestCardData()) // card data to be encrypted .build(); try From 65fd716b083a75f15a97db53ed4f5f1697b3ed69 Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Tue, 24 Nov 2015 11:59:01 -0800 Subject: [PATCH 4/9] Api addtion for Android Pay support --- .../visa/inappsdk/common/utils/SDKUtils.java | 70 +++++++++++-------- .../inapp/InAppConnectionService.java | 1 + .../connectors/inapp/InAppGateway.java | 3 +- .../connectors/inapp/InAppSDKApiClient.java | 9 +++ .../envelopes/InAppAndroidPayEnvelope.java | 45 +++++------- .../inapp/envelopes/InAppEncryptEnvelope.java | 11 +-- .../inapp/responses/InAppResponseObject.java | 15 ++-- ...ppEnvelopeEncryptionTransactionObject.java | 3 - .../InAppAndroidPayTransactionObject.java | 2 + .../datamodel/SDKGatewayErrorMapping.java | 2 +- .../transaction/fields/SDKLineItem.java | 4 ++ .../transaction/fields/SDKPurchaseOrder.java | 4 ++ .../inappsdk/soap/model/SDKXMLNVPNode.java | 9 --- 13 files changed, 89 insertions(+), 89 deletions(-) diff --git a/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java b/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java index f6ceb9b..1daa160 100644 --- a/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java +++ b/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java @@ -1,6 +1,7 @@ package com.visa.inappsdk.common.utils; import android.text.TextUtils; +import android.util.Base64; import com.visa.inappsdk.common.SDKCore; import com.visa.inappsdk.common.SDKCurrency; @@ -23,6 +24,7 @@ import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; +import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.Certificate; @@ -83,6 +85,10 @@ public class SDKUtils { /** Port: 443 */ private final static int PORT_443 = 443; + /** SEC PUBLIC KEY **/ + public static String PUBLIC_KEY = null; + + /** * This method checks if given class exists basing on its name. If it does * exist it also checks if conforms to a given class type. @@ -243,7 +249,7 @@ public static HttpsURLConnection getHttpsURLConnection(String urlString, String urlConnection.setReadTimeout(RECIEVE_DATA_TIMEOUT); urlConnection.setDoOutput(doOutput); urlConnection.setDoInput(true); - android.util.Log.d("VMposUtils", "Connection: " + requestMethod + " -to- " + urlString); + android.util.Log.d("SDKUtils", "Connection: " + requestMethod + " -to- " + urlString); return urlConnection; } @@ -326,36 +332,6 @@ public void checkServerTrusted(X509Certificate[] certs, String authType) } } -/* public static HttpClient getHttpClientWithSSLSupport() { - try { - KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); - trustStore.load(null, null); - - SSLSocketFactory sf = new MySSLSocketFactory(trustStore); - sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - - HttpParams params = new BasicHttpParams(); - params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, CONNECTION_ATTEPTS); - params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(CONNECTION_ATTEPTS)); - params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); - HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); - HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); - HttpConnectionParams.setConnectionTimeout(params, CONNECTION_TIMEOUT); - HttpConnectionParams.setSoTimeout(params, RECIEVE_DATA_TIMEOUT); - - SchemeRegistry registry = new SchemeRegistry(); - registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), PORT_80)); - registry.register(new Scheme("https", sf, PORT_443)); - - ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); - - return new DefaultHttpClient(ccm, params); - } catch (Exception e) { - return new DefaultHttpClient(); - } - }*/ - private static class MySSLSocketFactory extends SSLSocketFactory { SSLContext sslContext = SSLContext.getInstance("TLS"); @@ -489,5 +465,37 @@ public static String getGatewayAmountStringFromBigDecimal(BigDecimal value){ BigDecimal amount = value.setScale(2, RoundingMode.CEILING); return amount.toPlainString(); } + + + public static String getBase64Blob(String token) { + byte[] encodedTokenBytes = Base64.encode(token.getBytes(), Base64.NO_WRAP); + String encodedToken = new String(encodedTokenBytes); + return encodedToken; + } + +/* private String createSecServiceJson(String androidPayBlob){ + String secBlob = "{\"publicKeyHash\": \"" + getPublicKeyHash() + "\"," + + "\"version\": \"1.0\"," + + "\"data\":" + "\"" + androidPayBlob + "\"}"; + return secBlob; + }*/ + + /** + * Uses the public passed in by client code through SDK API Client + * @return hashed sec public key + */ + public static String getPublicKeyHash() { + MessageDigest digest = null; + try { + digest = MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + byte[] publicKeyHash; + byte[] pubKeyBytes = Base64.decode(PUBLIC_KEY, Base64.NO_WRAP); + publicKeyHash = digest.digest(pubKeyBytes); + String publicKeyHashString = new String(Base64.encode(publicKeyHash, Base64.NO_WRAP)); + return publicKeyHashString; + } } \ No newline at end of file diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java index 99891d6..0395137 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java @@ -171,6 +171,7 @@ protected void onPostHandleAction(Object result, ResultReceiver resultReceiver) SDKGatewayResponse response = (SDKGatewayResponse)result; resultData.putParcelable(SERVICE_RESULT_RESPONSE_KEY, response); switch (response.getType()) { + case SDK_ANDROID_PAY: case SDK_ENCRYPTION: resultReceiver.send(SERVICE_RESULT_CODE_SDK_RESPONSE, resultData); break; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java index 43716d8..001239a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java @@ -4,6 +4,7 @@ import android.os.Handler; import com.visa.inappsdk.common.error.SDKError; +import com.visa.inappsdk.connectors.inapp.envelopes.InAppAndroidPayEnvelope; import com.visa.inappsdk.connectors.inapp.envelopes.InAppEncryptEnvelope; import com.visa.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; import com.visa.inappsdk.datamodel.SDKGateway; @@ -57,7 +58,7 @@ protected boolean performAndroidPayTransaction(InAppTransaction transactionObjec registerResultReceiver(); transactionInProgress = true; this.connectionCallback = applicationConnectionCallback; - InAppEncryptEnvelope envelope = new InAppEncryptEnvelope(transactionObject, merchantId, + InAppAndroidPayEnvelope envelope = new InAppAndroidPayEnvelope(transactionObject, merchantId, messageSignature); if (envelope == null) return false; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java index bdd7d4a..0247406 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java @@ -1,8 +1,10 @@ package com.visa.inappsdk.connectors.inapp; import android.content.Context; +import android.webkit.URLUtil; import com.visa.inappsdk.common.SDKCore; +import com.visa.inappsdk.common.utils.SDKUtils; import com.visa.inappsdk.connectors.inapp.connection.InAppConnectionData; import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; @@ -39,6 +41,7 @@ private InAppSDKApiClient(Builder builder) { if(builder.apiTestEndpoint != null) configureTestEndpoint(builder.apiTestEndpoint); setActiveCurrentUrl(); + SDKUtils.PUBLIC_KEY = builder.publicKey; configureConnectionTimeout(builder.connectionTimeout); } @@ -107,6 +110,7 @@ public static class Builder { private String transactionNamespace = null; private String apiProdEndpoint = null; private String apiTestEndpoint = null; + private String publicKey = null; private int connectionTimeout; public Builder(Context context, Environment environment, String merchantID){ @@ -139,6 +143,11 @@ public InAppSDKApiClient.Builder sdkApiTestEndpoint(String apiTestEndpoint) { return this; } + public InAppSDKApiClient.Builder publicKey(String publicKey) { + this.publicKey = publicKey; + return this; + } + public InAppSDKApiClient.Builder sdkConnectionTimeout(int timeoutMillis) { this.connectionTimeout = timeoutMillis; return this; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java index 787b847..8a39257 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java @@ -1,6 +1,7 @@ package com.visa.inappsdk.connectors.inapp.envelopes; import com.visa.inappsdk.common.error.SDKError; +import com.visa.inappsdk.common.utils.SDKUtils; import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; import com.visa.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; import com.visa.inappsdk.connectors.inapp.datamodel.InAppItem; @@ -43,7 +44,6 @@ private void createEnvelopeBody(InAppEnvelopeAndroidPayTransactionObject payment private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppTransaction transactionObject, String merchantId) { - String merchantReferenceCode = transactionObject.getMerchantReferenceCode(); SDKBillTo billTo = transactionObject.getBillTo(); @@ -62,7 +62,10 @@ private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppT InAppPurchaseTotals purchaseTotals = null; if(purchaseOrder != null) { purchaseTotals = new InAppPurchaseTotals( - purchaseOrder.getCurrency().name(), getGatewayAmountString(purchaseOrder.getGrandTotalAmount())); + purchaseOrder.getCurrency().name(), + SDKUtils.getGatewayAmountStringFromBigDecimal + (purchaseOrder.getGrandTotalAmount()) + ); List lineItems = purchaseOrder.getLineItems(); if (lineItems != null) { items = new ArrayList<>(); @@ -80,8 +83,12 @@ private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppT } String encryptedPaymentData = transactionObject.getEncryptedPaymentData(); + // TODO: CREATE SEC BLOB OUT OF THIS ANDROID PAY BLOB + String secBlobEncryptedPayment = createSecServiceJson(encryptedPaymentData); + secBlobEncryptedPayment = SDKUtils.getBase64Blob(secBlobEncryptedPayment); + InAppEncryptedPayment inAppEncryptedPayment = new InAppEncryptedPayment - (DESCRIPTOR_FID, encryptedPaymentData); + (DESCRIPTOR_FID, secBlobEncryptedPayment); InAppEnvelopeAndroidPayTransactionObject inAppEnvelopeAndroidPayTransactionObject = new InAppEnvelopeAndroidPayTransactionObject(merchantId, merchantReferenceCode, @@ -90,6 +97,14 @@ private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppT return inAppEnvelopeAndroidPayTransactionObject; } + private String createSecServiceJson(String androidPayBlob){ + String secBlob = "{\"publicKeyHash\": \"" + SDKUtils.getPublicKeyHash() + "\"," + + "\"version\": \"1.0\"," + + "\"data\":" + "\"" + androidPayBlob + "\"}"; + return secBlob; + } + + @Override protected void createEnvelopeHeader(String merchantID, String messageSignature) { super.createEnvelopeHeader(merchantID, messageSignature); @@ -102,33 +117,11 @@ public SDKError parseGatewayError(InputStream inputStream) { @Override public InAppResponseObject parseResponse(InputStream inputStream) { - return InAppResponseObject.createEncryptionResponse(inputStream, getResponseType()); + return InAppResponseObject.createAndroidPayAuthResponse(inputStream, getResponseType()); } @Override public SDKGatewayResponseType getResponseType() { return SDKGatewayResponseType.SDK_ANDROID_PAY; } - - public String getGatewayAmountString(BigDecimal value){ - BigDecimal amount = value.setScale(2, RoundingMode.CEILING); - return amount.toPlainString(); - } - -/* protected InAppEncryptEnvelope(Parcel in) { - super(in); - } - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - - @Override - public InAppEncryptEnvelope createFromParcel(Parcel in) { - return new InAppEncryptEnvelope(in); - } - - @Override - public InAppEncryptEnvelope[] newArray(int size) { - return new InAppEncryptEnvelope[size]; - } - };*/ } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java index e2eb2e9..b7eaca1 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java @@ -56,18 +56,9 @@ private InAppEnvelopeEncryptionTransactionObject convertTransactionObject(InAppT } InAppEncryptPaymentDataService inAppEncryptPaymentDataService = new InAppEncryptPaymentDataService(true, null); - /*transactionObject.getPurchaseDetails().getCommerceIndicator());*/ - - // Faizan -- added the encrypted payment part - //VMposEncryptedPayment encryptedPayment = transactionObject.getEncryptedPayment(); - -/* VMposEncryptedPayment encryptedPayment = new VMposEncryptedPayment(); - encryptedPayment.setEncodedData(getIDTechTestBlob()); - encryptedPayment.setEncodedMetaData(VMposMessageSignature.MetadataEncodedValue); - encryptedPayment.setPaymentSolution(VMposMessageSignature.PAYMENT_SOLUTION_DEFAULT_VALUE);*/ InAppEnvelopeEncryptionTransactionObject inAppEncryptionTransactionObject = new InAppEnvelopeEncryptionTransactionObject( - merchantId, merchantReferenceCode, card, bill, inAppEncryptPaymentDataService, CLIENT_LIBRARY/*, encryptedPayment*/); + merchantId, merchantReferenceCode, card, bill, inAppEncryptPaymentDataService, CLIENT_LIBRARY); return inAppEncryptionTransactionObject; } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java index 09fcdf4..96b0094 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java @@ -31,7 +31,7 @@ import javax.xml.transform.stream.StreamResult; /** - * Provides parsers for responses from CyberSouce Gateway and also is an Object that store parsed data. + * Provides parsers for responses from CyberSource Gateway and also is an Object that store parsed data. * * Created by fzubair on 10/8/2015. */ @@ -44,9 +44,6 @@ public final class InAppResponseObject extends InAppResponseFields { private final static String DECISION_REJECT = "REJECT"; private final static String DECISION_REVIEW = "REVIEW"; - // Describes if response decision returns success - // public VMposCyberSourceResponseDec success; - // Main Fields public String additionalData; // ccAuthReply public SDKResponseDecision decision; // all @@ -94,10 +91,10 @@ private static HashMap parseNVPResponseString(String nvpResponse * @param type - type of response * @return */ -/* public static InAppResponseObject createAuthorizationResponse(InputStream inputStream, + public static InAppResponseObject createAndroidPayAuthResponse(InputStream inputStream, SDKGatewayResponseType type) { - Document doc = parseResponse(inputStream); +/* Document doc = parseResponse(inputStream); DOMSource domSource = new DOMSource(doc); StringWriter writer = new StringWriter(); StreamResult streamResult = new StreamResult(writer); @@ -137,8 +134,10 @@ private static HashMap parseNVPResponseString(String nvpResponse return result; } else { return null; - } - }*/ + }*/ + return null; + + } /** * Parse EncryptionResponse to InAppResponseObject diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java index 7490ae7..0eb705c 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java @@ -19,9 +19,6 @@ public class InAppEnvelopeEncryptionTransactionObject extends InAppEnvelopeTrans public final String PAYMENT_SOLUTION = "paymentSolution"; - //public VMposEncryptedPayment encryptedPayment; - //public String clientLibrary; - /** * All fields in constructor are required * diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java index b73036c..74ce94b 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java @@ -16,6 +16,8 @@ private InAppAndroidPayTransactionObject(Builder builder) this.transactionTime = builder.transactionTime; this.transactionDate = builder.transactionDate; this.billTo = builder.billTo; + this.encryptedPaymentData = builder.encryptedPaymentData; + this.purchaseOrder = builder.purchaseOrder; } public static class Builder extends InAppTransaction.Builder{ diff --git a/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java b/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java index 0b14161..4fee376 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java +++ b/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java @@ -3,7 +3,7 @@ import com.visa.inappsdk.common.error.SDKGatewayError; /** - * Allows to get @VMposGatewayError from error code. + * Allows to get @SDKGatewayError from error code. * * @author fzubair */ diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java index 32b5674..5a85f3c 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java +++ b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java @@ -56,6 +56,10 @@ public SDKLineItem.Builder taxAmount(BigDecimal taxAmount) { this.taxAmount = taxAmount; return this; } + + public SDKLineItem build(){ + return new SDKLineItem(this); + } } /** diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java index 4eeb5ff..9ecaadd 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java +++ b/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java @@ -89,6 +89,10 @@ public SDKPurchaseOrder.Builder currency(SDKCurrency currency) { this.currency = currency; return this; } + + public SDKPurchaseOrder build(){ + return new SDKPurchaseOrder(this); + } } /** diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java b/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java index 55507b2..b1c064a 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java +++ b/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java @@ -19,8 +19,6 @@ public SDKXMLNVPNode(String namespace, String name) { super(namespace, name); } - //private VMposCyberSourceNameValuePair nameValuePair; - /** * Creates a new XML Element. * @@ -33,13 +31,6 @@ public SDKXMLNVPNode(String namespace, String name) { } - *//** - * @return Text value of this text node XML element. - *//* - public VMposCyberSourceNameValuePair getNameValuePair() { - return nameValuePair; - }*/ - /* protected SDKXMLNVPNode(Parcel in){ super(in); } From aa9dfb5663da0b87102f3471ad58f353c8c8332a Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Wed, 25 Nov 2015 18:00:16 -0800 Subject: [PATCH 5/9] checks for null public key added --- build.gradle | 5 + .../connectors/inapp/InAppSDKApiClient.java | 4 + .../inapp/datamodel/InAppBillTo.java | 12 +- .../envelopes/InAppAndroidPayEnvelope.java | 22 ++- .../responses/InAppCcAndroidPayAuthReply.java | 61 +++++++ .../responses/InAppPurchaseTotalsReply.java | 13 ++ .../inapp/responses/InAppResponseFields.java | 104 +++++------ .../inapp/responses/InAppResponseObject.java | 168 +++++++++--------- 8 files changed, 240 insertions(+), 149 deletions(-) create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java create mode 100644 src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java diff --git a/build.gradle b/build.gradle index 2f6f84a..9a7b73a 100644 --- a/build.gradle +++ b/build.gradle @@ -41,6 +41,11 @@ android { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } + debug { + minifyEnabled false + shrinkResources false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } } testOptions { unitTests { diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java index 0247406..496acc7 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java @@ -22,6 +22,7 @@ public class InAppSDKApiClient { public enum Environment {ENV_TEST, ENV_PROD}; private final Environment environment; private final String merchantID; + private String publicKey = null; private final SDKApiConnectionCallback connectionCallback; // endpoint API to be used once the 'performApi' method is invoked @@ -42,6 +43,7 @@ private InAppSDKApiClient(Builder builder) { configureTestEndpoint(builder.apiTestEndpoint); setActiveCurrentUrl(); SDKUtils.PUBLIC_KEY = builder.publicKey; + this.publicKey = builder.publicKey; configureConnectionTimeout(builder.connectionTimeout); } @@ -95,6 +97,8 @@ public boolean performApi(Api api, InAppTransaction transactionObject, String me case API_ANDROID_PAY: if(transactionObject.getPurchaseOrder() == null) throw new NullPointerException("Missing fields: Purchase Order must not be null"); + if(this.publicKey == null) + throw new NullPointerException("Missing fields: Public Key must not be null"); return InAppGateway.getGateway().performAndroidPayTransaction(transactionObject, this.connectionCallback); default: diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java index 2a13d28..9780c74 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java @@ -63,12 +63,6 @@ public void updateEnvelope(SDKXMLParentNode request) { if (this.lastName != null) { billTo.addTextNode(billTo.getNamespace(), LAST_NAME, this.lastName); } - if (this.email != null) { - billTo.addTextNode(billTo.getNamespace(), EMAIL, this.email); - } - if (this.postalCode != null) { - billTo.addTextNode(billTo.getNamespace(), POSTAL_CODE, this.postalCode); - } if (this.street1 != null) { billTo.addTextNode(billTo.getNamespace(), STREET1, this.street1); } @@ -81,8 +75,14 @@ public void updateEnvelope(SDKXMLParentNode request) { if (this.state != null) { billTo.addTextNode(billTo.getNamespace(), STATE, this.state); } + if (this.postalCode != null) { + billTo.addTextNode(billTo.getNamespace(), POSTAL_CODE, this.postalCode); + } if (this.country != null) { billTo.addTextNode(billTo.getNamespace(), COUNTRY, this.country); } + if (this.email != null) { + billTo.addTextNode(billTo.getNamespace(), EMAIL, this.email); + } } } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java index 8a39257..0e1f70c 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java @@ -17,6 +17,9 @@ import com.visa.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import org.json.JSONException; +import org.json.JSONObject; + import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; @@ -28,6 +31,11 @@ */ public class InAppAndroidPayEnvelope extends InAppBaseEnvelope{ + public static final String PUBLIC_KEY_HASH = "publicKeyHash"; + public static final String VERSION = "version"; + public static final String VERSION_NUMBER = "1.0"; + public static final String DATA = "data"; + InAppAndroidPayEnvelope() { } @@ -98,10 +106,16 @@ private InAppEnvelopeAndroidPayTransactionObject convertTransactionObject(InAppT } private String createSecServiceJson(String androidPayBlob){ - String secBlob = "{\"publicKeyHash\": \"" + SDKUtils.getPublicKeyHash() + "\"," + - "\"version\": \"1.0\"," + - "\"data\":" + "\"" + androidPayBlob + "\"}"; - return secBlob; + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put(PUBLIC_KEY_HASH, SDKUtils.getPublicKeyHash()); + jsonObject.put(VERSION, VERSION_NUMBER); + jsonObject.put(DATA, androidPayBlob); + } catch (JSONException e) { + e.printStackTrace(); + } + + return jsonObject.toString(); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java new file mode 100644 index 0000000..613cb0c --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java @@ -0,0 +1,61 @@ +package com.visa.inappsdk.connectors.inapp.responses; + +/** + * Object InAppCcAuthReply stores all possible data of object + * ccAuthReplay from gateway responses (most of fields are optional, so they + * will be 'null', this object appears only in Authorize and Sale Methods) + * + * @author fzubair + */ + public class InAppCcAndroidPayAuthReply { + + public String accountBalance; + public String accountBalanceCurrency; + public String accountBalanceSign; + public String affluenceIndicator; + public String amount; + public String authorizationCode; + public String authorizedDateTime; + public String avsCode; + public String avsCodeRaw; + public String cardCategory; + public String cardCommercial; + public String cardGroup; + public String cardHealthcare; + public String cardIssuerCountry; + public String cardLevel3Eligible; + public String cardPayroll; + public String cardPINlessDebit; + public String cardPrepaid; + public String cardRegulated; + public String cardSignatureDebit; + public String cavvResponseCode; + public String cavvResponseCodeRaw; + public String cvCode; + public String cvCodeRaw; + public String evEmail; + public String evEmailRaw; + public String evName; + public String evNameRaw; + public String evPhoneNumber; + public String evPhoneNumberRaw; + public String evPostalCode; + public String evPostalCodeRaw; + public String evStreet; + public String evStreetRaw; + public String forwardCode; + public String merchantAdviceCode; + public String merchantAdviceCodeRaw; + public String ownerMerchantID; + public String paymentNetworkTransactionID; + public String personalIDCode; + public String posData; + public String processorResponse; + public String processorTransactionID; + public String reasonCode; + public String reconciliationID; + public String referralResponseNumber; + public String requestAmount; + public String requestCurrency; + public String transactionID; +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java new file mode 100644 index 0000000..e2c07de --- /dev/null +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java @@ -0,0 +1,13 @@ +package com.visa.inappsdk.connectors.inapp.responses; + +/** + * Object VMposCyberSourcePurchaseTotalsReplay appears in every type of response + * except of VoidReplay + * + * @author fzubair + */ +public class InAppPurchaseTotalsReply { + + public String currency; + +} diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java index bb7dab8..07255b2 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java @@ -45,60 +45,60 @@ public class InAppResponseFields { // ccCreditReply // EMV Reply - protected static final String EMV_REPLAY = "c:emvReply"; - protected static final String EMV_REPLAY_COMBINED_TAGS = "c:combinedTags"; // ccAuthReply + protected static final String EMV_REPLY = "c:emvReply"; + protected static final String EMV_REPLY_COMBINED_TAGS = "c:combinedTags"; // ccAuthReply // Auth Reply Fields - protected static final String CC_AUTH_REPLAY = "c:ccAuthReply"; - protected static final String CC_AUTH_REPLAY_ACCOUNT_BALANCE = "c:accountBalance"; - protected static final String CC_AUTH_REPLAY_ACCOUNT_BALANCE_CURRENCY = "c:accountBalanceCurrency"; - protected static final String CC_AUTH_REPLAY_ACCOUNT_BALANCE_SIGN = "c:accountBalanceSign"; - protected static final String CC_AUTH_REPLAY_AFFLUENCE_INDICATOR = "c:affluenceIndicator"; - protected static final String CC_AUTH_REPLAY_AMOUNT = "c:amount"; - protected static final String CC_AUTH_REPLAY_AUTHORIZATION_CODE = "c:authorizationCode"; - protected static final String CC_AUTH_REPLAY_AUTHORIZED_DATE_TIME = "c:authorizedDateTime"; - protected static final String CC_AUTH_REPLAY_AVS_CODE = "c:avsCode"; - protected static final String CC_AUTH_REPLAY_AVS_CODE_RAW = "c:avsCodeRaw"; - protected static final String CC_AUTH_REPLAY_CARD_CATEGORY = "c:cardCategory"; - protected static final String CC_AUTH_REPLAY_CARD_COMMERCIAL = "c:cardCommercial"; - protected static final String CC_AUTH_REPLAY_CARD_GROUP = "c:cardGroup"; - protected static final String CC_AUTH_REPLAY_CARD_HEALTHCARE = "c:cardHealthcare"; - protected static final String CC_AUTH_REPLAY_CARD_ISSUER_COUNTRY = "c:cardIssuerCountry"; - protected static final String CC_AUTH_REPLAY_CARD_LEVEL_3_ELIGIBLE = "c:cardLevel3Eligible"; - protected static final String CC_AUTH_REPLAY_CARD_PAYROLL = "c:cardPayroll"; - protected static final String CC_AUTH_REPLAY_CARD_PINLESS_DEBIT = "c:cardPINlessDebit"; - protected static final String CC_AUTH_REPLAY_CARD_PREPAID = "c:cardPrepaid"; - protected static final String CC_AUTH_REPLAY_CARD_REGULATED = "c:cardRegulated"; - protected static final String CC_AUTH_REPLAY_CARD_SIGNATURE_DEBIT = "c:cardSignatureDebit"; - protected static final String CC_AUTH_REPLAY_CAVV_RESPONSE_CODE = "c:cavvResponseCode"; - protected static final String CC_AUTH_REPLAY_CAVV_RESPONSE_CODE_RAW = "c:cavvResponseCodeRaw"; - protected static final String CC_AUTH_REPLAY_CV_CODE = "c:cvCode"; - protected static final String CC_AUTH_REPLAY_CV_CODE_RAW = "c:cvCodeRaw"; - protected static final String CC_AUTH_REPLAY_EV_EMAIL = "c:evEmail"; - protected static final String CC_AUTH_REPLAY_EV_EMAIL_RAW = "c:evEmailRaw"; - protected static final String CC_AUTH_REPLAY_EV_NAME = "c:evName"; - protected static final String CC_AUTH_REPLAY_EV_NAME_RAW = "c:evNameRaw"; - protected static final String CC_AUTH_REPLAY_EV_PHONE_NUMBER = "c:evPhoneNumber"; - protected static final String CC_AUTH_REPLAY_EV_PHONE_NUMBER_RAW = "c:evPhoneNumberRaw"; - protected static final String CC_AUTH_REPLAY_EV_POSTAL_CODE = "c:evPostalCode"; - protected static final String CC_AUTH_REPLAY_EV_POSTAL_CODE_RAW = "c:evPostalCodeRaw"; - protected static final String CC_AUTH_REPLAY_EV_STREET = "c:evStreet"; - protected static final String CC_AUTH_REPLAY_EV_STREET_RAW = "c:evStreetRaw"; - protected static final String CC_AUTH_REPLAY_FORWARD_CODE = "c:forwardCode"; - protected static final String CC_AUTH_REPLAY_MERCHANT_ADVICE_CODE = "c:merchantAdviceCode"; - protected static final String CC_AUTH_REPLAY_MERCHANT_ADVICE_CODE_RAW = "c:merchantAdviceCodeRaw"; - protected static final String CC_AUTH_REPLAY_OWNER_MERCHANT_ID = "c:ownerMerchantID"; - protected static final String CC_AUTH_REPLAY_PAYMENT_NETWORK_TRANSACTION_ID = "c:paymentNetworkTransactionID"; - protected static final String CC_AUTH_REPLAY_PERSONAL_ID_CODE = "c:personalIDCode"; - protected static final String CC_AUTH_REPLAY_POS_DATE = "c:posData"; - protected static final String CC_AUTH_REPLAY_PROCESSOR_RESPONSE = "c:processorResponse"; - protected static final String CC_AUTH_REPLAY_PROCESSOR_TRANSACTION_ID = "c:processorTransactionID"; - protected static final String CC_AUTH_REPLAY_REASON_CODE = REASON_CODE; - protected static final String CC_AUTH_REPLAY_RECONCILATION_ID = "c:reconciliationID"; - protected static final String CC_AUTH_REPLAY_REFERRAL_RESPONSE_NUMBER = "c:referralResponseNumber"; - protected static final String CC_AUTH_REPLAY_REQUEST_AMOUNT = "c:requestAmount"; - protected static final String CC_AUTH_REPLAY_REQUEST_CURRENCY = "c:requestCurrency"; - protected static final String CC_AUTH_REPLAY_TRANSACTION_ID = "c:transactionID"; + protected static final String CC_AUTH_REPLY = "c:ccAuthReply"; + protected static final String CC_AUTH_REPLY_ACCOUNT_BALANCE = "c:accountBalance"; + protected static final String CC_AUTH_REPLY_ACCOUNT_BALANCE_CURRENCY = "c:accountBalanceCurrency"; + protected static final String CC_AUTH_REPLY_ACCOUNT_BALANCE_SIGN = "c:accountBalanceSign"; + protected static final String CC_AUTH_REPLY_AFFLUENCE_INDICATOR = "c:affluenceIndicator"; + protected static final String CC_AUTH_REPLY_AMOUNT = "c:amount"; + protected static final String CC_AUTH_REPLY_AUTHORIZATION_CODE = "c:authorizationCode"; + protected static final String CC_AUTH_REPLY_AUTHORIZED_DATE_TIME = "c:authorizedDateTime"; + protected static final String CC_AUTH_REPLY_AVS_CODE = "c:avsCode"; + protected static final String CC_AUTH_REPLY_AVS_CODE_RAW = "c:avsCodeRaw"; + protected static final String CC_AUTH_REPLY_CARD_CATEGORY = "c:cardCategory"; + protected static final String CC_AUTH_REPLY_CARD_COMMERCIAL = "c:cardCommercial"; + protected static final String CC_AUTH_REPLY_CARD_GROUP = "c:cardGroup"; + protected static final String CC_AUTH_REPLY_CARD_HEALTHCARE = "c:cardHealthcare"; + protected static final String CC_AUTH_REPLY_CARD_ISSUER_COUNTRY = "c:cardIssuerCountry"; + protected static final String CC_AUTH_REPLY_CARD_LEVEL_3_ELIGIBLE = "c:cardLevel3Eligible"; + protected static final String CC_AUTH_REPLY_CARD_PAYROLL = "c:cardPayroll"; + protected static final String CC_AUTH_REPLY_CARD_PINLESS_DEBIT = "c:cardPINlessDebit"; + protected static final String CC_AUTH_REPLY_CARD_PREPAID = "c:cardPrepaid"; + protected static final String CC_AUTH_REPLY_CARD_REGULATED = "c:cardRegulated"; + protected static final String CC_AUTH_REPLY_CARD_SIGNATURE_DEBIT = "c:cardSignatureDebit"; + protected static final String CC_AUTH_REPLY_CAVV_RESPONSE_CODE = "c:cavvResponseCode"; + protected static final String CC_AUTH_REPLY_CAVV_RESPONSE_CODE_RAW = "c:cavvResponseCodeRaw"; + protected static final String CC_AUTH_REPLY_CV_CODE = "c:cvCode"; + protected static final String CC_AUTH_REPLY_CV_CODE_RAW = "c:cvCodeRaw"; + protected static final String CC_AUTH_REPLY_EV_EMAIL = "c:evEmail"; + protected static final String CC_AUTH_REPLY_EV_EMAIL_RAW = "c:evEmailRaw"; + protected static final String CC_AUTH_REPLY_EV_NAME = "c:evName"; + protected static final String CC_AUTH_REPLY_EV_NAME_RAW = "c:evNameRaw"; + protected static final String CC_AUTH_REPLY_EV_PHONE_NUMBER = "c:evPhoneNumber"; + protected static final String CC_AUTH_REPLY_EV_PHONE_NUMBER_RAW = "c:evPhoneNumberRaw"; + protected static final String CC_AUTH_REPLY_EV_POSTAL_CODE = "c:evPostalCode"; + protected static final String CC_AUTH_REPLY_EV_POSTAL_CODE_RAW = "c:evPostalCodeRaw"; + protected static final String CC_AUTH_REPLY_EV_STREET = "c:evStreet"; + protected static final String CC_AUTH_REPLY_EV_STREET_RAW = "c:evStreetRaw"; + protected static final String CC_AUTH_REPLY_FORWARD_CODE = "c:forwardCode"; + protected static final String CC_AUTH_REPLY_MERCHANT_ADVICE_CODE = "c:merchantAdviceCode"; + protected static final String CC_AUTH_REPLY_MERCHANT_ADVICE_CODE_RAW = "c:merchantAdviceCodeRaw"; + protected static final String CC_AUTH_REPLY_OWNER_MERCHANT_ID = "c:ownerMerchantID"; + protected static final String CC_AUTH_REPLY_PAYMENT_NETWORK_TRANSACTION_ID = "c:paymentNetworkTransactionID"; + protected static final String CC_AUTH_REPLY_PERSONAL_ID_CODE = "c:personalIDCode"; + protected static final String CC_AUTH_REPLY_POS_DATE = "c:posData"; + protected static final String CC_AUTH_REPLY_PROCESSOR_RESPONSE = "c:processorResponse"; + protected static final String CC_AUTH_REPLY_PROCESSOR_TRANSACTION_ID = "c:processorTransactionID"; + protected static final String CC_AUTH_REPLY_REASON_CODE = REASON_CODE; + protected static final String CC_AUTH_REPLY_RECONCILATION_ID = "c:reconciliationID"; + protected static final String CC_AUTH_REPLY_REFERRAL_RESPONSE_NUMBER = "c:referralResponseNumber"; + protected static final String CC_AUTH_REPLY_REQUEST_AMOUNT = "c:requestAmount"; + protected static final String CC_AUTH_REPLY_REQUEST_CURRENCY = "c:requestCurrency"; + protected static final String CC_AUTH_REPLY_TRANSACTION_ID = "c:transactionID"; // NVP Reply Fields protected static final String NVP_DECISION = "decision"; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java index 96b0094..41e85d0 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java +++ b/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java @@ -59,6 +59,8 @@ public final class InAppResponseObject extends InAppResponseFields { // Objects public InAppCcEncryptedPaymentDataReply ccEncryptedPaymentReply; + public InAppCcAndroidPayAuthReply ccAuthReply; + public InAppPurchaseTotalsReply purchaseTotals; // Response type public SDKGatewayResponseType type; @@ -94,20 +96,8 @@ private static HashMap parseNVPResponseString(String nvpResponse public static InAppResponseObject createAndroidPayAuthResponse(InputStream inputStream, SDKGatewayResponseType type) { -/* Document doc = parseResponse(inputStream); - DOMSource domSource = new DOMSource(doc); - StringWriter writer = new StringWriter(); - StreamResult streamResult = new StreamResult(writer); - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer transformer = null; - try { - transformer = tf.newTransformer(); - transformer.transform(domSource, streamResult); - } catch (Exception e) { - e.printStackTrace(); - } - - Log.d("Encrypt Response", writer.toString()); + Document doc = parseResponse(inputStream); + getResponseStringWriter(doc); if (doc != null) { @@ -116,27 +106,25 @@ public static InAppResponseObject createAndroidPayAuthResponse(InputStream input NodeList nl = doc.getElementsByTagName(REPLY_MESSAGE); - Element replay = (Element)(nl.item(0)); - setDefaultFields(result, replay); - result.additionalData = getValue(replay, ADDITIONAL_DATA); - result.receiptNumber = getValue(replay, RECEIPT_NUMBER); + Element reply = (Element)(nl.item(0)); + setDefaultFields(result, reply); + result.additionalData = getValue(reply, ADDITIONAL_DATA); + result.receiptNumber = getValue(reply, RECEIPT_NUMBER); - Element pTotals = (Element)(replay.getElementsByTagName(PURCHASE_TOTALS).item(0)); + Element pTotals = (Element)(reply.getElementsByTagName(PURCHASE_TOTALS).item(0)); if (pTotals != null) { result.purchaseTotals = getPurchaseTotalsReply(pTotals); } - Element ccAuthReplay = (Element)(replay.getElementsByTagName(CC_AUTH_REPLAY).item(0)); + Element ccAuthReplay = (Element)(reply.getElementsByTagName(CC_AUTH_REPLY).item(0)); if (ccAuthReplay != null) { - result.ccAuthReply = getAuthReply(ccAuthReplay); + result.ccAuthReply = getAndroidPayAuthReply(ccAuthReplay); } return result; } else { return null; - }*/ - return null; - + } } /** @@ -220,16 +208,16 @@ public static SDKError createErrorResponse(InputStream inputStream) { return error; } - private static void setDefaultFields(InAppResponseObject result, Element replay) { - result.decision = getDecisionType(getValue(replay, DECISION)); - result.invalidField = getValue(replay, INVALID_FIELD); - result.merchantReferenceCode = getValue(replay, MERCHANT_REFERENCE_CODE); - result.missingField = getValue(replay, MISSING_FIELD); - result.reasonCode = getValue(replay, REASON_CODE); - result.requestID = getValue(replay, REQUEST_ID); - result.requestToken = getValue(replay, REQUEST_TOKEN); + private static void setDefaultFields(InAppResponseObject result, Element reply) { + result.decision = getDecisionType(getValue(reply, DECISION)); + result.invalidField = getValue(reply, INVALID_FIELD); + result.merchantReferenceCode = getValue(reply, MERCHANT_REFERENCE_CODE); + result.missingField = getValue(reply, MISSING_FIELD); + result.reasonCode = getValue(reply, REASON_CODE); + result.requestID = getValue(reply, REQUEST_ID); + result.requestToken = getValue(reply, REQUEST_TOKEN); - Element icsMsg = (Element)(replay.getElementsByTagName(ICS_MESSAGE).item(0)); + Element icsMsg = (Element)(reply.getElementsByTagName(ICS_MESSAGE).item(0)); if (icsMsg != null) { result.icsMessage = getICSMessageReply(icsMsg); } @@ -264,63 +252,69 @@ private static InAppIcsMessageReply getICSMessageReply(Element element) { return icsMessageReply; } + private static InAppPurchaseTotalsReply getPurchaseTotalsReply(Element element) { + InAppPurchaseTotalsReply result = new InAppPurchaseTotalsReply(); + result.currency = getValue(element, PURCHASE_TOTALS_CURRENCY); + return result; + } + -/* private static InAppCcAuthReply getAuthReply(Element element) { - - InAppCcAuthReply ccAuthReply = new InAppCcAuthReply(); - - ccAuthReply.accountBalance = getValue(element, CC_AUTH_REPLAY_ACCOUNT_BALANCE); - ccAuthReply.accountBalanceCurrency = getValue(element, CC_AUTH_REPLAY_ACCOUNT_BALANCE_CURRENCY); - ccAuthReply.accountBalanceSign = getValue(element, CC_AUTH_REPLAY_ACCOUNT_BALANCE_SIGN); - ccAuthReply.affluenceIndicator = getValue(element, CC_AUTH_REPLAY_AFFLUENCE_INDICATOR); - ccAuthReply.amount = getValue(element, CC_AUTH_REPLAY_AMOUNT); - ccAuthReply.authorizationCode = getValue(element, CC_AUTH_REPLAY_AUTHORIZATION_CODE); - ccAuthReply.authorizedDateTime = getValue(element, CC_AUTH_REPLAY_AUTHORIZED_DATE_TIME); - ccAuthReply.avsCode = getValue(element, CC_AUTH_REPLAY_AVS_CODE); - ccAuthReply.avsCodeRaw = getValue(element, CC_AUTH_REPLAY_AVS_CODE_RAW); - ccAuthReply.cardCategory = getValue(element, CC_AUTH_REPLAY_CARD_CATEGORY); - ccAuthReply.cardCommercial = getValue(element, CC_AUTH_REPLAY_CARD_COMMERCIAL); - ccAuthReply.cardGroup = getValue(element, CC_AUTH_REPLAY_CARD_GROUP); - ccAuthReply.cardHealthcare = getValue(element, CC_AUTH_REPLAY_CARD_HEALTHCARE); - ccAuthReply.cardIssuerCountry = getValue(element, CC_AUTH_REPLAY_CARD_ISSUER_COUNTRY); - ccAuthReply.cardLevel3Eligible = getValue(element, CC_AUTH_REPLAY_CARD_LEVEL_3_ELIGIBLE); - ccAuthReply.cardPayroll = getValue(element, CC_AUTH_REPLAY_CARD_PAYROLL); - ccAuthReply.cardPINlessDebit = getValue(element, CC_AUTH_REPLAY_CARD_PINLESS_DEBIT); - ccAuthReply.cardPrepaid = getValue(element, CC_AUTH_REPLAY_CARD_PREPAID); - ccAuthReply.cardRegulated = getValue(element, CC_AUTH_REPLAY_CARD_REGULATED); - ccAuthReply.cardSignatureDebit = getValue(element, CC_AUTH_REPLAY_CARD_SIGNATURE_DEBIT); - ccAuthReply.cavvResponseCode = getValue(element, CC_AUTH_REPLAY_CAVV_RESPONSE_CODE); - ccAuthReply.cavvResponseCodeRaw = getValue(element, CC_AUTH_REPLAY_CAVV_RESPONSE_CODE_RAW); - ccAuthReply.cvCode = getValue(element, CC_AUTH_REPLAY_CV_CODE); - ccAuthReply.cvCodeRaw = getValue(element, CC_AUTH_REPLAY_CV_CODE_RAW); - ccAuthReply.evEmail = getValue(element, CC_AUTH_REPLAY_EV_EMAIL); - ccAuthReply.evEmailRaw = getValue(element, CC_AUTH_REPLAY_EV_EMAIL_RAW); - ccAuthReply.evName = getValue(element, CC_AUTH_REPLAY_EV_NAME); - ccAuthReply.evNameRaw = getValue(element, CC_AUTH_REPLAY_EV_NAME_RAW); - ccAuthReply.evPhoneNumber = getValue(element, CC_AUTH_REPLAY_EV_PHONE_NUMBER); - ccAuthReply.evPhoneNumberRaw = getValue(element, CC_AUTH_REPLAY_EV_PHONE_NUMBER_RAW); - ccAuthReply.evPostalCode = getValue(element, CC_AUTH_REPLAY_EV_POSTAL_CODE); - ccAuthReply.evPostalCodeRaw = getValue(element, CC_AUTH_REPLAY_EV_POSTAL_CODE_RAW); - ccAuthReply.evStreet = getValue(element, CC_AUTH_REPLAY_EV_STREET); - ccAuthReply.evStreetRaw = getValue(element, CC_AUTH_REPLAY_EV_STREET_RAW); - ccAuthReply.forwardCode = getValue(element, CC_AUTH_REPLAY_FORWARD_CODE); - ccAuthReply.merchantAdviceCode = getValue(element, CC_AUTH_REPLAY_MERCHANT_ADVICE_CODE); - ccAuthReply.merchantAdviceCodeRaw = getValue(element, CC_AUTH_REPLAY_MERCHANT_ADVICE_CODE_RAW); - ccAuthReply.ownerMerchantID = getValue(element, CC_AUTH_REPLAY_OWNER_MERCHANT_ID); - ccAuthReply.paymentNetworkTransactionID = getValue(element, CC_AUTH_REPLAY_PAYMENT_NETWORK_TRANSACTION_ID); - ccAuthReply.personalIDCode = getValue(element, CC_AUTH_REPLAY_PERSONAL_ID_CODE); - ccAuthReply.posData = getValue(element, CC_AUTH_REPLAY_POS_DATE); - ccAuthReply.processorResponse = getValue(element, CC_AUTH_REPLAY_PROCESSOR_RESPONSE); - ccAuthReply.processorTransactionID = getValue(element, CC_AUTH_REPLAY_PROCESSOR_TRANSACTION_ID); - ccAuthReply.reasonCode = getValue(element, CC_AUTH_REPLAY_REASON_CODE); - ccAuthReply.reconciliationID = getValue(element, CC_AUTH_REPLAY_RECONCILATION_ID); - ccAuthReply.referralResponseNumber = getValue(element, CC_AUTH_REPLAY_REFERRAL_RESPONSE_NUMBER); - ccAuthReply.requestAmount = getValue(element, CC_AUTH_REPLAY_REQUEST_AMOUNT); - ccAuthReply.requestCurrency = getValue(element, CC_AUTH_REPLAY_REQUEST_CURRENCY); - ccAuthReply.transactionID = getValue(element, CC_AUTH_REPLAY_TRANSACTION_ID); + private static InAppCcAndroidPayAuthReply getAndroidPayAuthReply(Element element) { + + InAppCcAndroidPayAuthReply ccAuthReply = new InAppCcAndroidPayAuthReply(); + + ccAuthReply.accountBalance = getValue(element, CC_AUTH_REPLY_ACCOUNT_BALANCE); + ccAuthReply.accountBalanceCurrency = getValue(element, CC_AUTH_REPLY_ACCOUNT_BALANCE_CURRENCY); + ccAuthReply.accountBalanceSign = getValue(element, CC_AUTH_REPLY_ACCOUNT_BALANCE_SIGN); + ccAuthReply.affluenceIndicator = getValue(element, CC_AUTH_REPLY_AFFLUENCE_INDICATOR); + ccAuthReply.amount = getValue(element, CC_AUTH_REPLY_AMOUNT); + ccAuthReply.authorizationCode = getValue(element, CC_AUTH_REPLY_AUTHORIZATION_CODE); + ccAuthReply.authorizedDateTime = getValue(element, CC_AUTH_REPLY_AUTHORIZED_DATE_TIME); + ccAuthReply.avsCode = getValue(element, CC_AUTH_REPLY_AVS_CODE); + ccAuthReply.avsCodeRaw = getValue(element, CC_AUTH_REPLY_AVS_CODE_RAW); + ccAuthReply.cardCategory = getValue(element, CC_AUTH_REPLY_CARD_CATEGORY); + ccAuthReply.cardCommercial = getValue(element, CC_AUTH_REPLY_CARD_COMMERCIAL); + ccAuthReply.cardGroup = getValue(element, CC_AUTH_REPLY_CARD_GROUP); + ccAuthReply.cardHealthcare = getValue(element, CC_AUTH_REPLY_CARD_HEALTHCARE); + ccAuthReply.cardIssuerCountry = getValue(element, CC_AUTH_REPLY_CARD_ISSUER_COUNTRY); + ccAuthReply.cardLevel3Eligible = getValue(element, CC_AUTH_REPLY_CARD_LEVEL_3_ELIGIBLE); + ccAuthReply.cardPayroll = getValue(element, CC_AUTH_REPLY_CARD_PAYROLL); + ccAuthReply.cardPINlessDebit = getValue(element, CC_AUTH_REPLY_CARD_PINLESS_DEBIT); + ccAuthReply.cardPrepaid = getValue(element, CC_AUTH_REPLY_CARD_PREPAID); + ccAuthReply.cardRegulated = getValue(element, CC_AUTH_REPLY_CARD_REGULATED); + ccAuthReply.cardSignatureDebit = getValue(element, CC_AUTH_REPLY_CARD_SIGNATURE_DEBIT); + ccAuthReply.cavvResponseCode = getValue(element, CC_AUTH_REPLY_CAVV_RESPONSE_CODE); + ccAuthReply.cavvResponseCodeRaw = getValue(element, CC_AUTH_REPLY_CAVV_RESPONSE_CODE_RAW); + ccAuthReply.cvCode = getValue(element, CC_AUTH_REPLY_CV_CODE); + ccAuthReply.cvCodeRaw = getValue(element, CC_AUTH_REPLY_CV_CODE_RAW); + ccAuthReply.evEmail = getValue(element, CC_AUTH_REPLY_EV_EMAIL); + ccAuthReply.evEmailRaw = getValue(element, CC_AUTH_REPLY_EV_EMAIL_RAW); + ccAuthReply.evName = getValue(element, CC_AUTH_REPLY_EV_NAME); + ccAuthReply.evNameRaw = getValue(element, CC_AUTH_REPLY_EV_NAME_RAW); + ccAuthReply.evPhoneNumber = getValue(element, CC_AUTH_REPLY_EV_PHONE_NUMBER); + ccAuthReply.evPhoneNumberRaw = getValue(element, CC_AUTH_REPLY_EV_PHONE_NUMBER_RAW); + ccAuthReply.evPostalCode = getValue(element, CC_AUTH_REPLY_EV_POSTAL_CODE); + ccAuthReply.evPostalCodeRaw = getValue(element, CC_AUTH_REPLY_EV_POSTAL_CODE_RAW); + ccAuthReply.evStreet = getValue(element, CC_AUTH_REPLY_EV_STREET); + ccAuthReply.evStreetRaw = getValue(element, CC_AUTH_REPLY_EV_STREET_RAW); + ccAuthReply.forwardCode = getValue(element, CC_AUTH_REPLY_FORWARD_CODE); + ccAuthReply.merchantAdviceCode = getValue(element, CC_AUTH_REPLY_MERCHANT_ADVICE_CODE); + ccAuthReply.merchantAdviceCodeRaw = getValue(element, CC_AUTH_REPLY_MERCHANT_ADVICE_CODE_RAW); + ccAuthReply.ownerMerchantID = getValue(element, CC_AUTH_REPLY_OWNER_MERCHANT_ID); + ccAuthReply.paymentNetworkTransactionID = getValue(element, CC_AUTH_REPLY_PAYMENT_NETWORK_TRANSACTION_ID); + ccAuthReply.personalIDCode = getValue(element, CC_AUTH_REPLY_PERSONAL_ID_CODE); + ccAuthReply.posData = getValue(element, CC_AUTH_REPLY_POS_DATE); + ccAuthReply.processorResponse = getValue(element, CC_AUTH_REPLY_PROCESSOR_RESPONSE); + ccAuthReply.processorTransactionID = getValue(element, CC_AUTH_REPLY_PROCESSOR_TRANSACTION_ID); + ccAuthReply.reasonCode = getValue(element, CC_AUTH_REPLY_REASON_CODE); + ccAuthReply.reconciliationID = getValue(element, CC_AUTH_REPLY_RECONCILATION_ID); + ccAuthReply.referralResponseNumber = getValue(element, CC_AUTH_REPLY_REFERRAL_RESPONSE_NUMBER); + ccAuthReply.requestAmount = getValue(element, CC_AUTH_REPLY_REQUEST_AMOUNT); + ccAuthReply.requestCurrency = getValue(element, CC_AUTH_REPLY_REQUEST_CURRENCY); + ccAuthReply.transactionID = getValue(element, CC_AUTH_REPLY_TRANSACTION_ID); return ccAuthReply; - }*/ + } private static InAppCcEncryptedPaymentDataReply getEncryptedPaymentReply(Element element) { From b62cd138a395d34e9f93342d74a3497406cdfd2b Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Tue, 1 Dec 2015 14:24:22 -0800 Subject: [PATCH 6/9] package renamed to com.cybersource.inappsdk --- proguard-rules.pro | 4 +- .../inappsdk/InAppConnectionServiceTest.java | 4 +- src/main/AndroidManifest.xml | 2 +- .../inappsdk/common/SDKCardBrandType.java | 2 +- .../inappsdk/common/SDKCore.java | 5 +-- .../inappsdk/common/SDKCurrency.java | 2 +- .../common/error/SDKEncryptError.java | 2 +- .../inappsdk/common/error/SDKError.java | 5 +-- .../inappsdk/common/error/SDKErrorType.java | 2 +- .../common/error/SDKGatewayError.java | 2 +- .../common/error/SDKInternalError.java | 2 +- .../exceptions/SDKInvalidCardException.java | 2 +- .../inappsdk/common/utils/SDKCardUtils.java | 6 +-- .../inappsdk/common/utils/SDKMathUtils.java | 2 +- .../inappsdk/common/utils/SDKUtils.java | 9 ++--- .../inapp/InAppConnectionService.java | 27 +++++++------- .../connectors/inapp/InAppGateway.java | 18 ++++----- .../connectors/inapp/InAppSDKApiClient.java | 13 +++---- .../inapp/connection/InAppConnectionData.java | 2 +- .../inapp/datamodel/InAppBaseModel.java | 4 +- .../inapp/datamodel/InAppBillTo.java | 4 +- .../connectors/inapp/datamodel/InAppCard.java | 6 +-- .../datamodel/InAppEncryptedPayment.java | 4 +- .../connectors/inapp/datamodel/InAppItem.java | 4 +- .../inapp/datamodel/InAppPurchaseTotals.java | 4 +- .../envelopes/InAppAndroidPayEnvelope.java | 37 +++++++++---------- .../inapp/envelopes/InAppBaseEnvelope.java | 20 ++++------ .../inapp/envelopes/InAppEncryptEnvelope.java | 26 ++++++------- .../receivers/TransactionResultReceiver.java | 2 +- .../responses/InAppCcAndroidPayAuthReply.java | 2 +- .../InAppCcEncryptedPaymentDataReply.java | 2 +- .../inapp/responses/InAppIcsMessageReply.java | 2 +- .../responses/InAppPurchaseTotalsReply.java | 2 +- .../inapp/responses/InAppResponseFields.java | 2 +- .../inapp/responses/InAppResponseObject.java | 18 ++++----- .../inapp/services/InAppAuthService.java | 4 +- .../inapp/services/InAppBaseService.java | 4 +- .../InAppEncryptPaymentDataService.java | 4 +- ...ppEnvelopeAndroidPayTransactionObject.java | 14 +++---- ...ppEnvelopeEncryptionTransactionObject.java | 10 ++--- .../InAppEnvelopeTransactionObject.java | 4 +- .../InAppAndroidPayTransactionObject.java | 4 +- .../client/InAppEncryptTransactionObject.java | 6 +-- .../transaction/client/InAppTransaction.java | 8 ++-- .../client/InAppTransactionType.java | 2 +- .../inappsdk/datamodel/SDKGateway.java | 6 +-- .../datamodel/SDKGatewayErrorMapping.java | 4 +- .../response/SDKGatewayResponse.java | 5 +-- .../response/SDKGatewayResponseType.java | 2 +- .../response/SDKResponseDecision.java | 2 +- .../response/SDKResponseReasonCode.java | 2 +- .../callbacks/SDKApiConnectionCallback.java | 11 ++---- .../transaction/fields/SDKBillTo.java | 4 +- .../fields/SDKCardAccountNumberType.java | 2 +- .../transaction/fields/SDKCardData.java | 6 +-- .../fields/SDKCardFundingType.java | 2 +- .../fields/SDKCardTokenizationMethod.java | 2 +- .../transaction/fields/SDKLineItem.java | 4 +- .../transaction/fields/SDKPurchaseOrder.java | 8 ++-- .../connection/SDKConnectionConstants.java | 2 +- .../soap/envelope/SDKBaseSoapEnvelope.java | 14 +++---- .../inappsdk/soap/model/SDKXMLAttribute.java | 5 +-- .../inappsdk/soap/model/SDKXMLBase.java | 5 +-- .../inappsdk/soap/model/SDKXMLNVPNode.java | 5 +-- .../inappsdk/soap/model/SDKXMLNode.java | 7 +--- .../inappsdk/soap/model/SDKXMLParentNode.java | 8 +--- .../inappsdk/soap/model/SDKXMLTextNode.java | 5 +-- .../inappsdk/soap/parser/SDKSoapParser.java | 14 +++---- .../common/utils/SDKCardUtilsTest.java | 5 ++- .../inapp/InAppSDKApiClientTest.java | 10 +++-- 70 files changed, 196 insertions(+), 254 deletions(-) rename src/main/java/com/{visa => cybersource}/inappsdk/common/SDKCardBrandType.java (98%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/SDKCore.java (96%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/SDKCurrency.java (95%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/error/SDKEncryptError.java (98%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/error/SDKError.java (90%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/error/SDKErrorType.java (79%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/error/SDKGatewayError.java (99%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/error/SDKInternalError.java (98%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/exceptions/SDKInvalidCardException.java (89%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/utils/SDKCardUtils.java (97%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/utils/SDKMathUtils.java (97%) rename src/main/java/com/{visa => cybersource}/inappsdk/common/utils/SDKUtils.java (98%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/InAppConnectionService.java (89%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/InAppGateway.java (84%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/InAppSDKApiClient.java (93%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/connection/InAppConnectionData.java (91%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java (72%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppBillTo.java (95%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppCard.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java (90%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppItem.java (95%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java (91%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java (80%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java (89%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java (79%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java (96%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java (87%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java (86%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java (77%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppResponseFields.java (99%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/responses/InAppResponseObject.java (96%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/services/InAppAuthService.java (90%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/services/InAppBaseService.java (73%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java (88%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java (82%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java (82%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java (84%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java (76%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java (91%) rename src/main/java/com/{visa => cybersource}/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java (82%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/SDKGateway.java (86%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/SDKGatewayErrorMapping.java (85%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/response/SDKGatewayResponse.java (97%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/response/SDKGatewayResponseType.java (75%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/response/SDKResponseDecision.java (80%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/response/SDKResponseReasonCode.java (99%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java (69%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKBillTo.java (97%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java (86%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKCardData.java (97%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java (90%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java (86%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKLineItem.java (93%) rename src/main/java/com/{visa => cybersource}/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java (93%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/connection/SDKConnectionConstants.java (96%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java (89%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLAttribute.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLBase.java (94%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLNVPNode.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLNode.java (95%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLParentNode.java (93%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/model/SDKXMLTextNode.java (92%) rename src/main/java/com/{visa => cybersource}/inappsdk/soap/parser/SDKSoapParser.java (95%) diff --git a/proguard-rules.pro b/proguard-rules.pro index 121a272..3079a18 100644 --- a/proguard-rules.pro +++ b/proguard-rules.pro @@ -18,14 +18,14 @@ public protected *; } --keep class com.visa.inappsdk.connectors.inapp.InAppGateway +-keep class InAppGateway -keepclassmembernames class * { java.lang.Class class$(java.lang.String); java.lang.Class class$(java.lang.String, boolean); } --keepclassmembers class com.visa.inappsdk.connectors.inapp.InAppSDKApiClient +-keepclassmembers class InAppSDKApiClient -keepclasseswithmembernames,includedescriptorclasses class * { native ; diff --git a/src/androidTest/java/com/visa/inappsdk/InAppConnectionServiceTest.java b/src/androidTest/java/com/visa/inappsdk/InAppConnectionServiceTest.java index ba6c6ed..82cb85c 100644 --- a/src/androidTest/java/com/visa/inappsdk/InAppConnectionServiceTest.java +++ b/src/androidTest/java/com/visa/inappsdk/InAppConnectionServiceTest.java @@ -3,9 +3,7 @@ import android.content.Intent; import android.test.ServiceTestCase; -import com.visa.inappsdk.connectors.inapp.InAppConnectionService; - -import java.lang.ref.WeakReference; +import com.cybersource.inappsdk.connectors.inapp.InAppConnectionService; /** * Created by fzubair on 10/21/2015. diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 10ff01e..2de5a66 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.cybersource.inappsdk" > diff --git a/src/main/java/com/visa/inappsdk/common/SDKCardBrandType.java b/src/main/java/com/cybersource/inappsdk/common/SDKCardBrandType.java similarity index 98% rename from src/main/java/com/visa/inappsdk/common/SDKCardBrandType.java rename to src/main/java/com/cybersource/inappsdk/common/SDKCardBrandType.java index a79c360..f668804 100644 --- a/src/main/java/com/visa/inappsdk/common/SDKCardBrandType.java +++ b/src/main/java/com/cybersource/inappsdk/common/SDKCardBrandType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common; +package com.cybersource.inappsdk.common; /** * Describes Card brand type. diff --git a/src/main/java/com/visa/inappsdk/common/SDKCore.java b/src/main/java/com/cybersource/inappsdk/common/SDKCore.java similarity index 96% rename from src/main/java/com/visa/inappsdk/common/SDKCore.java rename to src/main/java/com/cybersource/inappsdk/common/SDKCore.java index 3df35ad..8a3e97c 100644 --- a/src/main/java/com/visa/inappsdk/common/SDKCore.java +++ b/src/main/java/com/cybersource/inappsdk/common/SDKCore.java @@ -1,13 +1,10 @@ -package com.visa.inappsdk.common; +package com.cybersource.inappsdk.common; -import android.app.Application; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; -import com.visa.inappsdk.datamodel.SDKGateway; - import java.lang.ref.WeakReference; /** diff --git a/src/main/java/com/visa/inappsdk/common/SDKCurrency.java b/src/main/java/com/cybersource/inappsdk/common/SDKCurrency.java similarity index 95% rename from src/main/java/com/visa/inappsdk/common/SDKCurrency.java rename to src/main/java/com/cybersource/inappsdk/common/SDKCurrency.java index 8f826b2..7fb8d5d 100644 --- a/src/main/java/com/visa/inappsdk/common/SDKCurrency.java +++ b/src/main/java/com/cybersource/inappsdk/common/SDKCurrency.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common; +package com.cybersource.inappsdk.common; /** * Enumeration describing available currencies: diff --git a/src/main/java/com/visa/inappsdk/common/error/SDKEncryptError.java b/src/main/java/com/cybersource/inappsdk/common/error/SDKEncryptError.java similarity index 98% rename from src/main/java/com/visa/inappsdk/common/error/SDKEncryptError.java rename to src/main/java/com/cybersource/inappsdk/common/error/SDKEncryptError.java index 436de15..0cb6bb3 100644 --- a/src/main/java/com/visa/inappsdk/common/error/SDKEncryptError.java +++ b/src/main/java/com/cybersource/inappsdk/common/error/SDKEncryptError.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.error; +package com.cybersource.inappsdk.common.error; /** * Describes all error types, which can occurs during encryption. diff --git a/src/main/java/com/visa/inappsdk/common/error/SDKError.java b/src/main/java/com/cybersource/inappsdk/common/error/SDKError.java similarity index 90% rename from src/main/java/com/visa/inappsdk/common/error/SDKError.java rename to src/main/java/com/cybersource/inappsdk/common/error/SDKError.java index e7d914e..4395010 100644 --- a/src/main/java/com/visa/inappsdk/common/error/SDKError.java +++ b/src/main/java/com/cybersource/inappsdk/common/error/SDKError.java @@ -1,7 +1,4 @@ -package com.visa.inappsdk.common.error; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.common.error; import java.io.Serializable; diff --git a/src/main/java/com/visa/inappsdk/common/error/SDKErrorType.java b/src/main/java/com/cybersource/inappsdk/common/error/SDKErrorType.java similarity index 79% rename from src/main/java/com/visa/inappsdk/common/error/SDKErrorType.java rename to src/main/java/com/cybersource/inappsdk/common/error/SDKErrorType.java index 1d7af09..1c63d51 100644 --- a/src/main/java/com/visa/inappsdk/common/error/SDKErrorType.java +++ b/src/main/java/com/cybersource/inappsdk/common/error/SDKErrorType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.error; +package com.cybersource.inappsdk.common.error; /** * Describes all error types. diff --git a/src/main/java/com/visa/inappsdk/common/error/SDKGatewayError.java b/src/main/java/com/cybersource/inappsdk/common/error/SDKGatewayError.java similarity index 99% rename from src/main/java/com/visa/inappsdk/common/error/SDKGatewayError.java rename to src/main/java/com/cybersource/inappsdk/common/error/SDKGatewayError.java index 222549f..8e53a05 100644 --- a/src/main/java/com/visa/inappsdk/common/error/SDKGatewayError.java +++ b/src/main/java/com/cybersource/inappsdk/common/error/SDKGatewayError.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.error; +package com.cybersource.inappsdk.common.error; /** * Describes all error types, which can occurs during payment transactions. diff --git a/src/main/java/com/visa/inappsdk/common/error/SDKInternalError.java b/src/main/java/com/cybersource/inappsdk/common/error/SDKInternalError.java similarity index 98% rename from src/main/java/com/visa/inappsdk/common/error/SDKInternalError.java rename to src/main/java/com/cybersource/inappsdk/common/error/SDKInternalError.java index 2d2b3c8..467bc4f 100644 --- a/src/main/java/com/visa/inappsdk/common/error/SDKInternalError.java +++ b/src/main/java/com/cybersource/inappsdk/common/error/SDKInternalError.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.error; +package com.cybersource.inappsdk.common.error; /** * Created by fzubair on 10/7/2015. diff --git a/src/main/java/com/visa/inappsdk/common/exceptions/SDKInvalidCardException.java b/src/main/java/com/cybersource/inappsdk/common/exceptions/SDKInvalidCardException.java similarity index 89% rename from src/main/java/com/visa/inappsdk/common/exceptions/SDKInvalidCardException.java rename to src/main/java/com/cybersource/inappsdk/common/exceptions/SDKInvalidCardException.java index 4879e4b..97ec126 100644 --- a/src/main/java/com/visa/inappsdk/common/exceptions/SDKInvalidCardException.java +++ b/src/main/java/com/cybersource/inappsdk/common/exceptions/SDKInvalidCardException.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.exceptions; +package com.cybersource.inappsdk.common.exceptions; /** * Created by fzubair on 10/19/2015. diff --git a/src/main/java/com/visa/inappsdk/common/utils/SDKCardUtils.java b/src/main/java/com/cybersource/inappsdk/common/utils/SDKCardUtils.java similarity index 97% rename from src/main/java/com/visa/inappsdk/common/utils/SDKCardUtils.java rename to src/main/java/com/cybersource/inappsdk/common/utils/SDKCardUtils.java index 1b095a4..bf56c2a 100644 --- a/src/main/java/com/visa/inappsdk/common/utils/SDKCardUtils.java +++ b/src/main/java/com/cybersource/inappsdk/common/utils/SDKCardUtils.java @@ -1,7 +1,7 @@ -package com.visa.inappsdk.common.utils; +package com.cybersource.inappsdk.common.utils; -import com.visa.inappsdk.common.SDKCardBrandType; -import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; +import com.cybersource.inappsdk.common.SDKCardBrandType; +import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; import java.util.Calendar; diff --git a/src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java b/src/main/java/com/cybersource/inappsdk/common/utils/SDKMathUtils.java similarity index 97% rename from src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java rename to src/main/java/com/cybersource/inappsdk/common/utils/SDKMathUtils.java index 7b097fb..e72b5c9 100644 --- a/src/main/java/com/visa/inappsdk/common/utils/SDKMathUtils.java +++ b/src/main/java/com/cybersource/inappsdk/common/utils/SDKMathUtils.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.common.utils; +package com.cybersource.inappsdk.common.utils; import java.math.BigDecimal; diff --git a/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java b/src/main/java/com/cybersource/inappsdk/common/utils/SDKUtils.java similarity index 98% rename from src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java rename to src/main/java/com/cybersource/inappsdk/common/utils/SDKUtils.java index 1daa160..f88e78b 100644 --- a/src/main/java/com/visa/inappsdk/common/utils/SDKUtils.java +++ b/src/main/java/com/cybersource/inappsdk/common/utils/SDKUtils.java @@ -1,15 +1,12 @@ -package com.visa.inappsdk.common.utils; +package com.cybersource.inappsdk.common.utils; import android.text.TextUtils; import android.util.Base64; -import com.visa.inappsdk.common.SDKCore; -import com.visa.inappsdk.common.SDKCurrency; -import com.visa.inappsdk.connectors.inapp.InAppSDKApiClient; +import com.cybersource.inappsdk.common.SDKCore; +import com.cybersource.inappsdk.common.SDKCurrency; import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.params.HttpConnectionParams; -import org.apache.http.params.HttpParams; import java.io.BufferedInputStream; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppConnectionService.java similarity index 89% rename from src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppConnectionService.java index 0395137..113d28c 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppConnectionService.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppConnectionService.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp; +package com.cybersource.inappsdk.connectors.inapp; import android.app.IntentService; import android.content.Intent; @@ -7,19 +7,18 @@ import android.os.ResultReceiver; import android.util.Xml; -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.common.error.SDKGatewayError; -import com.visa.inappsdk.common.error.SDKInternalError; -import com.visa.inappsdk.common.utils.SDKUtils; -import com.visa.inappsdk.connectors.inapp.connection.InAppConnectionData; -import com.visa.inappsdk.connectors.inapp.envelopes.InAppBaseEnvelope; -import com.visa.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; -import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; -import com.visa.inappsdk.datamodel.SDKGatewayErrorMapping; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.soap.connection.SDKConnectionConstants; -import com.visa.inappsdk.soap.parser.SDKSoapParser; +import com.cybersource.inappsdk.connectors.inapp.envelopes.InAppBaseEnvelope; +import com.cybersource.inappsdk.soap.connection.SDKConnectionConstants; +import com.cybersource.inappsdk.soap.parser.SDKSoapParser; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.common.error.SDKGatewayError; +import com.cybersource.inappsdk.common.error.SDKInternalError; +import com.cybersource.inappsdk.common.utils.SDKUtils; +import com.cybersource.inappsdk.connectors.inapp.connection.InAppConnectionData; +import com.cybersource.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; +import com.cybersource.inappsdk.connectors.inapp.responses.InAppResponseObject; +import com.cybersource.inappsdk.datamodel.SDKGatewayErrorMapping; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponse; import java.io.BufferedWriter; import java.io.IOException; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppGateway.java similarity index 84% rename from src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppGateway.java index 001239a..cefbab6 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppGateway.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppGateway.java @@ -1,16 +1,16 @@ -package com.visa.inappsdk.connectors.inapp; +package com.cybersource.inappsdk.connectors.inapp; import android.os.Bundle; import android.os.Handler; -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.connectors.inapp.envelopes.InAppAndroidPayEnvelope; -import com.visa.inappsdk.connectors.inapp.envelopes.InAppEncryptEnvelope; -import com.visa.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; -import com.visa.inappsdk.datamodel.SDKGateway; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; +import com.cybersource.inappsdk.connectors.inapp.envelopes.InAppAndroidPayEnvelope; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.datamodel.SDKGateway; +import com.cybersource.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.connectors.inapp.envelopes.InAppEncryptEnvelope; +import com.cybersource.inappsdk.connectors.inapp.receivers.TransactionResultReceiver; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponse; /** * Created by fzubair on 10/6/2015. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppSDKApiClient.java similarity index 93% rename from src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppSDKApiClient.java index 496acc7..dcb3e5f 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClient.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/InAppSDKApiClient.java @@ -1,13 +1,12 @@ -package com.visa.inappsdk.connectors.inapp; +package com.cybersource.inappsdk.connectors.inapp; import android.content.Context; -import android.webkit.URLUtil; -import com.visa.inappsdk.common.SDKCore; -import com.visa.inappsdk.common.utils.SDKUtils; -import com.visa.inappsdk.connectors.inapp.connection.InAppConnectionData; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; +import com.cybersource.inappsdk.common.SDKCore; +import com.cybersource.inappsdk.common.utils.SDKUtils; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.connectors.inapp.connection.InAppConnectionData; +import com.cybersource.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; import java.lang.ref.WeakReference; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/connection/InAppConnectionData.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/connection/InAppConnectionData.java similarity index 91% rename from src/main/java/com/visa/inappsdk/connectors/inapp/connection/InAppConnectionData.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/connection/InAppConnectionData.java index 88d0bf5..0e49fad 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/connection/InAppConnectionData.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/connection/InAppConnectionData.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.connection; +package com.cybersource.inappsdk.connectors.inapp.connection; /** * Contains data set for all connections to CyberSource Servers diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java similarity index 72% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java index 9ec07d6..f8d7995 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBaseModel.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Created by fzubair on 10/7/2015. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBillTo.java similarity index 95% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBillTo.java index 9780c74..6b5a795 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppBillTo.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppBillTo.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Created by fzubair on 11/16/2015. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppCard.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppCard.java similarity index 92% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppCard.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppCard.java index 4ac0b57..69064e9 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppCard.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppCard.java @@ -1,7 +1,7 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.datamodel.transaction.fields.SDKCardAccountNumberType; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKCardAccountNumberType; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Describes fields in "card" object in WebService request diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java similarity index 90% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java index 03ef730..acbb83a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Created by fzubair on 11/18/2015. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppItem.java similarity index 95% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppItem.java index 98f1a3e..b3a0628 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppItem.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppItem.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Describes fields in "item" object in WebService request diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java similarity index 91% rename from src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java index 6989841..8e16e08 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppPurchaseTotals.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.datamodel; +package com.cybersource.inappsdk.connectors.inapp.datamodel; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Describes fields in "purchaseTotals" object in WebService request diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java similarity index 80% rename from src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java index 0e1f70c..7a7dea7 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppAndroidPayEnvelope.java @@ -1,28 +1,25 @@ -package com.visa.inappsdk.connectors.inapp.envelopes; - -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.common.utils.SDKUtils; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppItem; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; -import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; -import com.visa.inappsdk.connectors.inapp.services.InAppAuthService; -import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeAndroidPayTransactionObject; -import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; -import com.visa.inappsdk.datamodel.transaction.fields.SDKLineItem; -import com.visa.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +package com.cybersource.inappsdk.connectors.inapp.envelopes; + +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppItem; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; +import com.cybersource.inappsdk.connectors.inapp.services.InAppAuthService; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponseType; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.common.utils.SDKUtils; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; +import com.cybersource.inappsdk.connectors.inapp.responses.InAppResponseObject; +import com.cybersource.inappsdk.connectors.inapp.transaction.InAppEnvelopeAndroidPayTransactionObject; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKBillTo; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKLineItem; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import org.json.JSONException; import org.json.JSONObject; import java.io.InputStream; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java similarity index 89% rename from src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java index 808a995..808db04 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppBaseEnvelope.java @@ -1,18 +1,14 @@ -package com.visa.inappsdk.connectors.inapp.envelopes; +package com.cybersource.inappsdk.connectors.inapp.envelopes; -import android.os.Parcel; -import android.os.Parcelable; - -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.connectors.inapp.InAppSDKApiClient; -import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.soap.envelope.SDKBaseSoapEnvelope; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; -import com.visa.inappsdk.soap.model.SDKXMLTextNode; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponseType; +import com.cybersource.inappsdk.soap.model.SDKXMLTextNode; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.connectors.inapp.InAppSDKApiClient; +import com.cybersource.inappsdk.connectors.inapp.responses.InAppResponseObject; +import com.cybersource.inappsdk.soap.envelope.SDKBaseSoapEnvelope; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import java.io.InputStream; -import java.io.Serializable; /** * Created by fzubair on 10/7/2015. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java similarity index 79% rename from src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java index b7eaca1..a0a9ec8 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/envelopes/InAppEncryptEnvelope.java @@ -1,16 +1,16 @@ -package com.visa.inappsdk.connectors.inapp.envelopes; - -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; -import com.visa.inappsdk.connectors.inapp.responses.InAppResponseObject; -import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; -import com.visa.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; -import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +package com.cybersource.inappsdk.connectors.inapp.envelopes; + +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppCard; +import com.cybersource.inappsdk.connectors.inapp.responses.InAppResponseObject; +import com.cybersource.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; +import com.cybersource.inappsdk.connectors.inapp.transaction.InAppEnvelopeEncryptionTransactionObject; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponseType; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKBillTo; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import java.io.InputStream; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java similarity index 92% rename from src/main/java/com/visa/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java index 9d20fdc..4723199 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/receivers/TransactionResultReceiver.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.receivers; +package com.cybersource.inappsdk.connectors.inapp.receivers; import android.os.Bundle; import android.os.Handler; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java similarity index 96% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java index 613cb0c..2faaa35 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcAndroidPayAuthReply.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; /** * Object InAppCcAuthReply stores all possible data of object diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java similarity index 87% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java index 7edbb10..ea61c95 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppCcEncryptedPaymentDataReply.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; /** * Object InAppCcEncryptedPaymentReply stores all possible data of object diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java similarity index 86% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java index 63343c5..a5e5e7a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppIcsMessageReply.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; /** * Object InAppIcsMessageReply stores all possible data of object diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java similarity index 77% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java index e2c07de..7d07dcf 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppPurchaseTotalsReply.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; /** * Object VMposCyberSourcePurchaseTotalsReplay appears in every type of response diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseFields.java similarity index 99% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseFields.java index 07255b2..604ff38 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseFields.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseFields.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; /** * Contains all possible fields names in every object of CyberSource Gateway diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java similarity index 96% rename from src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java index 41e85d0..6321e9e 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/responses/InAppResponseObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java @@ -1,15 +1,15 @@ -package com.visa.inappsdk.connectors.inapp.responses; +package com.cybersource.inappsdk.connectors.inapp.responses; import android.util.Log; -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.common.error.SDKGatewayError; -import com.visa.inappsdk.common.error.SDKInternalError; -import com.visa.inappsdk.common.utils.SDKUtils; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponseType; -import com.visa.inappsdk.datamodel.response.SDKResponseDecision; -import com.visa.inappsdk.datamodel.response.SDKResponseReasonCode; +import com.cybersource.inappsdk.common.error.SDKGatewayError; +import com.cybersource.inappsdk.common.error.SDKInternalError; +import com.cybersource.inappsdk.common.utils.SDKUtils; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponseType; +import com.cybersource.inappsdk.datamodel.response.SDKResponseDecision; +import com.cybersource.inappsdk.datamodel.response.SDKResponseReasonCode; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponse; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppAuthService.java similarity index 90% rename from src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppAuthService.java index 8af691f..d784e7a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppAuthService.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppAuthService.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.services; +package com.cybersource.inappsdk.connectors.inapp.services; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Describes fields of "ccAuthService" object in WebService request diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppBaseService.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppBaseService.java similarity index 73% rename from src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppBaseService.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppBaseService.java index b5edc03..e5578ec 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppBaseService.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppBaseService.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.services; +package com.cybersource.inappsdk.connectors.inapp.services; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java similarity index 88% rename from src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java index ac4220e..1afad7d 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/services/InAppEncryptPaymentDataService.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.services; +package com.cybersource.inappsdk.connectors.inapp.services; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; /** * Describes fields of "encryptPaymentDataService" object in WebService request diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java similarity index 82% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java index db9da75..5a9c0d0 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeAndroidPayTransactionObject.java @@ -1,11 +1,11 @@ -package com.visa.inappsdk.connectors.inapp.transaction; +package com.cybersource.inappsdk.connectors.inapp.transaction; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppItem; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; -import com.visa.inappsdk.connectors.inapp.services.InAppAuthService; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppItem; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppPurchaseTotals; +import com.cybersource.inappsdk.connectors.inapp.services.InAppAuthService; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppEncryptedPayment; import java.util.List; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java similarity index 82% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java index 0eb705c..90bfbd1 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeEncryptionTransactionObject.java @@ -1,9 +1,9 @@ -package com.visa.inappsdk.connectors.inapp.transaction; +package com.cybersource.inappsdk.connectors.inapp.transaction; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppBillTo; -import com.visa.inappsdk.connectors.inapp.datamodel.InAppCard; -import com.visa.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppBillTo; +import com.cybersource.inappsdk.connectors.inapp.datamodel.InAppCard; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.connectors.inapp.services.InAppEncryptPaymentDataService; /** * Contains payment data that will be send to WebService in request body; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java similarity index 92% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java index 371a850..a13a531 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/InAppEnvelopeTransactionObject.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.transaction; +package com.cybersource.inappsdk.connectors.inapp.transaction; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import java.util.HashMap; diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java similarity index 84% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java index 74ce94b..0e72157 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppAndroidPayTransactionObject.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.connectors.inapp.transaction.client; +package com.cybersource.inappsdk.connectors.inapp.transaction.client; -import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.IN_APP_TRANSACTION_ANDROID_PAY; +import static com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.IN_APP_TRANSACTION_ANDROID_PAY; /** * Provides data for Android Pay transaction diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java similarity index 76% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java index 5f9a28e..f79d50a 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppEncryptTransactionObject.java @@ -1,6 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.transaction.client; - -import static com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType.IN_APP_TRANSACTION_ENCRYPTION; +package com.cybersource.inappsdk.connectors.inapp.transaction.client; /** * Provides data for Encrypt transaction @@ -22,7 +20,7 @@ private InAppEncryptTransactionObject(Builder builder) public static class Builder extends InAppTransaction.Builder{ public Builder(){ - this.transactionType = IN_APP_TRANSACTION_ENCRYPTION; + this.transactionType = InAppTransactionType.IN_APP_TRANSACTION_ENCRYPTION; this.merchantReferenceCode = Long.toString(System.currentTimeMillis()); } diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java similarity index 91% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java index c6d152e..0a871e4 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransaction.java @@ -1,8 +1,8 @@ -package com.visa.inappsdk.connectors.inapp.transaction.client; +package com.cybersource.inappsdk.connectors.inapp.transaction.client; -import com.visa.inappsdk.datamodel.transaction.fields.SDKBillTo; -import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; -import com.visa.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKBillTo; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; /** * This class represents a transaction that is sent to the server. diff --git a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java similarity index 82% rename from src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java rename to src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java index b448cde..c3d4b73 100644 --- a/src/main/java/com/visa/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/transaction/client/InAppTransactionType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.connectors.inapp.transaction.client; +package com.cybersource.inappsdk.connectors.inapp.transaction.client; /** * Enumeration used to indicate the transaction type. Possible states: diff --git a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java b/src/main/java/com/cybersource/inappsdk/datamodel/SDKGateway.java similarity index 86% rename from src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java rename to src/main/java/com/cybersource/inappsdk/datamodel/SDKGateway.java index d1f92ac..14325a7 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/SDKGateway.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/SDKGateway.java @@ -1,7 +1,7 @@ -package com.visa.inappsdk.datamodel; +package com.cybersource.inappsdk.datamodel; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.datamodel.transaction.callbacks.SDKApiConnectionCallback; /** * Abstract Gateway API diff --git a/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java b/src/main/java/com/cybersource/inappsdk/datamodel/SDKGatewayErrorMapping.java similarity index 85% rename from src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java rename to src/main/java/com/cybersource/inappsdk/datamodel/SDKGatewayErrorMapping.java index 4fee376..be51b10 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/SDKGatewayErrorMapping.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/SDKGatewayErrorMapping.java @@ -1,6 +1,6 @@ -package com.visa.inappsdk.datamodel; +package com.cybersource.inappsdk.datamodel; -import com.visa.inappsdk.common.error.SDKGatewayError; +import com.cybersource.inappsdk.common.error.SDKGatewayError; /** * Allows to get @SDKGatewayError from error code. diff --git a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponse.java b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java similarity index 97% rename from src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponse.java rename to src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java index 8c6caa0..e1b1b92 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponse.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java @@ -1,11 +1,8 @@ -package com.visa.inappsdk.datamodel.response; +package com.cybersource.inappsdk.datamodel.response; import android.os.Parcel; import android.os.Parcelable; -import java.math.BigDecimal; -import java.util.HashMap; - /** * Response object of gateway requests * diff --git a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponseType.java similarity index 75% rename from src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java rename to src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponseType.java index 3c18b6f..9af9acf 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/response/SDKGatewayResponseType.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponseType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.response; +package com.cybersource.inappsdk.datamodel.response; /** * Response types for gateway responses diff --git a/src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseDecision.java b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseDecision.java similarity index 80% rename from src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseDecision.java rename to src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseDecision.java index aef61c7..01a17c2 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseDecision.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseDecision.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.response; +package com.cybersource.inappsdk.datamodel.response; /** * This enum describes four possible states of response decision. diff --git a/src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseReasonCode.java b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseReasonCode.java similarity index 99% rename from src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseReasonCode.java rename to src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseReasonCode.java index ea796cd..edb8788 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/response/SDKResponseReasonCode.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKResponseReasonCode.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.response; +package com.cybersource.inappsdk.datamodel.response; /** * public enum SDKResponseReasonCode diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java similarity index 69% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java index 73ae54a..c7b5b8e 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/callbacks/SDKApiConnectionCallback.java @@ -1,12 +1,7 @@ -package com.visa.inappsdk.datamodel.transaction.callbacks; +package com.cybersource.inappsdk.datamodel.transaction.callbacks; -import android.os.Parcel; -import android.os.Parcelable; - -import com.visa.inappsdk.common.error.SDKError; -import com.visa.inappsdk.datamodel.response.SDKGatewayResponse; - -import java.io.Serializable; +import com.cybersource.inappsdk.common.error.SDKError; +import com.cybersource.inappsdk.datamodel.response.SDKGatewayResponse; /** * Provides listeners for gateway transaction events. diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKBillTo.java similarity index 97% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKBillTo.java index eb34ae8..93ee517 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKBillTo.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKBillTo.java @@ -1,6 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction.fields; - -import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; +package com.cybersource.inappsdk.datamodel.transaction.fields; /** * Created by fzubair on 11/16/2015. diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java similarity index 86% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java index e911d4d..1fe7cad 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardAccountNumberType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction.fields; +package com.cybersource.inappsdk.datamodel.transaction.fields; /** * /** diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardData.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardData.java similarity index 97% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardData.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardData.java index 2313694..bef91cd 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardData.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardData.java @@ -1,7 +1,7 @@ -package com.visa.inappsdk.datamodel.transaction.fields; +package com.cybersource.inappsdk.datamodel.transaction.fields; -import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; -import com.visa.inappsdk.common.utils.SDKCardUtils; +import com.cybersource.inappsdk.common.utils.SDKCardUtils; +import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; /** * This class represents the manual card entry. diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java similarity index 90% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java index b2ace49..7956083 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardFundingType.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction.fields; +package com.cybersource.inappsdk.datamodel.transaction.fields; /** * Enumeration used to indicate the card funding type. Possible states: diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java similarity index 86% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java index 91d89e1..c3ded4e 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKCardTokenizationMethod.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction.fields; +package com.cybersource.inappsdk.datamodel.transaction.fields; /** *
    diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKLineItem.java similarity index 93% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKLineItem.java index 5a85f3c..11d1af9 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKLineItem.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKLineItem.java @@ -1,6 +1,4 @@ -package com.visa.inappsdk.datamodel.transaction.fields; - -import com.visa.inappsdk.common.SDKCurrency; +package com.cybersource.inappsdk.datamodel.transaction.fields; import java.math.BigDecimal; diff --git a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java similarity index 93% rename from src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java rename to src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java index 9ecaadd..b4a2e75 100644 --- a/src/main/java/com/visa/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java @@ -1,7 +1,7 @@ -package com.visa.inappsdk.datamodel.transaction.fields; +package com.cybersource.inappsdk.datamodel.transaction.fields; -import com.visa.inappsdk.common.SDKCurrency; -import com.visa.inappsdk.common.utils.SDKMathUtils; +import com.cybersource.inappsdk.common.SDKCurrency; +import com.cybersource.inappsdk.common.utils.SDKMathUtils; import java.math.BigDecimal; import java.util.List; @@ -101,7 +101,7 @@ public SDKPurchaseOrder build(){ public void updateTotals() { for (SDKLineItem item : items) { subtotalAmount = SDKMathUtils.add(subtotalAmount, - item.getLineItemsPriceForQuantity()); + item.getLineItemsPriceForQuantity()); totalTax = SDKMathUtils.add(totalTax, item.getTaxAmount()); } grandTotalAmount = subtotalAmount; diff --git a/src/main/java/com/visa/inappsdk/soap/connection/SDKConnectionConstants.java b/src/main/java/com/cybersource/inappsdk/soap/connection/SDKConnectionConstants.java similarity index 96% rename from src/main/java/com/visa/inappsdk/soap/connection/SDKConnectionConstants.java rename to src/main/java/com/cybersource/inappsdk/soap/connection/SDKConnectionConstants.java index d0b56b9..2f61dca 100644 --- a/src/main/java/com/visa/inappsdk/soap/connection/SDKConnectionConstants.java +++ b/src/main/java/com/cybersource/inappsdk/soap/connection/SDKConnectionConstants.java @@ -1,4 +1,4 @@ -package com.visa.inappsdk.soap.connection; +package com.cybersource.inappsdk.soap.connection; /** * Interface holding constants related with SOAP and network connection. diff --git a/src/main/java/com/visa/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java b/src/main/java/com/cybersource/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java similarity index 89% rename from src/main/java/com/visa/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java rename to src/main/java/com/cybersource/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java index 3fdc379..b0f7567 100644 --- a/src/main/java/com/visa/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java +++ b/src/main/java/com/cybersource/inappsdk/soap/envelope/SDKBaseSoapEnvelope.java @@ -1,10 +1,6 @@ -package com.visa.inappsdk.soap.envelope; +package com.cybersource.inappsdk.soap.envelope; -import android.os.Parcel; -import android.os.Parcelable; - -import com.visa.inappsdk.soap.model.SDKXMLBase; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import java.io.Serializable; @@ -139,9 +135,9 @@ public void writeToParcel(Parcel dest, int flags) { } public void readFromParcel(Parcel in) { - body = in.readParcelable(com.visa.inappsdk.soap.model.SDKXMLBase.class.getClassLoader()); - header = in.readParcelable(com.visa.inappsdk.soap.model.SDKXMLBase.class.getClassLoader()); - envelopeNode = in.readParcelable(com.visa.inappsdk.soap.model.SDKXMLBase.class.getClassLoader()); + body = in.readParcelable(SDKXMLBase.class.getClassLoader()); + header = in.readParcelable(SDKXMLBase.class.getClassLoader()); + envelopeNode = in.readParcelable(SDKXMLBase.class.getClassLoader()); encoding = in.readString(); } diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLAttribute.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLAttribute.java similarity index 92% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLAttribute.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLAttribute.java index 182fdd2..71c2d56 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLAttribute.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLAttribute.java @@ -1,7 +1,4 @@ -package com.visa.inappsdk.soap.model; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.soap.model; /** * Class representing single XML attribute. diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLBase.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLBase.java similarity index 94% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLBase.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLBase.java index 404c64e..5730139 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLBase.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLBase.java @@ -1,7 +1,4 @@ -package com.visa.inappsdk.soap.model; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.soap.model; import java.io.Serializable; diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNVPNode.java similarity index 92% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNVPNode.java index b1c064a..625c985 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNVPNode.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNVPNode.java @@ -1,7 +1,4 @@ -package com.visa.inappsdk.soap.model; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.soap.model; /** * Class representing single XML NVP text node. diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNode.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNode.java similarity index 95% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLNode.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNode.java index 302a399..e52939f 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLNode.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLNode.java @@ -1,13 +1,8 @@ -package com.visa.inappsdk.soap.model; +package com.cybersource.inappsdk.soap.model; -import android.os.Parcel; -import android.os.Parcelable; - -import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLParentNode.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLParentNode.java similarity index 93% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLParentNode.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLParentNode.java index f70cf5b..1f0b65b 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLParentNode.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLParentNode.java @@ -1,14 +1,8 @@ -package com.visa.inappsdk.soap.model; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.soap.model; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Map; /** * Class representing parent node with sub nodes. diff --git a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLTextNode.java b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLTextNode.java similarity index 92% rename from src/main/java/com/visa/inappsdk/soap/model/SDKXMLTextNode.java rename to src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLTextNode.java index 8071aef..6cbfb3c 100644 --- a/src/main/java/com/visa/inappsdk/soap/model/SDKXMLTextNode.java +++ b/src/main/java/com/cybersource/inappsdk/soap/model/SDKXMLTextNode.java @@ -1,7 +1,4 @@ -package com.visa.inappsdk.soap.model; - -import android.os.Parcel; -import android.os.Parcelable; +package com.cybersource.inappsdk.soap.model; /** * Class representing single XML text node. diff --git a/src/main/java/com/visa/inappsdk/soap/parser/SDKSoapParser.java b/src/main/java/com/cybersource/inappsdk/soap/parser/SDKSoapParser.java similarity index 95% rename from src/main/java/com/visa/inappsdk/soap/parser/SDKSoapParser.java rename to src/main/java/com/cybersource/inappsdk/soap/parser/SDKSoapParser.java index b2ddebb..73ad364 100644 --- a/src/main/java/com/visa/inappsdk/soap/parser/SDKSoapParser.java +++ b/src/main/java/com/cybersource/inappsdk/soap/parser/SDKSoapParser.java @@ -1,13 +1,13 @@ -package com.visa.inappsdk.soap.parser; +package com.cybersource.inappsdk.soap.parser; import android.util.Log; -import com.visa.inappsdk.soap.envelope.SDKBaseSoapEnvelope; -import com.visa.inappsdk.soap.model.SDKXMLAttribute; -import com.visa.inappsdk.soap.model.SDKXMLNVPNode; -import com.visa.inappsdk.soap.model.SDKXMLNode; -import com.visa.inappsdk.soap.model.SDKXMLParentNode; -import com.visa.inappsdk.soap.model.SDKXMLTextNode; +import com.cybersource.inappsdk.soap.model.SDKXMLNVPNode; +import com.cybersource.inappsdk.soap.model.SDKXMLTextNode; +import com.cybersource.inappsdk.soap.envelope.SDKBaseSoapEnvelope; +import com.cybersource.inappsdk.soap.model.SDKXMLAttribute; +import com.cybersource.inappsdk.soap.model.SDKXMLNode; +import com.cybersource.inappsdk.soap.model.SDKXMLParentNode; import java.util.ArrayList; import java.util.Collection; diff --git a/src/test/java/com/visa/inappsdk/common/utils/SDKCardUtilsTest.java b/src/test/java/com/visa/inappsdk/common/utils/SDKCardUtilsTest.java index aecb329..ca4d639 100644 --- a/src/test/java/com/visa/inappsdk/common/utils/SDKCardUtilsTest.java +++ b/src/test/java/com/visa/inappsdk/common/utils/SDKCardUtilsTest.java @@ -1,7 +1,8 @@ package com.visa.inappsdk.common.utils; -import com.visa.inappsdk.common.SDKCardBrandType; -import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; +import com.cybersource.inappsdk.common.SDKCardBrandType; +import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; +import com.cybersource.inappsdk.common.utils.SDKCardUtils; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java index 6b7701d..a42b38d 100644 --- a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java +++ b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java @@ -3,10 +3,12 @@ import android.content.Context; import android.test.mock.MockContext; -import com.visa.inappsdk.common.exceptions.SDKInvalidCardException; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransaction; -import com.visa.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; -import com.visa.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; +import com.cybersource.inappsdk.connectors.inapp.InAppGateway; +import com.cybersource.inappsdk.connectors.inapp.InAppSDKApiClient; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; +import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKCardData; import org.junit.After; import org.junit.Assert; From ec7259c71d0e4202a8a31138f9c8bca79f9b1751 Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Wed, 2 Dec 2015 07:37:42 -0800 Subject: [PATCH 7/9] commented a test case out --- build.gradle | 2 +- .../inappsdk/connectors/inapp/InAppSDKApiClientTest.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 9a7b73a..06fee39 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'com.jfrog.bintray' ext { bintrayRepo = 'maven' - bintrayName = 'inappsdk' + bintrayName = 'cybersource-inapp-android' publishedGroupId = 'com.cybersource' libraryName = 'CYBSInAppSDK' diff --git a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java index a42b38d..2a30244 100644 --- a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java +++ b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java @@ -4,7 +4,6 @@ import android.test.mock.MockContext; import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; -import com.cybersource.inappsdk.connectors.inapp.InAppGateway; import com.cybersource.inappsdk.connectors.inapp.InAppSDKApiClient; import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; @@ -94,11 +93,11 @@ public void testGetEnvironment() throws Exception { assertNotNull(apiClient.getEnvironment()); } - @Test +/* @Test public void testDispose() throws Exception { InAppSDKApiClient.dispose(); assertNull(InAppGateway.getGateway()); - } + }*/ @Test public void testConnect() throws Exception { From ca8577e0995a5538a3bf60b517640617b09abb8e Mon Sep 17 00:00:00 2001 From: Faizan Zubair Date: Tue, 8 Dec 2015 11:24:14 -0800 Subject: [PATCH 8/9] Purchase order update --- .../inapp/responses/InAppResponseObject.java | 55 +++++++++++------ .../response/SDKGatewayResponse.java | 22 +++++-- .../transaction/fields/SDKPurchaseOrder.java | 11 ++-- .../inapp/InAppSDKApiClientTest.java | 59 +++++++++++++++++++ 4 files changed, 120 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java index 6321e9e..849ca34 100644 --- a/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/responses/InAppResponseObject.java @@ -1,5 +1,6 @@ package com.cybersource.inappsdk.connectors.inapp.responses; +import android.text.TextUtils; import android.util.Log; import com.cybersource.inappsdk.common.error.SDKGatewayError; @@ -20,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; +import java.math.BigDecimal; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; @@ -336,33 +338,50 @@ private static InAppCcEncryptedPaymentDataReply getEncryptedPaymentReply(Element return ccEncryptedPaymentReply; } -/* public SDKGatewayResponse convertAuthorizationToGatewayResponse() { + public SDKGatewayResponse convertToGatewayResponse() { + if(ccAuthReply != null) + return convertAuthorizationToGatewayResponse(); + else + return convertEncryptionToGatewayResponse(); + } + + private SDKGatewayResponse convertAuthorizationToGatewayResponse() { String dateTime = null; - if (ccAuthReply != null && ccAuthReply.authorizedDateTime != null) { + if (ccAuthReply != null) { dateTime = ccAuthReply.authorizedDateTime; } - String date = null; - String time = null; + String date = null, time = null; if (dateTime != null) { date = SDKUtils.convertToLocalDate(dateTime); time = SDKUtils.convertToLocalTime(dateTime); } String authCode = (ccAuthReply != null) ? ccAuthReply.authorizationCode : null; - BigDecimal authorizedAmount = BigDecimal.ZERO; + BigDecimal authorizedAmount = BigDecimal.ZERO; - if (!TextUtils.isEmpty(ccAuthReply.amount)) { - authorizedAmount = new BigDecimal(ccAuthReply.amount); + if (ccAuthReply != null && !TextUtils.isEmpty(ccAuthReply.amount)) { + authorizedAmount = new BigDecimal(ccAuthReply.amount); } - return new SDKGatewayResponse(decision, requestID, - SDKResponseReasonCode.getResponseReasonCodeByValueMapping(reasonCode), type, authorizedAmount, - authCode, date, time, ""); - }*/ + SDKResponseReasonCode sdkResponseReasonCode = SDKResponseReasonCode + .getResponseReasonCodeByValueMapping(reasonCode); + + return new SDKGatewayResponse.Builder + (type, sdkResponseReasonCode, requestID, requestToken) + .decision(decision) + .date(date) + .time(time) + .authorizationCode(authCode) + .authorizedAmount(authorizedAmount) + .build(); + } + + private SDKGatewayResponse convertEncryptionToGatewayResponse() { + String dateTime = null; + if(ccEncryptedPaymentReply != null) + dateTime = ccEncryptedPaymentReply.requestDateTime; - public SDKGatewayResponse convertToGatewayResponse() { - String dateTime = ccEncryptedPaymentReply.requestDateTime; String date = null, time = null; if (dateTime != null) { date = SDKUtils.convertToLocalDate(dateTime); @@ -374,10 +393,10 @@ public SDKGatewayResponse convertToGatewayResponse() { return new SDKGatewayResponse.Builder (type, sdkResponseReasonCode, requestID, requestToken) - .setDecision(decision) - .setDate(date) - .setTime(time) - .setEncryptedPaymentData(ccEncryptedPaymentReply.data) + .decision(decision) + .date(date) + .time(time) + .encryptedPaymentData(ccEncryptedPaymentReply.data) .build(); } @@ -387,7 +406,7 @@ public SDKGatewayResponse convertNVPToGatewayResponse(InAppResponseObject result SDKGatewayResponse response = new SDKGatewayResponse.Builder (type, sdkResponseReasonCode, result.requestID, result.requestToken) - .setDecision(result.decision) + .decision(result.decision) .build(); return response; } diff --git a/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java index e1b1b92..3d1bc10 100644 --- a/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/response/SDKGatewayResponse.java @@ -3,6 +3,8 @@ import android.os.Parcel; import android.os.Parcelable; +import java.math.BigDecimal; + /** * Response object of gateway requests * @@ -16,6 +18,7 @@ public class SDKGatewayResponse implements Parcelable{ private final String requestToken; private final SDKGatewayResponseType type; private final String authorizationCode; + private final BigDecimal authorizedAmount; private final String date; private final String time; private final String encryptedPaymentData; @@ -27,6 +30,7 @@ private SDKGatewayResponse(Builder builder) { this.requestToken = builder.requestToken; this.type = builder.type; this.authorizationCode = builder.authorizationCode; + this.authorizedAmount = builder.authorizedAmount; this.date = builder.date; this.time = builder.time; this.encryptedPaymentData = builder.encryptedPaymentData; @@ -80,6 +84,7 @@ private SDKGatewayResponse(Parcel in){ this.requestToken = in.readString(); this.type = (SDKGatewayResponseType) in.readSerializable(); this.authorizationCode = in.readString(); + this.authorizedAmount = BigDecimal.valueOf(in.readDouble()); this.date = in.readString(); this.time = in.readString(); this.encryptedPaymentData = in.readString(); @@ -98,6 +103,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeString(requestToken); dest.writeSerializable(type); dest.writeString(authorizationCode); + dest.writeDouble(authorizedAmount.doubleValue()); dest.writeString(date); dest.writeString(time); dest.writeString(encryptedPaymentData); @@ -123,6 +129,7 @@ public static class Builder { private final String requestToken; private SDKResponseDecision decision; private String authorizationCode; + private BigDecimal authorizedAmount; private String date; private String time; private String encryptedPaymentData; @@ -134,27 +141,32 @@ public Builder(SDKGatewayResponseType type, SDKResponseReasonCode reasonCode, St this.requestToken = requestToken; } - public SDKGatewayResponse.Builder setTime(String time) { + public SDKGatewayResponse.Builder time(String time) { this.time = time; return this; } - public SDKGatewayResponse.Builder setAuthorizationCode(String authorizationCode) { + public SDKGatewayResponse.Builder authorizedAmount(BigDecimal authorizedAmount) { + this.authorizedAmount = authorizedAmount; + return this; + } + + public SDKGatewayResponse.Builder authorizationCode(String authorizationCode) { this.authorizationCode = authorizationCode; return this; } - public SDKGatewayResponse.Builder setDate(String date) { + public SDKGatewayResponse.Builder date(String date) { this.date = date; return this; } - public SDKGatewayResponse.Builder setDecision(SDKResponseDecision decision) { + public SDKGatewayResponse.Builder decision(SDKResponseDecision decision) { this.decision = decision; return this; } - public SDKGatewayResponse.Builder setEncryptedPaymentData(String data) { + public SDKGatewayResponse.Builder encryptedPaymentData(String data) { this.encryptedPaymentData = data; return this; } diff --git a/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java index b4a2e75..34b1209 100644 --- a/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java +++ b/src/main/java/com/cybersource/inappsdk/datamodel/transaction/fields/SDKPurchaseOrder.java @@ -99,10 +99,13 @@ public SDKPurchaseOrder build(){ * Calculates totalAmount and subtotalAmount. */ public void updateTotals() { - for (SDKLineItem item : items) { - subtotalAmount = SDKMathUtils.add(subtotalAmount, - item.getLineItemsPriceForQuantity()); - totalTax = SDKMathUtils.add(totalTax, item.getTaxAmount()); + + if(items != null) { + for (SDKLineItem item : items) { + subtotalAmount = SDKMathUtils.add(subtotalAmount, + item.getLineItemsPriceForQuantity()); + totalTax = SDKMathUtils.add(totalTax, item.getTaxAmount()); + } } grandTotalAmount = subtotalAmount; diff --git a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java index 2a30244..f2816ba 100644 --- a/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java +++ b/src/test/java/com/visa/inappsdk/connectors/inapp/InAppSDKApiClientTest.java @@ -3,11 +3,13 @@ import android.content.Context; import android.test.mock.MockContext; +import com.cybersource.inappsdk.common.SDKCurrency; import com.cybersource.inappsdk.common.exceptions.SDKInvalidCardException; import com.cybersource.inappsdk.connectors.inapp.InAppSDKApiClient; import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransaction; import com.cybersource.inappsdk.connectors.inapp.transaction.client.InAppTransactionType; import com.cybersource.inappsdk.datamodel.transaction.fields.SDKCardData; +import com.cybersource.inappsdk.datamodel.transaction.fields.SDKPurchaseOrder; import org.junit.After; import org.junit.Assert; @@ -134,6 +136,8 @@ public void testApiClientConnectThrowsNullTransactionObjectException() throws Ex } } + // ************* Encryption API Tests ************* // + @Test public void testApiClientConnectThrowsNullCardDataException() throws Exception { InAppTransaction transactionObject = InAppTransaction. @@ -151,6 +155,61 @@ public void testApiClientConnectThrowsNullCardDataException() throws Exception { } } + // ************* END Encryption API Tests ************* // + + // ************* Android Pay API Tests ************* // + + @Test + public void testApiClientConnectThrowsNullPurchaseOrderException() throws Exception { + InAppTransaction transactionObject = InAppTransaction. + createTransactionObject(InAppTransactionType.IN_APP_TRANSACTION_ANDROID_PAY) // type of transaction object + .purchaseOrder(null) // purchase order + .build(); + try + { + apiClient.performApi(InAppSDKApiClient.Api.API_ANDROID_PAY, transactionObject, "DUMMY_MESSAGE_SIGNATURE"); + Assert.fail("Should have thrown Null Purchase Order Exception"); + } + catch(NullPointerException e) + { + assertEquals("Missing fields: Purchase Order must not be null", e.getMessage()); + } + } + + @Test + public void testApiClientConnectThrowsNullPublicKeyException() throws Exception { + + apiClient = new InAppSDKApiClient.Builder + (context, InAppSDKApiClient.Environment.ENV_TEST, apiLoginID) + .sdkConnectionCallback(null) // receive callbacks for connection results + .publicKey(null) + .build(); + + InAppTransaction transactionObject = InAppTransaction. + createTransactionObject(InAppTransactionType.IN_APP_TRANSACTION_ANDROID_PAY) // type of transaction object + .purchaseOrder(preparePurchaseOrder()) // purchase order + .build(); + try + { + apiClient.performApi(InAppSDKApiClient.Api.API_ANDROID_PAY, transactionObject, "DUMMY_MESSAGE_SIGNATURE"); + Assert.fail("Should have thrown Null Public Key Exception"); + } + catch(NullPointerException e) + { + assertEquals("Missing fields: Public Key must not be null", e.getMessage()); + } + } + + private SDKPurchaseOrder preparePurchaseOrder(){ + SDKPurchaseOrder purchaseOrder = new SDKPurchaseOrder.Builder() + .currency(SDKCurrency.USD) + .items(null) + .build(); + return purchaseOrder; + } + + // ************* END Android Pay API Tests ************* // + @Test public void testApiClientConnectThrowsInvalidMessageSignatureException() throws Exception { InAppTransaction transactionObject = InAppTransaction. From af79820a8bade5c76a565f527690b2601703c5e5 Mon Sep 17 00:00:00 2001 From: smaharja Date: Thu, 10 Mar 2016 16:38:52 -0800 Subject: [PATCH 9/9] removing unnecessary descriptor field from Transaction request --- .../connectors/inapp/datamodel/InAppEncryptedPayment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java index acbb83a..322c11f 100644 --- a/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java +++ b/src/main/java/com/cybersource/inappsdk/connectors/inapp/datamodel/InAppEncryptedPayment.java @@ -29,9 +29,9 @@ public InAppEncryptedPayment(String descriptor, String data) { public void updateEnvelope(SDKXMLParentNode request) { if (validateObject()) { SDKXMLParentNode purchase = request.addNode(request.getNamespace(), OBJECT_NAME); - if (this.descriptor != null) { - purchase.addTextNode(purchase.getNamespace(), DESCRIPTOR, this.descriptor); - } + // if (this.descriptor != null) { + // purchase.addTextNode(purchase.getNamespace(), DESCRIPTOR, this.descriptor); + // } if (this.data != null) { purchase.addTextNode(null, DATA, this.data); }