From 25f775ebd83f4df7069f882c1aa84b90258dc8b0 Mon Sep 17 00:00:00 2001 From: phillipgr4vy <92320120+phillipgr4vy@users.noreply.github.com> Date: Wed, 4 Sep 2024 07:34:07 -0400 Subject: [PATCH] feat: adds ip address to client, latest open api spec (#56) This PR adds ip address to be set for new transactions via the X-Forwarded-For header and includes the latest open api spec models. --- .openapi-generator/FILES | 6 + pom.xml | 2 +- .../model/CheckoutSessionCreateRequest.java | 34 +++- .../gr4vy/api/model/ConnectionOptions.java | 62 +++++- .../ConnectionOptionsCybersourceIdeal.java | 168 ++++++++++++++++ .../ConnectionOptionsCybersourceKcp.java | 168 ++++++++++++++++ .../com/gr4vy/api/model/PaymentMethod.java | 20 +- .../api/model/PaymentMethodSnapshot.java | 8 + .../api/model/PaymentMethodTokenized.java | 8 + .../com/gr4vy/api/model/PaymentOption.java | 14 +- .../com/gr4vy/api/model/PaymentService.java | 8 + .../api/model/PaymentServiceDefinition.java | 14 +- .../api/model/PaymentServiceSnapshot.java | 8 + .../com/gr4vy/api/model/RedirectRequest.java | 6 +- .../java/com/gr4vy/api/model/Transaction.java | 8 +- .../api/model/TransactionBuyerRequest.java | 187 ++++++++++++++++++ .../TransactionPaymentMethodRequest.java | 8 +- .../api/model/TransactionRedirectRequest.java | 6 +- .../gr4vy/api/model/TransactionRequest.java | 32 ++- .../gr4vy/api/model/TransactionSummary.java | 8 + src/main/java/com/gr4vy/sdk/Gr4vyClient.java | 12 +- .../java/com/gr4vy/sdk/Gr4vyClientTest.java | 20 ++ 22 files changed, 786 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdeal.java create mode 100644 src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcp.java create mode 100644 src/main/java/com/gr4vy/api/model/TransactionBuyerRequest.java diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 0e46af2..731d7c5 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -94,6 +94,8 @@ src/main/java/com/gr4vy/api/model/ConnectionOptions.java src/main/java/com/gr4vy/api/model/ConnectionOptionsAdyenCard.java src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceAntiFraud.java src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceCard.java +src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdeal.java +src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcp.java src/main/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraud.java src/main/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraudAddress.java src/main/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraudBasicItemData.java @@ -284,6 +286,7 @@ src/main/java/com/gr4vy/api/model/ThreeDSecureSummary.java src/main/java/com/gr4vy/api/model/ThreeDSecureV2.java src/main/java/com/gr4vy/api/model/TokenizedRequest.java src/main/java/com/gr4vy/api/model/Transaction.java +src/main/java/com/gr4vy/api/model/TransactionBuyerRequest.java src/main/java/com/gr4vy/api/model/TransactionCaptureRequest.java src/main/java/com/gr4vy/api/model/TransactionCardRequest.java src/main/java/com/gr4vy/api/model/TransactionCheckoutSessionRequest.java @@ -395,6 +398,8 @@ src/test/java/com/gr4vy/api/model/ConnectionDefinitionsTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsAdyenCardTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsCybersourceAntiFraudTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsCybersourceCardTest.java +src/test/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdealTest.java +src/test/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcpTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraudAddressTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraudBasicItemDataTest.java src/test/java/com/gr4vy/api/model/ConnectionOptionsForterAntiFraudBeneficiariesTest.java @@ -586,6 +591,7 @@ src/test/java/com/gr4vy/api/model/ThreeDSecureSuccessEventTest.java src/test/java/com/gr4vy/api/model/ThreeDSecureSummaryTest.java src/test/java/com/gr4vy/api/model/ThreeDSecureV2Test.java src/test/java/com/gr4vy/api/model/TokenizedRequestTest.java +src/test/java/com/gr4vy/api/model/TransactionBuyerRequestTest.java src/test/java/com/gr4vy/api/model/TransactionCaptureRequestTest.java src/test/java/com/gr4vy/api/model/TransactionCardRequestTest.java src/test/java/com/gr4vy/api/model/TransactionCheckoutSessionRequestTest.java diff --git a/pom.xml b/pom.xml index 37f87e4..9d9d6d7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ gr4vy jar gr4vy - 0.29.2 + 0.30.0 https://gr4vy.com Gr4vy Java SDK diff --git a/src/main/java/com/gr4vy/api/model/CheckoutSessionCreateRequest.java b/src/main/java/com/gr4vy/api/model/CheckoutSessionCreateRequest.java index 2763192..885ba7a 100644 --- a/src/main/java/com/gr4vy/api/model/CheckoutSessionCreateRequest.java +++ b/src/main/java/com/gr4vy/api/model/CheckoutSessionCreateRequest.java @@ -21,6 +21,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.gr4vy.api.model.CartItem; +import com.gr4vy.api.model.TransactionBuyerRequest; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.IOException; @@ -43,6 +44,10 @@ public class CheckoutSessionCreateRequest { @SerializedName(SERIALIZED_NAME_METADATA) private Map metadata = null; + public static final String SERIALIZED_NAME_BUYER = "buyer"; + @SerializedName(SERIALIZED_NAME_BUYER) + private TransactionBuyerRequest buyer; + public CheckoutSessionCreateRequest cartItems(List cartItems) { @@ -106,6 +111,29 @@ public void setMetadata(Map metadata) { } + public CheckoutSessionCreateRequest buyer(TransactionBuyerRequest buyer) { + + this.buyer = buyer; + return this; + } + + /** + * Get buyer + * @return buyer + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public TransactionBuyerRequest getBuyer() { + return buyer; + } + + + public void setBuyer(TransactionBuyerRequest buyer) { + this.buyer = buyer; + } + + @Override public boolean equals(Object o) { if (this == o) { @@ -116,12 +144,13 @@ public boolean equals(Object o) { } CheckoutSessionCreateRequest checkoutSessionCreateRequest = (CheckoutSessionCreateRequest) o; return Objects.equals(this.cartItems, checkoutSessionCreateRequest.cartItems) && - Objects.equals(this.metadata, checkoutSessionCreateRequest.metadata); + Objects.equals(this.metadata, checkoutSessionCreateRequest.metadata) && + Objects.equals(this.buyer, checkoutSessionCreateRequest.buyer); } @Override public int hashCode() { - return Objects.hash(cartItems, metadata); + return Objects.hash(cartItems, metadata, buyer); } @Override @@ -130,6 +159,7 @@ public String toString() { sb.append("class CheckoutSessionCreateRequest {\n"); sb.append(" cartItems: ").append(toIndentedString(cartItems)).append("\n"); sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" buyer: ").append(toIndentedString(buyer)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/gr4vy/api/model/ConnectionOptions.java b/src/main/java/com/gr4vy/api/model/ConnectionOptions.java index fb7e44f..a3cfeeb 100644 --- a/src/main/java/com/gr4vy/api/model/ConnectionOptions.java +++ b/src/main/java/com/gr4vy/api/model/ConnectionOptions.java @@ -23,6 +23,8 @@ import com.gr4vy.api.model.ConnectionOptionsAdyenCard; import com.gr4vy.api.model.ConnectionOptionsCybersourceAntiFraud; import com.gr4vy.api.model.ConnectionOptionsCybersourceCard; +import com.gr4vy.api.model.ConnectionOptionsCybersourceIdeal; +import com.gr4vy.api.model.ConnectionOptionsCybersourceKcp; import com.gr4vy.api.model.ConnectionOptionsForterAntiFraud; import com.gr4vy.api.model.ConnectionOptionsGivingblockGivingblock; import com.gr4vy.api.model.ConnectionOptionsPaypalPaypal; @@ -40,6 +42,14 @@ public class ConnectionOptions { @SerializedName(SERIALIZED_NAME_CYBERSOURCE_CARD) private ConnectionOptionsCybersourceCard cybersourceCard; + public static final String SERIALIZED_NAME_CYBERSOURCE_KCP = "cybersource-kcp"; + @SerializedName(SERIALIZED_NAME_CYBERSOURCE_KCP) + private ConnectionOptionsCybersourceKcp cybersourceKcp; + + public static final String SERIALIZED_NAME_CYBERSOURCE_IDEAL = "cybersource-ideal"; + @SerializedName(SERIALIZED_NAME_CYBERSOURCE_IDEAL) + private ConnectionOptionsCybersourceIdeal cybersourceIdeal; + public static final String SERIALIZED_NAME_CYBERSOURCE_ANTI_FRAUD = "cybersource-anti-fraud"; @SerializedName(SERIALIZED_NAME_CYBERSOURCE_ANTI_FRAUD) private ConnectionOptionsCybersourceAntiFraud cybersourceAntiFraud; @@ -92,6 +102,52 @@ public void setCybersourceCard(ConnectionOptionsCybersourceCard cybersourceCard) } + public ConnectionOptions cybersourceKcp(ConnectionOptionsCybersourceKcp cybersourceKcp) { + + this.cybersourceKcp = cybersourceKcp; + return this; + } + + /** + * Get cybersourceKcp + * @return cybersourceKcp + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ConnectionOptionsCybersourceKcp getCybersourceKcp() { + return cybersourceKcp; + } + + + public void setCybersourceKcp(ConnectionOptionsCybersourceKcp cybersourceKcp) { + this.cybersourceKcp = cybersourceKcp; + } + + + public ConnectionOptions cybersourceIdeal(ConnectionOptionsCybersourceIdeal cybersourceIdeal) { + + this.cybersourceIdeal = cybersourceIdeal; + return this; + } + + /** + * Get cybersourceIdeal + * @return cybersourceIdeal + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ConnectionOptionsCybersourceIdeal getCybersourceIdeal() { + return cybersourceIdeal; + } + + + public void setCybersourceIdeal(ConnectionOptionsCybersourceIdeal cybersourceIdeal) { + this.cybersourceIdeal = cybersourceIdeal; + } + + public ConnectionOptions cybersourceAntiFraud(ConnectionOptionsCybersourceAntiFraud cybersourceAntiFraud) { this.cybersourceAntiFraud = cybersourceAntiFraud; @@ -263,6 +319,8 @@ public boolean equals(Object o) { } ConnectionOptions connectionOptions = (ConnectionOptions) o; return Objects.equals(this.cybersourceCard, connectionOptions.cybersourceCard) && + Objects.equals(this.cybersourceKcp, connectionOptions.cybersourceKcp) && + Objects.equals(this.cybersourceIdeal, connectionOptions.cybersourceIdeal) && Objects.equals(this.cybersourceAntiFraud, connectionOptions.cybersourceAntiFraud) && Objects.equals(this.givingblockGivingblock, connectionOptions.givingblockGivingblock) && Objects.equals(this.forterAntiFraud, connectionOptions.forterAntiFraud) && @@ -274,7 +332,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(cybersourceCard, cybersourceAntiFraud, givingblockGivingblock, forterAntiFraud, adyenCard, paypalPaypal, paypalPaypalpaylater, stripeCard); + return Objects.hash(cybersourceCard, cybersourceKcp, cybersourceIdeal, cybersourceAntiFraud, givingblockGivingblock, forterAntiFraud, adyenCard, paypalPaypal, paypalPaypalpaylater, stripeCard); } @Override @@ -282,6 +340,8 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class ConnectionOptions {\n"); sb.append(" cybersourceCard: ").append(toIndentedString(cybersourceCard)).append("\n"); + sb.append(" cybersourceKcp: ").append(toIndentedString(cybersourceKcp)).append("\n"); + sb.append(" cybersourceIdeal: ").append(toIndentedString(cybersourceIdeal)).append("\n"); sb.append(" cybersourceAntiFraud: ").append(toIndentedString(cybersourceAntiFraud)).append("\n"); sb.append(" givingblockGivingblock: ").append(toIndentedString(givingblockGivingblock)).append("\n"); sb.append(" forterAntiFraud: ").append(toIndentedString(forterAntiFraud)).append("\n"); diff --git a/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdeal.java b/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdeal.java new file mode 100644 index 0000000..8077355 --- /dev/null +++ b/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceIdeal.java @@ -0,0 +1,168 @@ +/* + * Gr4vy API + * Welcome to the Gr4vy API reference documentation. Our API is still very much a work in product and subject to change. + * + * The version of the OpenAPI document: 1.1.0-beta + * Contact: code@gr4vy.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.gr4vy.api.model; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Additional options for Cybersource iDeal APM. + */ +@ApiModel(description = "Additional options for Cybersource iDeal APM.") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class ConnectionOptionsCybersourceIdeal { + public static final String SERIALIZED_NAME_META_KEY_MERCHANT_ID = "meta_key_merchant_id"; + @SerializedName(SERIALIZED_NAME_META_KEY_MERCHANT_ID) + private String metaKeyMerchantId; + + public static final String SERIALIZED_NAME_MERCHANT_DEFINED_INFORMATION = "merchant_defined_information"; + @SerializedName(SERIALIZED_NAME_MERCHANT_DEFINED_INFORMATION) + private Map merchantDefinedInformation = null; + + public static final String SERIALIZED_NAME_SHIP_TO_METHOD = "ship_to_method"; + @SerializedName(SERIALIZED_NAME_SHIP_TO_METHOD) + private String shipToMethod; + + + public ConnectionOptionsCybersourceIdeal metaKeyMerchantId(String metaKeyMerchantId) { + + this.metaKeyMerchantId = metaKeyMerchantId; + return this; + } + + /** + * An override for the merchant ID configured for the connector, used in combination with meta keys. + * @return metaKeyMerchantId + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "An override for the merchant ID configured for the connector, used in combination with meta keys.") + + public String getMetaKeyMerchantId() { + return metaKeyMerchantId; + } + + + public void setMetaKeyMerchantId(String metaKeyMerchantId) { + this.metaKeyMerchantId = metaKeyMerchantId; + } + + + public ConnectionOptionsCybersourceIdeal merchantDefinedInformation(Map merchantDefinedInformation) { + + this.merchantDefinedInformation = merchantDefinedInformation; + return this; + } + + public ConnectionOptionsCybersourceIdeal putMerchantDefinedInformationItem(String key, String merchantDefinedInformationItem) { + if (this.merchantDefinedInformation == null) { + this.merchantDefinedInformation = new HashMap(); + } + this.merchantDefinedInformation.put(key, merchantDefinedInformationItem); + return this; + } + + /** + * This is a key-value object for merchant defined information. Each key needs to be a numeric string identifying the MDI field to set. For example, for field 1 set the key to \"1\". + * @return merchantDefinedInformation + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "{\"1\":\"John Doe\",\"2\":\"trusted\",\"99\":\"recurring\"}", value = "This is a key-value object for merchant defined information. Each key needs to be a numeric string identifying the MDI field to set. For example, for field 1 set the key to \"1\".") + + public Map getMerchantDefinedInformation() { + return merchantDefinedInformation; + } + + + public void setMerchantDefinedInformation(Map merchantDefinedInformation) { + this.merchantDefinedInformation = merchantDefinedInformation; + } + + + public ConnectionOptionsCybersourceIdeal shipToMethod(String shipToMethod) { + + this.shipToMethod = shipToMethod; + return this; + } + + /** + * Shipping method for the order. + * @return shipToMethod + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Shipping method for the order.") + + public String getShipToMethod() { + return shipToMethod; + } + + + public void setShipToMethod(String shipToMethod) { + this.shipToMethod = shipToMethod; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ConnectionOptionsCybersourceIdeal connectionOptionsCybersourceIdeal = (ConnectionOptionsCybersourceIdeal) o; + return Objects.equals(this.metaKeyMerchantId, connectionOptionsCybersourceIdeal.metaKeyMerchantId) && + Objects.equals(this.merchantDefinedInformation, connectionOptionsCybersourceIdeal.merchantDefinedInformation) && + Objects.equals(this.shipToMethod, connectionOptionsCybersourceIdeal.shipToMethod); + } + + @Override + public int hashCode() { + return Objects.hash(metaKeyMerchantId, merchantDefinedInformation, shipToMethod); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ConnectionOptionsCybersourceIdeal {\n"); + sb.append(" metaKeyMerchantId: ").append(toIndentedString(metaKeyMerchantId)).append("\n"); + sb.append(" merchantDefinedInformation: ").append(toIndentedString(merchantDefinedInformation)).append("\n"); + sb.append(" shipToMethod: ").append(toIndentedString(shipToMethod)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcp.java b/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcp.java new file mode 100644 index 0000000..fd768dd --- /dev/null +++ b/src/main/java/com/gr4vy/api/model/ConnectionOptionsCybersourceKcp.java @@ -0,0 +1,168 @@ +/* + * Gr4vy API + * Welcome to the Gr4vy API reference documentation. Our API is still very much a work in product and subject to change. + * + * The version of the OpenAPI document: 1.1.0-beta + * Contact: code@gr4vy.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.gr4vy.api.model; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Additional options for Cybersource KCP APM. + */ +@ApiModel(description = "Additional options for Cybersource KCP APM.") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class ConnectionOptionsCybersourceKcp { + public static final String SERIALIZED_NAME_META_KEY_MERCHANT_ID = "meta_key_merchant_id"; + @SerializedName(SERIALIZED_NAME_META_KEY_MERCHANT_ID) + private String metaKeyMerchantId; + + public static final String SERIALIZED_NAME_MERCHANT_DEFINED_INFORMATION = "merchant_defined_information"; + @SerializedName(SERIALIZED_NAME_MERCHANT_DEFINED_INFORMATION) + private Map merchantDefinedInformation = null; + + public static final String SERIALIZED_NAME_SHIP_TO_METHOD = "ship_to_method"; + @SerializedName(SERIALIZED_NAME_SHIP_TO_METHOD) + private String shipToMethod; + + + public ConnectionOptionsCybersourceKcp metaKeyMerchantId(String metaKeyMerchantId) { + + this.metaKeyMerchantId = metaKeyMerchantId; + return this; + } + + /** + * An override for the merchant ID configured for the connector, used in combination with meta keys. + * @return metaKeyMerchantId + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "An override for the merchant ID configured for the connector, used in combination with meta keys.") + + public String getMetaKeyMerchantId() { + return metaKeyMerchantId; + } + + + public void setMetaKeyMerchantId(String metaKeyMerchantId) { + this.metaKeyMerchantId = metaKeyMerchantId; + } + + + public ConnectionOptionsCybersourceKcp merchantDefinedInformation(Map merchantDefinedInformation) { + + this.merchantDefinedInformation = merchantDefinedInformation; + return this; + } + + public ConnectionOptionsCybersourceKcp putMerchantDefinedInformationItem(String key, String merchantDefinedInformationItem) { + if (this.merchantDefinedInformation == null) { + this.merchantDefinedInformation = new HashMap(); + } + this.merchantDefinedInformation.put(key, merchantDefinedInformationItem); + return this; + } + + /** + * This is a key-value object for merchant defined information. Each key needs to be a numeric string identifying the MDI field to set. For example, for field 1 set the key to \"1\". + * @return merchantDefinedInformation + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "{\"1\":\"John Doe\",\"2\":\"trusted\",\"99\":\"recurring\"}", value = "This is a key-value object for merchant defined information. Each key needs to be a numeric string identifying the MDI field to set. For example, for field 1 set the key to \"1\".") + + public Map getMerchantDefinedInformation() { + return merchantDefinedInformation; + } + + + public void setMerchantDefinedInformation(Map merchantDefinedInformation) { + this.merchantDefinedInformation = merchantDefinedInformation; + } + + + public ConnectionOptionsCybersourceKcp shipToMethod(String shipToMethod) { + + this.shipToMethod = shipToMethod; + return this; + } + + /** + * Shipping method for the order. + * @return shipToMethod + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Shipping method for the order.") + + public String getShipToMethod() { + return shipToMethod; + } + + + public void setShipToMethod(String shipToMethod) { + this.shipToMethod = shipToMethod; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ConnectionOptionsCybersourceKcp connectionOptionsCybersourceKcp = (ConnectionOptionsCybersourceKcp) o; + return Objects.equals(this.metaKeyMerchantId, connectionOptionsCybersourceKcp.metaKeyMerchantId) && + Objects.equals(this.merchantDefinedInformation, connectionOptionsCybersourceKcp.merchantDefinedInformation) && + Objects.equals(this.shipToMethod, connectionOptionsCybersourceKcp.shipToMethod); + } + + @Override + public int hashCode() { + return Objects.hash(metaKeyMerchantId, merchantDefinedInformation, shipToMethod); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ConnectionOptionsCybersourceKcp {\n"); + sb.append(" metaKeyMerchantId: ").append(toIndentedString(metaKeyMerchantId)).append("\n"); + sb.append(" merchantDefinedInformation: ").append(toIndentedString(merchantDefinedInformation)).append("\n"); + sb.append(" shipToMethod: ").append(toIndentedString(shipToMethod)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/gr4vy/api/model/PaymentMethod.java b/src/main/java/com/gr4vy/api/model/PaymentMethod.java index feabd15..c5ce165 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentMethod.java +++ b/src/main/java/com/gr4vy/api/model/PaymentMethod.java @@ -346,14 +346,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -414,6 +420,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), @@ -487,7 +495,11 @@ public enum ModeEnum { APPLEPAY("applepay"), - GOOGLEPAY("googlepay"); + GOOGLEPAY("googlepay"), + + CLICK_TO_PAY("click-to-pay"), + + CHECKOUT_SESSION("checkout-session"); private String value; @@ -629,7 +641,7 @@ public SchemeEnum read(final JsonReader jsonReader) throws IOException { private SchemeEnum scheme; /** - * The state of the payment method. - `processing` - The payment method is stored but has not been used yet. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and has been used. - `failed` - The payment method could not be stored, or failed first use. + * The state of the payment method. - `processing` - The payment method is stored but is not ready to be used yet, as we may be waiting for a notification from a connector to complete the setup. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and can be used. - `failed` - The payment method could not be stored, or failed verification. */ @JsonAdapter(StatusEnum.Adapter.class) public enum StatusEnum { @@ -1144,11 +1156,11 @@ public PaymentMethod status(StatusEnum status) { } /** - * The state of the payment method. - `processing` - The payment method is stored but has not been used yet. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and has been used. - `failed` - The payment method could not be stored, or failed first use. + * The state of the payment method. - `processing` - The payment method is stored but is not ready to be used yet, as we may be waiting for a notification from a connector to complete the setup. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and can be used. - `failed` - The payment method could not be stored, or failed verification. * @return status **/ @javax.annotation.Nullable - @ApiModelProperty(example = "succeeded", value = "The state of the payment method. - `processing` - The payment method is stored but has not been used yet. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and has been used. - `failed` - The payment method could not be stored, or failed first use.") + @ApiModelProperty(example = "succeeded", value = "The state of the payment method. - `processing` - The payment method is stored but is not ready to be used yet, as we may be waiting for a notification from a connector to complete the setup. - `buyer_approval_required` - Storing the payment method requires the buyer to provide approval. Follow the `approval_url` for next steps. - `succeeded` - The payment method is stored and can be used. - `failed` - The payment method could not be stored, or failed verification.") public StatusEnum getStatus() { return status; diff --git a/src/main/java/com/gr4vy/api/model/PaymentMethodSnapshot.java b/src/main/java/com/gr4vy/api/model/PaymentMethodSnapshot.java index c474a68..28cd958 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentMethodSnapshot.java +++ b/src/main/java/com/gr4vy/api/model/PaymentMethodSnapshot.java @@ -230,14 +230,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -298,6 +304,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/PaymentMethodTokenized.java b/src/main/java/com/gr4vy/api/model/PaymentMethodTokenized.java index cd2c66a..99e1c6b 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentMethodTokenized.java +++ b/src/main/java/com/gr4vy/api/model/PaymentMethodTokenized.java @@ -152,14 +152,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -220,6 +226,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/PaymentOption.java b/src/main/java/com/gr4vy/api/model/PaymentOption.java index 809a2c3..776e7ae 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentOption.java +++ b/src/main/java/com/gr4vy/api/model/PaymentOption.java @@ -141,14 +141,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -208,7 +214,7 @@ public enum MethodEnum { SMARTPAY("smartpay"), SOFORT("sofort"), - + SPEI("spei"), STRIPEDD("stripedd"), @@ -288,7 +294,11 @@ public enum ModeEnum { APPLEPAY("applepay"), - GOOGLEPAY("googlepay"); + GOOGLEPAY("googlepay"), + + CLICK_TO_PAY("click-to-pay"), + + CHECKOUT_SESSION("checkout-session"); private String value; diff --git a/src/main/java/com/gr4vy/api/model/PaymentService.java b/src/main/java/com/gr4vy/api/model/PaymentService.java index 19b2131..f389eca 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentService.java +++ b/src/main/java/com/gr4vy/api/model/PaymentService.java @@ -182,14 +182,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -250,6 +256,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/PaymentServiceDefinition.java b/src/main/java/com/gr4vy/api/model/PaymentServiceDefinition.java index 816f392..1c79541 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentServiceDefinition.java +++ b/src/main/java/com/gr4vy/api/model/PaymentServiceDefinition.java @@ -153,14 +153,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -221,6 +227,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), @@ -306,7 +314,11 @@ public enum ModeEnum { APPLEPAY("applepay"), - GOOGLEPAY("googlepay"); + GOOGLEPAY("googlepay"), + + CLICK_TO_PAY("click-to-pay"), + + CHECKOUT_SESSION("checkout-session"); private String value; diff --git a/src/main/java/com/gr4vy/api/model/PaymentServiceSnapshot.java b/src/main/java/com/gr4vy/api/model/PaymentServiceSnapshot.java index 281366a..0af4abd 100644 --- a/src/main/java/com/gr4vy/api/model/PaymentServiceSnapshot.java +++ b/src/main/java/com/gr4vy/api/model/PaymentServiceSnapshot.java @@ -148,14 +148,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -216,6 +222,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/RedirectRequest.java b/src/main/java/com/gr4vy/api/model/RedirectRequest.java index 1708a1c..90ed7fb 100644 --- a/src/main/java/com/gr4vy/api/model/RedirectRequest.java +++ b/src/main/java/com/gr4vy/api/model/RedirectRequest.java @@ -32,7 +32,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class RedirectRequest { /** - * The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported. + * The method to use, this can be any of the methods that support redirect requests. */ @JsonAdapter(MethodEnum.Adapter.class) public enum MethodEnum { @@ -120,10 +120,10 @@ public RedirectRequest method(MethodEnum method) { } /** - * The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported. + * The method to use, this can be any of the methods that support redirect requests. * @return method **/ - @ApiModelProperty(example = "paypal", required = true, value = "The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported.") + @ApiModelProperty(example = "paypal", required = true, value = "The method to use, this can be any of the methods that support redirect requests.") public MethodEnum getMethod() { return method; diff --git a/src/main/java/com/gr4vy/api/model/Transaction.java b/src/main/java/com/gr4vy/api/model/Transaction.java index d282e3c..b6094db 100644 --- a/src/main/java/com/gr4vy/api/model/Transaction.java +++ b/src/main/java/com/gr4vy/api/model/Transaction.java @@ -520,16 +520,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), - + ID("id"), IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -590,6 +594,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/TransactionBuyerRequest.java b/src/main/java/com/gr4vy/api/model/TransactionBuyerRequest.java new file mode 100644 index 0000000..04a0c25 --- /dev/null +++ b/src/main/java/com/gr4vy/api/model/TransactionBuyerRequest.java @@ -0,0 +1,187 @@ +/* + * Gr4vy API + * Welcome to the Gr4vy API reference documentation. Our API is still very much a work in product and subject to change. + * + * The version of the OpenAPI document: 1.1.0-beta + * Contact: code@gr4vy.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.gr4vy.api.model; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.gr4vy.api.model.BillingDetailsRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Guest buyer details. + */ +@ApiModel(description = "Guest buyer details.") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class TransactionBuyerRequest { + public static final String SERIALIZED_NAME_EXTERNAL_IDENTIFIER = "external_identifier"; + @SerializedName(SERIALIZED_NAME_EXTERNAL_IDENTIFIER) + private String externalIdentifier; + + public static final String SERIALIZED_NAME_DISPLAY_NAME = "display_name"; + @SerializedName(SERIALIZED_NAME_DISPLAY_NAME) + private String displayName; + + public static final String SERIALIZED_NAME_BILLING_DETAILS = "billing_details"; + @SerializedName(SERIALIZED_NAME_BILLING_DETAILS) + private BillingDetailsRequest billingDetails; + + public static final String SERIALIZED_NAME_SHIPPING_DETAILS = "shipping_details"; + @SerializedName(SERIALIZED_NAME_SHIPPING_DETAILS) + private BillingDetailsRequest shippingDetails; + + + public TransactionBuyerRequest externalIdentifier(String externalIdentifier) { + + this.externalIdentifier = externalIdentifier; + return this; + } + + /** + * An external identifier that can be used to match the buyer against your own records. This value needs to be unique for all buyers. + * @return externalIdentifier + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "user-789123", value = "An external identifier that can be used to match the buyer against your own records. This value needs to be unique for all buyers.") + + public String getExternalIdentifier() { + return externalIdentifier; + } + + + public void setExternalIdentifier(String externalIdentifier) { + this.externalIdentifier = externalIdentifier; + } + + + public TransactionBuyerRequest displayName(String displayName) { + + this.displayName = displayName; + return this; + } + + /** + * A unique name for this buyer which is used in the Gr4vy admin panel to give a buyer a human readable name. + * @return displayName + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "John L.", value = "A unique name for this buyer which is used in the Gr4vy admin panel to give a buyer a human readable name.") + + public String getDisplayName() { + return displayName; + } + + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + + public TransactionBuyerRequest billingDetails(BillingDetailsRequest billingDetails) { + + this.billingDetails = billingDetails; + return this; + } + + /** + * The optional billing details for the a buyer. + * @return billingDetails + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "The optional billing details for the a buyer.") + + public BillingDetailsRequest getBillingDetails() { + return billingDetails; + } + + + public void setBillingDetails(BillingDetailsRequest billingDetails) { + this.billingDetails = billingDetails; + } + + + public TransactionBuyerRequest shippingDetails(BillingDetailsRequest shippingDetails) { + + this.shippingDetails = shippingDetails; + return this; + } + + /** + * The optional shipping details for the buyer. + * @return shippingDetails + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "The optional shipping details for the buyer.") + + public BillingDetailsRequest getShippingDetails() { + return shippingDetails; + } + + + public void setShippingDetails(BillingDetailsRequest shippingDetails) { + this.shippingDetails = shippingDetails; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionBuyerRequest transactionBuyerRequest = (TransactionBuyerRequest) o; + return Objects.equals(this.externalIdentifier, transactionBuyerRequest.externalIdentifier) && + Objects.equals(this.displayName, transactionBuyerRequest.displayName) && + Objects.equals(this.billingDetails, transactionBuyerRequest.billingDetails) && + Objects.equals(this.shippingDetails, transactionBuyerRequest.shippingDetails); + } + + @Override + public int hashCode() { + return Objects.hash(externalIdentifier, displayName, billingDetails, shippingDetails); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionBuyerRequest {\n"); + sb.append(" externalIdentifier: ").append(toIndentedString(externalIdentifier)).append("\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" billingDetails: ").append(toIndentedString(billingDetails)).append("\n"); + sb.append(" shippingDetails: ").append(toIndentedString(shippingDetails)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/gr4vy/api/model/TransactionPaymentMethodRequest.java b/src/main/java/com/gr4vy/api/model/TransactionPaymentMethodRequest.java index 38a9c90..327fbc4 100644 --- a/src/main/java/com/gr4vy/api/model/TransactionPaymentMethodRequest.java +++ b/src/main/java/com/gr4vy/api/model/TransactionPaymentMethodRequest.java @@ -92,16 +92,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), - + ID("id"), IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -162,6 +166,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/api/model/TransactionRedirectRequest.java b/src/main/java/com/gr4vy/api/model/TransactionRedirectRequest.java index 1ecf525..97b14ca 100644 --- a/src/main/java/com/gr4vy/api/model/TransactionRedirectRequest.java +++ b/src/main/java/com/gr4vy/api/model/TransactionRedirectRequest.java @@ -31,7 +31,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class TransactionRedirectRequest { /** - * The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported. + * The method to use, this can be any of the methods that support redirect requests. */ @JsonAdapter(MethodEnum.Adapter.class) public enum MethodEnum { @@ -111,10 +111,10 @@ public TransactionRedirectRequest method(MethodEnum method) { } /** - * The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported. + * The method to use, this can be any of the methods that support redirect requests. * @return method **/ - @ApiModelProperty(example = "paypal", required = true, value = "The method to use, this can be any of the methods that support redirect requests. When storing a new payment method, only `gocardless` and `stripedd` are currently supported.") + @ApiModelProperty(example = "paypal", required = true, value = "The method to use, this can be any of the methods that support redirect requests.") public MethodEnum getMethod() { return method; diff --git a/src/main/java/com/gr4vy/api/model/TransactionRequest.java b/src/main/java/com/gr4vy/api/model/TransactionRequest.java index b04b5c0..a852609 100644 --- a/src/main/java/com/gr4vy/api/model/TransactionRequest.java +++ b/src/main/java/com/gr4vy/api/model/TransactionRequest.java @@ -25,6 +25,7 @@ import com.gr4vy.api.model.ConnectionOptions; import com.gr4vy.api.model.StatementDescriptor; import com.gr4vy.api.model.ThreeDSecureDataV1V2; +import com.gr4vy.api.model.TransactionBuyerRequest; import com.gr4vy.api.model.TransactionGiftCardRequest; import com.gr4vy.api.model.TransactionPaymentMethodRequest; import io.swagger.annotations.ApiModel; @@ -74,6 +75,10 @@ public class TransactionRequest { @SerializedName(SERIALIZED_NAME_BUYER_ID) private UUID buyerId; + public static final String SERIALIZED_NAME_BUYER = "buyer"; + @SerializedName(SERIALIZED_NAME_BUYER) + private TransactionBuyerRequest buyer; + public static final String SERIALIZED_NAME_CART_ITEMS = "cart_items"; @SerializedName(SERIALIZED_NAME_CART_ITEMS) private List cartItems = null; @@ -423,6 +428,29 @@ public void setBuyerId(UUID buyerId) { } + public TransactionRequest buyer(TransactionBuyerRequest buyer) { + + this.buyer = buyer; + return this; + } + + /** + * Get buyer + * @return buyer + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public TransactionBuyerRequest getBuyer() { + return buyer; + } + + + public void setBuyer(TransactionBuyerRequest buyer) { + this.buyer = buyer; + } + + public TransactionRequest cartItems(List cartItems) { this.cartItems = cartItems; @@ -832,6 +860,7 @@ public boolean equals(Object o) { Objects.equals(this.browserInfo, transactionRequest.browserInfo) && Objects.equals(this.buyerExternalIdentifier, transactionRequest.buyerExternalIdentifier) && Objects.equals(this.buyerId, transactionRequest.buyerId) && + Objects.equals(this.buyer, transactionRequest.buyer) && Objects.equals(this.cartItems, transactionRequest.cartItems) && Objects.equals(this.connectionOptions, transactionRequest.connectionOptions) && Objects.equals(this.country, transactionRequest.country) && @@ -852,7 +881,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(amount, currency, paymentMethod, antiFraudFingerprint, asyncCapture, browserInfo, buyerExternalIdentifier, buyerId, cartItems, connectionOptions, country, externalIdentifier, giftCards, intent, isSubsequentPayment, merchantInitiated, metadata, paymentSource, previousSchemeTransactionId, shippingDetailsId, statementDescriptor, store, threeDSecureData, paymentServiceId); + return Objects.hash(amount, currency, paymentMethod, antiFraudFingerprint, asyncCapture, browserInfo, buyerExternalIdentifier, buyerId, buyer, cartItems, connectionOptions, country, externalIdentifier, giftCards, intent, isSubsequentPayment, merchantInitiated, metadata, paymentSource, previousSchemeTransactionId, shippingDetailsId, statementDescriptor, store, threeDSecureData, paymentServiceId); } @Override @@ -867,6 +896,7 @@ public String toString() { sb.append(" browserInfo: ").append(toIndentedString(browserInfo)).append("\n"); sb.append(" buyerExternalIdentifier: ").append(toIndentedString(buyerExternalIdentifier)).append("\n"); sb.append(" buyerId: ").append(toIndentedString(buyerId)).append("\n"); + sb.append(" buyer: ").append(toIndentedString(buyer)).append("\n"); sb.append(" cartItems: ").append(toIndentedString(cartItems)).append("\n"); sb.append(" connectionOptions: ").append(toIndentedString(connectionOptions)).append("\n"); sb.append(" country: ").append(toIndentedString(country)).append("\n"); diff --git a/src/main/java/com/gr4vy/api/model/TransactionSummary.java b/src/main/java/com/gr4vy/api/model/TransactionSummary.java index b8be8ff..62a15fe 100644 --- a/src/main/java/com/gr4vy/api/model/TransactionSummary.java +++ b/src/main/java/com/gr4vy/api/model/TransactionSummary.java @@ -308,14 +308,20 @@ public enum MethodEnum { GOOGLEPAY("googlepay"), + GOOGLEPAY_PAN_ONLY("googlepay_pan_only"), + GOPAY("gopay"), GRABPAY("grabpay"), + ID("id"), + IDEAL("ideal"), KAKAOPAY("kakaopay"), + KCP("kcp"), + KLARNA("klarna"), LAYBUY("laybuy"), @@ -376,6 +382,8 @@ public enum MethodEnum { SOFORT("sofort"), + SPEI("spei"), + STRIPEDD("stripedd"), THAIQR("thaiqr"), diff --git a/src/main/java/com/gr4vy/sdk/Gr4vyClient.java b/src/main/java/com/gr4vy/sdk/Gr4vyClient.java index 027a764..b4407ee 100644 --- a/src/main/java/com/gr4vy/sdk/Gr4vyClient.java +++ b/src/main/java/com/gr4vy/sdk/Gr4vyClient.java @@ -313,10 +313,13 @@ public String get(String endpoint) throws Gr4vyException { } public String post(String endpoint, String jsonBody) throws Gr4vyException { - return this.post(endpoint, jsonBody, null); + return this.post(endpoint, jsonBody, null, null); } public String post(String endpoint, String jsonBody, String idempotencyKey) throws Gr4vyException { + return this.post(endpoint, jsonBody, idempotencyKey, null); + } + public String post(String endpoint, String jsonBody, String idempotencyKey, String ipAddress) throws Gr4vyException { String[] scopes = {"*.read", "*.write"}; String accessToken = null; try { @@ -335,6 +338,9 @@ public String post(String endpoint, String jsonBody, String idempotencyKey) thro if (idempotencyKey != null) { requestBuilder.addHeader("Idempotency-Key", idempotencyKey); + } + if (ipAddress != null) { + requestBuilder.addHeader("X-Forwarded-For", ipAddress); } if (jsonBody != null) { RequestBody body = RequestBody.create(jsonBody, JSON); @@ -535,6 +541,10 @@ public Transaction newTransaction(TransactionRequest request, String idempotency String response = this.post("/transactions", this.gson.toJson(request), idempotencyKey); return this.gson.fromJson(response,Transaction.class); } + public Transaction newTransaction(TransactionRequest request, String idempotencyKey, String ipAddress) { + String response = this.post("/transactions", this.gson.toJson(request), idempotencyKey, ipAddress); + return this.gson.fromJson(response,Transaction.class); + } public Transaction getTransaction(String transactionId) { String response = this.get("/transactions/" + transactionId); return this.gson.fromJson(response,Transaction.class); diff --git a/src/test/java/com/gr4vy/sdk/Gr4vyClientTest.java b/src/test/java/com/gr4vy/sdk/Gr4vyClientTest.java index e9633e8..cd8f23f 100644 --- a/src/test/java/com/gr4vy/sdk/Gr4vyClientTest.java +++ b/src/test/java/com/gr4vy/sdk/Gr4vyClientTest.java @@ -262,6 +262,26 @@ public void newTransactionWithIdempotencyTest() throws Gr4vyException { assert response != null; } + @Test + public void newTransactionWithIdempotencyAndIpAddressTest() throws Gr4vyException { + TransactionPaymentMethodRequest pm = new TransactionPaymentMethodRequest() + .method(MethodEnum.CARD) + .number("4111111111111111") + .securityCode("123") + .expirationDate("12/26"); + + TransactionRequest request = new TransactionRequest() + .amount(200) + .currency("USD") + .paymentMethod(pm); + + UUID idempotencyKey = UUID.randomUUID(); + Transaction response = shared.newTransaction(request, idempotencyKey.toString(), "64.233.160.0"); + assert response != null; + } + + + @Test public void newTransactionWithStoredPaymentMethodTest() throws Gr4vyException {