diff --git a/pom.xml b/pom.xml
index 23231f3..2e6b15b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,8 @@
UTF-8
+ 1.8
+ 1.8
@@ -58,7 +60,11 @@
http
[0.2,)
-
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.0
+
@@ -158,5 +164,4 @@
https://oss.sonatype.org/content/repositories/snapshots
-
diff --git a/src/main/java/cc/protea/spreedly/Spreedly.java b/src/main/java/cc/protea/spreedly/Spreedly.java
index b560cc8..605a887 100644
--- a/src/main/java/cc/protea/spreedly/Spreedly.java
+++ b/src/main/java/cc/protea/spreedly/Spreedly.java
@@ -1,7 +1,6 @@
package cc.protea.spreedly;
import cc.protea.spreedly.model.*;
-import cc.protea.spreedly.model.internal.*;
import java.util.ArrayList;
import java.util.List;
@@ -400,4 +399,27 @@ public SpreedlyTransactionResponse complete(String token, SpreedlyCompleteReques
return util.post("https://core.spreedly.com/v1/transactions/" + token + "/complete.xml", request, SpreedlyTransactionResponse.class);
}
+ /**
+ * Create an SCA Provider on the given Merchant Profile. An SCA Provider can be used to run 3DS2 Global
+ * authentications on the authenticate endpoint or as part of authorize and purchase transactions.
+ */
+ public SpreedlyMerchantProfile create(final SpreedlyMerchantProfileRequest request) {
+ return util.post("https://core.spreedly.com/v1/merchant_profiles.xml", request, SpreedlyMerchantProfile.class);
+ }
+
+ /**
+ * Adds a gateway account to the authenticated environment. One gateway account is required for each set of merchant account
+ * credentials. Spreedly stores and protects the credentials to be used to authenticate with gateway accounts for
+ * transaction processing.
+ */
+ public SpreedlyScaProvider create(final SpreedlyScaProviderRequest request) {
+ return util.post("https://core.spreedly.com/v1/sca/providers.xml", request, SpreedlyScaProvider.class);
+ }
+
+ /**
+ * Authenticate a given payment method and amount against provided SCA Provider Key (specified in request URL).
+ */
+ public SpreedlyScaAuthenticationResponse authenticateScaProvider(String scaProviderKey , final SpreedlyTransactionRequest request) {
+ return util.post("https://core.spreedly.com/v1/sca/providers/" + scaProviderKey + "/authenticate.xml", request, SpreedlyScaAuthenticationResponse.class);
+ }
}
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyAmexDetails.java b/src/main/java/cc/protea/spreedly/model/SpreedlyAmexDetails.java
new file mode 100644
index 0000000..b8a2861
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyAmexDetails.java
@@ -0,0 +1,28 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "amex")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyAmexDetails {
+
+ @XmlElement(name = "acquirer_bin") public Long acquirerBin;
+ @XmlElement(name = "merchant_url") public String merchantUrl;
+
+ public Long getAcquirerBin() {
+ return acquirerBin;
+ }
+
+ public void setAcquirerBin(Long acquirerBin) {
+ this.acquirerBin = acquirerBin;
+ }
+
+ public String getMerchantUrl() {
+ return merchantUrl;
+ }
+
+ public void setMerchantUrl(String merchantUrl) {
+ this.merchantUrl = merchantUrl;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyAmexNetwork.java b/src/main/java/cc/protea/spreedly/model/SpreedlyAmexNetwork.java
new file mode 100644
index 0000000..821bb6a
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyAmexNetwork.java
@@ -0,0 +1,48 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "amex")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyAmexNetwork {
+
+ @XmlElement(name = "acquirer_merchant_id") public String acquirerMerchantId;
+ @XmlElement(name = "country_code") public Long countryCode;
+ @XmlElement(name = "mcc") public Long mcc;
+ @XmlElement(name = "merchant_name") public String name;
+
+ public String getAcquirerMerchantId() {
+ return acquirerMerchantId;
+ }
+
+ public void setAcquirerMerchantId(String acquirerMerchantId) {
+ this.acquirerMerchantId = acquirerMerchantId;
+ }
+
+ public Long getCountryCode() {
+ return countryCode;
+ }
+
+ public void setCountryCode(Long countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public Long getMcc() {
+ return mcc;
+ }
+
+ public void setMcc(Long mcc) {
+ this.mcc = mcc;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyCompleteRequest.java b/src/main/java/cc/protea/spreedly/model/SpreedlyCompleteRequest.java
index 8657e35..44c9251 100644
--- a/src/main/java/cc/protea/spreedly/model/SpreedlyCompleteRequest.java
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyCompleteRequest.java
@@ -1,4 +1,3 @@
-
package cc.protea.spreedly.model;
import java.util.ArrayList;
@@ -10,54 +9,49 @@
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = {
- "entry"
-})
+@XmlType(name = "", propOrder = {"entry"})
@XmlRootElement(name = "context")
public class SpreedlyCompleteRequest {
- protected List entry;
+ protected List entry;
- public List getEntry() {
- if (entry == null) {
- entry = new ArrayList();
- }
- return this.entry;
- }
+ public List getEntry() {
+ if (entry == null) {
+ entry = new ArrayList();
+ }
+ return this.entry;
+ }
- public void setEntry(List entry) {
- this.entry = entry;
- }
+ public void setEntry(List entry) {
+ this.entry = entry;
+ }
- @XmlAccessorType(XmlAccessType.FIELD)
- @XmlType(name = "", propOrder = {
- "key",
- "value"
- })
- public static class Entry {
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {"key", "value"})
+ public static class Entry {
- @XmlElement(required = true)
- protected String key;
- @XmlElement(required = true)
- protected Object value;
+ @XmlElement(required = true)
+ protected String key;
+ @XmlElement(required = true)
+ protected Object value;
- public String getKey() {
- return key;
- }
+ public String getKey() {
+ return key;
+ }
- public void setKey(String value) {
- this.key = value;
- }
+ public void setKey(String value) {
+ this.key = value;
+ }
- public Object getValue() {
- return value;
- }
+ public Object getValue() {
+ return value;
+ }
- public void setValue(Object value) {
- this.value = value;
- }
+ public void setValue(Object value) {
+ this.value = value;
+ }
- }
+ }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyCreditNetwork.java b/src/main/java/cc/protea/spreedly/model/SpreedlyCreditNetwork.java
new file mode 100644
index 0000000..70751d0
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyCreditNetwork.java
@@ -0,0 +1,41 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "card_networks")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyCreditNetwork {
+
+ @XmlElement(name = "visa")
+ public SpreedlyVisaNetwork visa;
+ @XmlElement(name = "mastercard")
+ public SpreedlyMastercardNetwork mastercard;
+ @XmlElement(name = "amex")
+ public SpreedlyAmexNetwork amex;
+
+ public SpreedlyVisaNetwork getVisa() {
+ return visa;
+ }
+
+ public void setVisa(SpreedlyVisaNetwork visa) {
+ this.visa = visa;
+ }
+
+ public SpreedlyMastercardNetwork getMastercard() {
+ return mastercard;
+ }
+
+ public void setMastercard(SpreedlyMastercardNetwork mastercard) {
+ this.mastercard = mastercard;
+ }
+
+ public SpreedlyAmexNetwork getAmex() {
+ return amex;
+ }
+
+ public void setAmex(SpreedlyAmexNetwork amex) {
+ this.amex = amex;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardDetails.java b/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardDetails.java
new file mode 100644
index 0000000..484f5f2
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardDetails.java
@@ -0,0 +1,29 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "mastercard")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyMastercardDetails {
+
+ @XmlElement(name = "acquirer_bin") public Long acquirerBin;
+ @XmlElement(name = "merchant_url") public String merchantUrl;
+
+ public Long getAcquirerBin() {
+ return acquirerBin;
+ }
+
+ public void setAcquirerBin(Long acquirerBin) {
+ this.acquirerBin = acquirerBin;
+ }
+
+ public String getMerchantUrl() {
+ return merchantUrl;
+ }
+
+ public void setMerchantUrl(String merchantUrl) {
+ this.merchantUrl = merchantUrl;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardNetwork.java b/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardNetwork.java
new file mode 100644
index 0000000..b78698c
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyMastercardNetwork.java
@@ -0,0 +1,48 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "mastercard")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyMastercardNetwork {
+
+ @XmlElement(name = "acquirer_merchant_id") public String acquirerMerchantId;
+ @XmlElement(name = "country_code") public Long countryCode;
+ @XmlElement(name = "mcc") public Long mcc;
+ @XmlElement(name = "merchant_name") public String name;
+
+ public String getAcquirerMerchantId() {
+ return acquirerMerchantId;
+ }
+
+ public void setAcquirerMerchantId(String acquirerMerchantId) {
+ this.acquirerMerchantId = acquirerMerchantId;
+ }
+
+ public Long getCountryCode() {
+ return countryCode;
+ }
+
+ public void setCountryCode(Long countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public Long getMcc() {
+ return mcc;
+ }
+
+ public void setMcc(Long mcc) {
+ this.mcc = mcc;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfile.java b/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfile.java
new file mode 100644
index 0000000..cab0404
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfile.java
@@ -0,0 +1,44 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@XmlRootElement(name = "merchant_profile")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyMerchantProfile {
+ @XmlElement(name = "description") public String description;
+ @XmlElement(name = "token") public String token;
+ @XmlElement(name = "card_networks")
+ SpreedlyCreditNetwork creditNetwork;
+ @XmlElement(name = "created_at") public Date createdOn;
+ @XmlElement(name = "updated_at") public Date updatedOn;
+
+
+ public SpreedlyCreditNetwork getCreditNetwork() {
+ return creditNetwork;
+ }
+ public void setCreditNetwork(SpreedlyCreditNetwork creditNetwork) {
+ this.creditNetwork = creditNetwork;
+ }
+ public Date getCreatedOn() {
+ return createdOn;
+ }
+ public void setCreatedOn(final Date createdOn) {
+ this.createdOn = createdOn;
+ }
+ public Date getUpdatedOn() {
+ return updatedOn;
+ }
+ public void setUpdatedOn(final Date updatedOn) {
+ this.updatedOn = updatedOn;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(final String description) {
+ this.description = description;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfileRequest.java b/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfileRequest.java
new file mode 100644
index 0000000..3e20472
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyMerchantProfileRequest.java
@@ -0,0 +1,47 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "merchant_profile")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyMerchantProfileRequest {
+ @XmlElement(name = "description")
+ public String description;
+ @XmlElement(name = "amex")
+ public SpreedlyAmexNetwork amex;
+ @XmlElement(name = "visa")
+ public SpreedlyVisaNetwork visa;
+ @XmlElement(name = "mastercard")
+ public SpreedlyMastercardNetwork mastercard;
+
+ public SpreedlyAmexNetwork getAmex() {
+ return amex;
+ }
+
+ public void setAmex(SpreedlyAmexNetwork amex) {
+ this.amex = amex;
+ }
+
+ public SpreedlyVisaNetwork getVisa() {
+ return visa;
+ }
+
+ public void setVisa(SpreedlyVisaNetwork visa) {
+ this.visa = visa;
+ }
+
+ public SpreedlyMastercardNetwork getMastercard() {
+ return mastercard;
+ }
+
+ public void setMastercard(SpreedlyMastercardNetwork mastercard) {
+ this.mastercard = mastercard;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(final String description) {
+ this.description = description;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyScaAuthenticationResponse.java b/src/main/java/cc/protea/spreedly/model/SpreedlyScaAuthenticationResponse.java
new file mode 100644
index 0000000..2df30d0
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyScaAuthenticationResponse.java
@@ -0,0 +1,110 @@
+package cc.protea.spreedly.model;
+
+import cc.protea.spreedly.model.internal.SpreedlyErrorSetting;
+import cc.protea.spreedly.model.internal.SpreedlyNestedMapAdapter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@XmlRootElement(name = "transaction")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyScaAuthenticationResponse implements SpreedlyErrorSetting {
+
+ /**
+ * Any positive whole number, for example 1234 = $12.34.
+ */
+ @XmlElement(name = "amount") public Integer amountInCents;
+ /**
+ * Date and time of origination.
+ */
+ @XmlElement(name = "created_at") public Date createdOn;
+ /**
+ * ISO 4217 Currency Code e.g., USD, MXN, EUR
+ */
+ @XmlElement(name = "currency_code") public String currencyCode;
+ /**
+ * true if transaction was successful.
+ */
+ public boolean succeeded;
+ /**
+ * The token uniquely identifying the transaction at Spreedly.
+ * This token can be passed into an authorize or purchase transaction via the sca_authentication_token field to automatically fill its payment_method_token and Third Party 3DS2 fields.
+ */
+ public String token;
+ /**
+ * SCA Provider token that performs a Spreedly 3DS2 Global authentication before attempting the gateway transaction.
+ * Please see our Spreedly 3DS2 Global Guide for more info.
+ */
+ @XmlElement(name = "sca_provider_key") public String scaProviderKey;
+
+ public SpreedlyMessage message;
+
+ public Integer getAmountInCents() {
+ return amountInCents;
+ }
+
+ public void setAmountInCents(Integer amountInCents) {
+ this.amountInCents = amountInCents;
+ }
+
+ public Date getCreatedOn() {
+ return createdOn;
+ }
+
+ public void setCreatedOn(Date createdOn) {
+ this.createdOn = createdOn;
+ }
+
+ public String getCurrencyCode() {
+ return currencyCode;
+ }
+
+ public void setCurrencyCode(String currencyCode) {
+ this.currencyCode = currencyCode;
+ }
+
+ public boolean isSucceeded() {
+ return succeeded;
+ }
+
+ public void setSucceeded(boolean succeeded) {
+ this.succeeded = succeeded;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getScaProviderKey() {
+ return scaProviderKey;
+ }
+
+ public void setScaProviderKey(String scaProviderKey) {
+ this.scaProviderKey = scaProviderKey;
+ }
+
+ public SpreedlyMessage getMessage() {
+ return message;
+ }
+ public SpreedlyScaAuthenticationResponse setMessage(final SpreedlyMessage message) {
+ this.message = message;
+ return this;
+ }
+
+ public void setError(final String key, final String error) {
+ message = new SpreedlyMessage();
+ message.key = key;
+ message.message = error;
+ this.succeeded = false;
+ }
+}
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyScaProvider.java b/src/main/java/cc/protea/spreedly/model/SpreedlyScaProvider.java
new file mode 100644
index 0000000..2ec3013
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyScaProvider.java
@@ -0,0 +1,80 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+import java.util.Date;
+
+@XmlRootElement(name = "sca_provider")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyScaProvider {
+
+ @XmlElement(name = "token") public String token;
+ @XmlElement(name = "type") public String type ;
+ @XmlElement(name = "created_at") public Date createdOn;
+ @XmlElement(name = "updated_at") public Date updatedOn;
+ @XmlElement(name = "visa")
+ public SpreedlyVisaDetails visa;
+ @XmlElement(name = "mastercard")
+ public SpreedlyMastercardDetails mastercard;
+ @XmlElement(name = "amex")
+ public SpreedlyAmexDetails amex;
+
+ public String getType() {
+ return type;
+ }
+
+ public String isType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public SpreedlyVisaDetails getVisa() {
+ return visa;
+ }
+
+ public void setVisa(SpreedlyVisaDetails visa) {
+ this.visa = visa;
+ }
+
+ public SpreedlyMastercardDetails getMastercard() {
+ return mastercard;
+ }
+
+ public void setMastercard(SpreedlyMastercardDetails mastercard) {
+ this.mastercard = mastercard;
+ }
+
+ public SpreedlyAmexDetails getAmex() {
+ return amex;
+ }
+
+ public void setAmex(SpreedlyAmexDetails amex) {
+ this.amex = amex;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+
+
+ public Date getCreatedOn() {
+ return createdOn;
+ }
+ public void setCreatedOn(final Date createdOn) {
+ this.createdOn = createdOn;
+ }
+ public Date getUpdatedOn() {
+ return updatedOn;
+ }
+ public void setUpdatedOn(final Date updatedOn) {
+ this.updatedOn = updatedOn;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyScaProviderRequest.java b/src/main/java/cc/protea/spreedly/model/SpreedlyScaProviderRequest.java
new file mode 100644
index 0000000..4815338
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyScaProviderRequest.java
@@ -0,0 +1,59 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+import java.util.Date;
+
+@XmlRootElement(name = "sca_provider")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyScaProviderRequest {
+
+ @XmlElement(name = "merchant_profile_key") public String merchantProfileKey;
+ @XmlElement(name = "type") public String type ;
+ @XmlElement(name = "visa")
+ public SpreedlyVisaDetails visa;
+ @XmlElement(name = "mastercard")
+ public SpreedlyMastercardDetails mastercard;
+ @XmlElement(name = "amex")
+ public SpreedlyAmexDetails amex;
+
+ public String getMerchantProfileKey() {
+ return merchantProfileKey;
+ }
+
+ public void setMerchantProfileKey(String merchantProfileKey) {
+ this.merchantProfileKey = merchantProfileKey;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public SpreedlyVisaDetails getVisa() {
+ return visa;
+ }
+
+ public void setVisa(SpreedlyVisaDetails visa) {
+ this.visa = visa;
+ }
+
+ public SpreedlyMastercardDetails getMastercard() {
+ return mastercard;
+ }
+
+ public void setMastercard(SpreedlyMastercardDetails mastercard) {
+ this.mastercard = mastercard;
+ }
+
+ public SpreedlyAmexDetails getAmex() {
+ return amex;
+ }
+
+ public void setAmex(SpreedlyAmexDetails amex) {
+ this.amex = amex;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionRequest.java b/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionRequest.java
index 2bcbc7c..a130e6d 100644
--- a/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionRequest.java
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionRequest.java
@@ -101,6 +101,17 @@ public class SpreedlyTransactionRequest {
*/
@XmlElement(name = "three_ds_version") public String threeDsVersion;
+ /**
+ * The token received in response body of SCA Authenticate endpoint when performing an SCA Authentication on a specified payment method.
+ */
+ @XmlElement(name = "sca_authentication_token") public String scaAuthenticationToken;
+
+ /**
+ * SCA Provider token that performs a Spreedly 3DS2 Global authentication before attempting the gateway transaction.
+ * Please see our Spreedly 3DS2 Global Guide for more info.
+ */
+ @XmlElement(name = "sca_provider_key") public String scaProviderKey;
+
/**
* @return A unique string generated by Spreedly to identify a gateway.
*/
@@ -350,4 +361,20 @@ public void setThreeDsVersion(String threeDsVersion)
{
this.threeDsVersion = threeDsVersion;
}
+
+ public String getScaAuthenticationToken() {
+ return scaAuthenticationToken;
+ }
+
+ public void setScaAuthenticationToken(String scaAuthenticationToken) {
+ this.scaAuthenticationToken = scaAuthenticationToken;
+ }
+
+ public String getScaProviderKey() {
+ return scaProviderKey;
+ }
+
+ public void setScaProviderKey(String scaProviderKey) {
+ this.scaProviderKey = scaProviderKey;
+ }
}
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionResponse.java b/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionResponse.java
index 8732eff..3d61d55 100644
--- a/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionResponse.java
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyTransactionResponse.java
@@ -133,7 +133,7 @@ public class SpreedlyTransactionResponse implements SpreedlyErrorSetting {
@XmlElement(name = "challenge_url") public String challengeUrl;
@XmlElement(name = "challenge_form") public String challengeForm;
-
+
/**
* @return Any positive whole number, for example 1234 = $12.34.
*/
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyVisaDetails.java b/src/main/java/cc/protea/spreedly/model/SpreedlyVisaDetails.java
new file mode 100644
index 0000000..dc8f37e
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyVisaDetails.java
@@ -0,0 +1,28 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "visa")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyVisaDetails {
+
+ @XmlElement(name = "acquirer_bin") public Long acquirerBin;
+ @XmlElement(name = "merchant_url") public String merchantUrl;
+
+ public Long getAcquirerBin() {
+ return acquirerBin;
+ }
+
+ public void setAcquirerBin(Long acquirerBin) {
+ this.acquirerBin = acquirerBin;
+ }
+
+ public String getMerchantUrl() {
+ return merchantUrl;
+ }
+
+ public void setMerchantUrl(String merchantUrl) {
+ this.merchantUrl = merchantUrl;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/cc/protea/spreedly/model/SpreedlyVisaNetwork.java b/src/main/java/cc/protea/spreedly/model/SpreedlyVisaNetwork.java
new file mode 100644
index 0000000..9665cd8
--- /dev/null
+++ b/src/main/java/cc/protea/spreedly/model/SpreedlyVisaNetwork.java
@@ -0,0 +1,48 @@
+package cc.protea.spreedly.model;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "visa")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SpreedlyVisaNetwork {
+
+ @XmlElement(name = "acquirer_merchant_id") public String acquirerMerchantId;
+ @XmlElement(name = "country_code") public Long countryCode;
+ @XmlElement(name = "mcc") public Long mcc;
+ @XmlElement(name = "merchant_name") public String name;
+
+ public String getAcquirerMerchantId() {
+ return acquirerMerchantId;
+ }
+
+ public void setAcquirerMerchantId(String acquirerMerchantId) {
+ this.acquirerMerchantId = acquirerMerchantId;
+ }
+
+ public Long getCountryCode() {
+ return countryCode;
+ }
+
+ public void setCountryCode(Long countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public Long getMcc() {
+ return mcc;
+ }
+
+ public void setMcc(Long mcc) {
+ this.mcc = mcc;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+
+}
\ No newline at end of file