diff --git a/src/main/java/com/checkout/GsonSerializer.java b/src/main/java/com/checkout/GsonSerializer.java index ae498b8f..40a90956 100644 --- a/src/main/java/com/checkout/GsonSerializer.java +++ b/src/main/java/com/checkout/GsonSerializer.java @@ -19,7 +19,6 @@ import com.checkout.issuing.controls.responses.create.VelocityCardControlResponse; import com.checkout.payments.PaymentDestinationType; import com.checkout.payments.previous.PaymentAction; -import com.checkout.payments.PaymentPlanType; import com.checkout.payments.sender.Sender; import com.checkout.payments.sender.SenderType; import com.checkout.webhooks.previous.WebhookResponse; @@ -100,7 +99,9 @@ public class GsonSerializer implements Serializer { // Payment Contexts .registerTypeAdapterFactory(RuntimeTypeAdapterFactory.of(com.checkout.payments.response.source.contexts.ResponseSource.class, CheckoutUtils.TYPE, true, com.checkout.payments.response.source.contexts.AlternativePaymentSourceResponse.class) .registerSubtype(com.checkout.payments.response.source.contexts.PaymentContextsPayPalResponseSource.class, identifier(PaymentSourceType.PAYPAL)) - .registerSubtype(com.checkout.payments.response.source.contexts.PaymentContextsKlarnaResponseSource.class, identifier(PaymentSourceType.KLARNA))) + .registerSubtype(com.checkout.payments.response.source.contexts.PaymentContextsKlarnaResponseSource.class, identifier(PaymentSourceType.KLARNA)) + .registerSubtype(com.checkout.payments.response.source.contexts.PaymentContextsStcpayResponseSource.class, identifier(PaymentSourceType.STCPAY)) + .registerSubtype(com.checkout.payments.response.source.contexts.PaymentContextsTabbyResponseSource.class, identifier(PaymentSourceType.TABBY))) // Payments - destination .registerTypeAdapterFactory(RuntimeTypeAdapterFactory.of(com.checkout.payments.response.destination.PaymentResponseDestination.class, CheckoutUtils.TYPE, true, com.checkout.payments.response.destination.PaymentResponseAlternativeDestination.class) .registerSubtype(com.checkout.payments.response.destination.PaymentResponseBankAccountDestination.class, identifier(PaymentDestinationType.BANK_ACCOUNT))) diff --git a/src/main/java/com/checkout/common/AccountHolder.java b/src/main/java/com/checkout/common/AccountHolder.java index 3d0ff795..119e9047 100644 --- a/src/main/java/com/checkout/common/AccountHolder.java +++ b/src/main/java/com/checkout/common/AccountHolder.java @@ -1,55 +1,38 @@ package com.checkout.common; -import com.google.gson.annotations.SerializedName; -import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.ToString; @Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public final class AccountHolder { - - private AccountHolderType type; - - @SerializedName("full_name") - private String fullName; - - @SerializedName("first_name") - private String firstName; - - @SerializedName("middle_name") - private String middleName; - - @SerializedName("last_name") - private String lastName; - - private String email; - - private String gender; - - @SerializedName("company_name") - private String companyName; - - @SerializedName("tax_id") - private String taxId; - - @SerializedName("date_of_birth") - private String dateOfBirth; - - @SerializedName("country_of_birth") - private CountryCode countryOfBirth; - - @SerializedName("residential_status") - private String residentialStatus; - - @SerializedName("billing_address") - private Address billingAddress; - - private Phone phone; - - private AccountHolderIdentification identification; +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public final class AccountHolder extends AccountHolderBase { + + private Boolean accountNameInquiry; + + @Builder + private AccountHolder( + final AccountHolderType type, + final String fullName, + final String firstName, + final String middleName, + final String lastName, + final String email, + final String gender, + final String companyName, + final String taxId, + final String dateOfBirth, + final CountryCode countryOfBirth, + final String residentialStatus, + final Address billingAddress, + final Phone phone, + final AccountHolderIdentification identification, + final Boolean accountNameInquiry + ) { + super(type, fullName, firstName, middleName, lastName, email, gender, companyName, taxId, dateOfBirth, countryOfBirth, residentialStatus, billingAddress, phone, identification); + this.accountNameInquiry = accountNameInquiry; + } } diff --git a/src/main/java/com/checkout/common/AccountHolderBase.java b/src/main/java/com/checkout/common/AccountHolderBase.java new file mode 100644 index 00000000..8490e2b1 --- /dev/null +++ b/src/main/java/com/checkout/common/AccountHolderBase.java @@ -0,0 +1,53 @@ +package com.checkout.common; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AccountHolderBase { + + private AccountHolderType type; + + @SerializedName("full_name") + private String fullName; + + @SerializedName("first_name") + private String firstName; + + @SerializedName("middle_name") + private String middleName; + + @SerializedName("last_name") + private String lastName; + + private String email; + + private String gender; + + @SerializedName("company_name") + private String companyName; + + @SerializedName("tax_id") + private String taxId; + + @SerializedName("date_of_birth") + private String dateOfBirth; + + @SerializedName("country_of_birth") + private CountryCode countryOfBirth; + + @SerializedName("residential_status") + private String residentialStatus; + + @SerializedName("billing_address") + private Address billingAddress; + + private Phone phone; + + private AccountHolderIdentification identification; + +} diff --git a/src/main/java/com/checkout/common/AccountHolderResponse.java b/src/main/java/com/checkout/common/AccountHolderResponse.java new file mode 100644 index 00000000..f5cbba4b --- /dev/null +++ b/src/main/java/com/checkout/common/AccountHolderResponse.java @@ -0,0 +1,14 @@ +package com.checkout.common; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public final class AccountHolderResponse extends AccountHolderBase { + + private AccountNameInquiryType accountNameInquiry; + +} diff --git a/src/main/java/com/checkout/common/AccountNameInquiryType.java b/src/main/java/com/checkout/common/AccountNameInquiryType.java new file mode 100644 index 00000000..3a580db8 --- /dev/null +++ b/src/main/java/com/checkout/common/AccountNameInquiryType.java @@ -0,0 +1,22 @@ +package com.checkout.common; + +import com.google.gson.annotations.SerializedName; + +public enum AccountNameInquiryType { + + @SerializedName("full_match") + FULL_MATCH, + + @SerializedName("partial_match") + PARTIAL_MATCH, + + @SerializedName("no_match") + NO_MATCH, + + @SerializedName("not_performed") + NOT_PERFORMED, + + @SerializedName("not_supported") + NOT_SUPPORTED + +} diff --git a/src/main/java/com/checkout/common/PaymentSourceType.java b/src/main/java/com/checkout/common/PaymentSourceType.java index e95c7290..08ba34b1 100644 --- a/src/main/java/com/checkout/common/PaymentSourceType.java +++ b/src/main/java/com/checkout/common/PaymentSourceType.java @@ -14,6 +14,8 @@ public enum PaymentSourceType { NETWORK_TOKEN, @SerializedName("token") TOKEN, + @SerializedName("ach") + ACH, @SerializedName("customer") CUSTOMER, @SerializedName("applepay") @@ -52,6 +54,10 @@ public enum PaymentSourceType { PAYPAL, @SerializedName("multibanco") MULTIBANCO, + @SerializedName("octopus") + OCTOPUS, + @SerializedName("plaid") + PLAID, @SerializedName("eps") EPS, @SerializedName("illicado") @@ -62,6 +68,8 @@ public enum PaymentSourceType { P24, @SerializedName("benefitpay") BENEFITPAY, + @SerializedName("bizum") + BIZUM, @SerializedName("bancontact") BANCONTACT, @SerializedName("tamara") @@ -105,6 +113,9 @@ public enum PaymentSourceType { @SerializedName("trustly") TRUSTLY, @SerializedName("cvconnect") - CV_CONNECT - + CV_CONNECT, + @SerializedName("sequra") + SEQURA, + @SerializedName("tabby") + TABBY } diff --git a/src/main/java/com/checkout/disputes/CompellingEvidence.java b/src/main/java/com/checkout/disputes/CompellingEvidence.java new file mode 100644 index 00000000..4acc24d8 --- /dev/null +++ b/src/main/java/com/checkout/disputes/CompellingEvidence.java @@ -0,0 +1,37 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; + +import java.time.Instant; +import java.util.List; + +public class CompellingEvidence { + + @SerializedName("merchandise_or_service") + private String merchandiseOrService; + + @SerializedName("merchandise_or_service_desc") + private String merchandiseOrServiceDesc; + + @SerializedName("merchandise_or_service_provided_date") + private Instant merchandiseOrServiceProvidedDate; + + @SerializedName("shipping_delivery_status") + private ShippingDeliveryStatusType shippingDeliveryStatus; + + @SerializedName("tracking_information") + private TrackingInformationType trackingInformation; + + @SerializedName("user_id") + private String userId; + + @SerializedName("ip_address") + private String ipAddress; + + @SerializedName("shipping_address") + private ShippingAddress shippingAddress; + + @SerializedName("historical_transactions") + private List historicalTransactions; + +} diff --git a/src/main/java/com/checkout/disputes/DisputeDetailsResponse.java b/src/main/java/com/checkout/disputes/DisputeDetailsResponse.java index 9e9d43fb..0fd8eabd 100644 --- a/src/main/java/com/checkout/disputes/DisputeDetailsResponse.java +++ b/src/main/java/com/checkout/disputes/DisputeDetailsResponse.java @@ -53,4 +53,18 @@ public final class DisputeDetailsResponse extends Resource { @SerializedName("sub_entity_id") private String subEntityId; + private String reference; + + @SerializedName("is_ce_candidate") + private Boolean isCeCandidate; + + @SerializedName("evidence_list") + private List evidenceList; + + @SerializedName("evidence_bundle") + private List evidenceBundle; + + @SerializedName("segment_id") + private String segmentId; + } diff --git a/src/main/java/com/checkout/disputes/DisputeEvidenceRequest.java b/src/main/java/com/checkout/disputes/DisputeEvidenceRequest.java index ee3f8787..cc4ba06b 100644 --- a/src/main/java/com/checkout/disputes/DisputeEvidenceRequest.java +++ b/src/main/java/com/checkout/disputes/DisputeEvidenceRequest.java @@ -1,16 +1,16 @@ package com.checkout.disputes; -import com.checkout.common.Link; +import com.checkout.common.Resource; import com.google.gson.annotations.SerializedName; import lombok.Builder; import lombok.Data; import javax.validation.constraints.Size; -import java.util.Map; +import java.util.List; @Data @Builder -public final class DisputeEvidenceRequest { +public final class DisputeEvidenceRequest extends Resource { @SerializedName("proof_of_delivery_or_service_file") private String proofOfDeliveryOrServiceFile; @@ -67,7 +67,19 @@ public final class DisputeEvidenceRequest { @SerializedName("proof_of_delivery_or_service_date_text") private String proofOfDeliveryOrServiceDateText; - @SerializedName("_links") - private Map links; + @SerializedName("arbitration_no_review_text") + private String arbitrationNoReviewText; + + @SerializedName("arbitration_no_review_files") + private List arbitrationNoReviewFiles; + + @SerializedName("arbitration_review_required_text") + private String arbitrationReviewRequiredText; + + @SerializedName("arbitration_review_required_files") + private List arbitrationReviewRequiredFiles; + + @SerializedName("compelling_evidence") + private CompellingEvidence compellingEvidence; } diff --git a/src/main/java/com/checkout/disputes/DisputeEvidenceResponse.java b/src/main/java/com/checkout/disputes/DisputeEvidenceResponse.java index 3ef688ca..334cc1ff 100644 --- a/src/main/java/com/checkout/disputes/DisputeEvidenceResponse.java +++ b/src/main/java/com/checkout/disputes/DisputeEvidenceResponse.java @@ -1,15 +1,18 @@ package com.checkout.disputes; +import com.checkout.HttpMetadata; import com.checkout.common.Resource; import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import java.util.List; + @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public final class DisputeEvidenceResponse extends Resource { +public final class DisputeEvidenceResponse extends HttpMetadata { @SerializedName("proof_of_delivery_or_service_file") private String proofOfDeliveryOrServiceFile; @@ -59,4 +62,19 @@ public final class DisputeEvidenceResponse extends Resource { @SerializedName("proof_of_delivery_or_service_date_text") private String proofOfDeliveryOrServiceDateText; + @SerializedName("arbitration_no_review_text") + private String arbitrationNoReviewText; + + @SerializedName("arbitration_no_review_files") + private List arbitrationNoReviewFiles; + + @SerializedName("arbitration_review_required_text") + private String arbitrationReviewRequiredText; + + @SerializedName("arbitration_review_required_files") + private List arbitrationReviewRequiredFiles; + + @SerializedName("compelling_evidence") + private CompellingEvidence compellingEvidence; + } diff --git a/src/main/java/com/checkout/disputes/DisputeRelevantEvidence.java b/src/main/java/com/checkout/disputes/DisputeRelevantEvidence.java index 04d7afb2..067cd558 100644 --- a/src/main/java/com/checkout/disputes/DisputeRelevantEvidence.java +++ b/src/main/java/com/checkout/disputes/DisputeRelevantEvidence.java @@ -23,6 +23,12 @@ public enum DisputeRelevantEvidence { RECURRING_TRANSACTION_AGREEMENT, @SerializedName("additional_evidence") - ADDITIONAL_EVIDENCE + ADDITIONAL_EVIDENCE, + + @SerializedName("arbitration_no_review") + ARBITRATION_NO_REVIEW, + + @SerializedName("arbitration_review_required") + ARBITRATION_REVIEW_REQUIRED } diff --git a/src/main/java/com/checkout/disputes/DisputeStatus.java b/src/main/java/com/checkout/disputes/DisputeStatus.java index 64759d47..dddc2d0d 100644 --- a/src/main/java/com/checkout/disputes/DisputeStatus.java +++ b/src/main/java/com/checkout/disputes/DisputeStatus.java @@ -36,7 +36,10 @@ public enum DisputeStatus { EVIDENCE_UNDER_REVIEW("evidence_under_review"), @SerializedName("arbitration_under_review") - ARBITRATION_UNDER_REVIEW("arbitration_under_review"); + ARBITRATION_UNDER_REVIEW("arbitration_under_review"), + + @SerializedName("arb_evidence_submitted") + ARB_EVIDENCE_SUBMITTED("arb_evidence_submitted"); @Getter private final String status; diff --git a/src/main/java/com/checkout/disputes/DisputesClient.java b/src/main/java/com/checkout/disputes/DisputesClient.java index 731a7087..e7608bbb 100644 --- a/src/main/java/com/checkout/disputes/DisputesClient.java +++ b/src/main/java/com/checkout/disputes/DisputesClient.java @@ -21,12 +21,16 @@ public interface DisputesClient { CompletableFuture submitEvidence(String disputeId); - CompletableFuture uploadFile(FileRequest fileRequest); - - CompletableFuture getFileDetails(String fileId); + CompletableFuture submitArbitrationEvidence(String disputeId); CompletableFuture getCompiledSubmittedEvidence(String disputeId); + CompletableFuture getCompiledSubmittedArbitrationEvidence(String disputeId); + CompletableFuture getDisputeSchemeFiles(String disputeId); + CompletableFuture uploadFile(FileRequest fileRequest); + + CompletableFuture getFileDetails(String fileId); + } diff --git a/src/main/java/com/checkout/disputes/DisputesClientImpl.java b/src/main/java/com/checkout/disputes/DisputesClientImpl.java index 1539875e..880f2c0b 100644 --- a/src/main/java/com/checkout/disputes/DisputesClientImpl.java +++ b/src/main/java/com/checkout/disputes/DisputesClientImpl.java @@ -20,6 +20,7 @@ public class DisputesClientImpl extends AbstractClient implements DisputesClient private static final String ACCEPT_PATH = "accept"; private static final String EVIDENCE_PATH = "evidence"; private static final String SUBMITTED_PATH = "submitted"; + private static final String ARBITRATION_PATH = "arbitration"; private static final String SCHEME_FILES_PATH = "schemefiles"; public DisputesClientImpl(final ApiClient apiClient, final CheckoutConfiguration configuration, final SdkAuthorizationType sdkAuthorizationType) { @@ -87,29 +88,31 @@ public CompletableFuture submitEvidence(final String disputeId) { } @Override - public CompletableFuture uploadFile(final FileRequest fileRequest) { - validateParams("fileRequest", fileRequest); - return apiClient.submitFileAsync( - FILES_PATH, + public CompletableFuture submitArbitrationEvidence(String disputeId) { + validateParams("disputeId", disputeId); + return apiClient.postAsync( + buildPath(DISPUTES_PATH, disputeId, EVIDENCE_PATH, ARBITRATION_PATH), sdkAuthorization(), - fileRequest, - IdResponse.class); + EmptyResponse.class, + null, + null); } @Override - public CompletableFuture getFileDetails(final String fileId) { - validateParams("fileId", fileId); + public CompletableFuture getCompiledSubmittedEvidence(String disputeId) { + validateParams("disputeId", disputeId); return apiClient.getAsync( - buildPath(FILES_PATH, fileId), + buildPath(DISPUTES_PATH, disputeId, EVIDENCE_PATH, SUBMITTED_PATH), sdkAuthorization(), - FileDetailsResponse.class); + DisputeCompiledSubmittedEvidenceResponse.class + ); } @Override - public CompletableFuture getCompiledSubmittedEvidence(String disputeId) { + public CompletableFuture getCompiledSubmittedArbitrationEvidence(String disputeId) { validateParams("disputeId", disputeId); return apiClient.getAsync( - buildPath(DISPUTES_PATH, disputeId, EVIDENCE_PATH, SUBMITTED_PATH), + buildPath(DISPUTES_PATH, disputeId, EVIDENCE_PATH, ARBITRATION_PATH, SUBMITTED_PATH), sdkAuthorization(), DisputeCompiledSubmittedEvidenceResponse.class ); @@ -124,4 +127,24 @@ public CompletableFuture getDisputeSchemeFiles(final String SchemeFileResponse.class ); } + + @Override + public CompletableFuture uploadFile(final FileRequest fileRequest) { + validateParams("fileRequest", fileRequest); + return apiClient.submitFileAsync( + FILES_PATH, + sdkAuthorization(), + fileRequest, + IdResponse.class); + } + + @Override + public CompletableFuture getFileDetails(final String fileId) { + validateParams("fileId", fileId); + return apiClient.getAsync( + buildPath(FILES_PATH, fileId), + sdkAuthorization(), + FileDetailsResponse.class); + } + } diff --git a/src/main/java/com/checkout/disputes/DisputesQueryFilter.java b/src/main/java/com/checkout/disputes/DisputesQueryFilter.java index fad8feea..1c78e0e0 100644 --- a/src/main/java/com/checkout/disputes/DisputesQueryFilter.java +++ b/src/main/java/com/checkout/disputes/DisputesQueryFilter.java @@ -63,4 +63,10 @@ public final class DisputesQueryFilter { @SerializedName("payment_mcc") private String paymentMcc; + @SerializedName("processing_channel_ids") + private String processingChannelIds; + + @SerializedName("segment_ids") + private String SegmentIds; + } diff --git a/src/main/java/com/checkout/disputes/DisputesQueryResponse.java b/src/main/java/com/checkout/disputes/DisputesQueryResponse.java index 3f90b002..ff5b136e 100644 --- a/src/main/java/com/checkout/disputes/DisputesQueryResponse.java +++ b/src/main/java/com/checkout/disputes/DisputesQueryResponse.java @@ -54,4 +54,10 @@ public final class DisputesQueryResponse extends HttpMetadata { @SerializedName("payment_mcc") private String paymentMcc; + @SerializedName("processing_channel_ids") + private String processingChannelIds; + + @SerializedName("segment_ids") + private String SegmentIds; + } diff --git a/src/main/java/com/checkout/disputes/EvidenceBundle.java b/src/main/java/com/checkout/disputes/EvidenceBundle.java new file mode 100644 index 00000000..202adeb6 --- /dev/null +++ b/src/main/java/com/checkout/disputes/EvidenceBundle.java @@ -0,0 +1,34 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.Instant; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public final class EvidenceBundle { + + @SerializedName("dispute_id") + private Long disputeId; + + private String filename; + + @SerializedName("file_size") + private Long fileSize; + + @SerializedName("is_file_oversized") + private Boolean isFileOversized; + + @SerializedName("created_at") + private Instant createdAt; + + @SerializedName("modified_at") + private Instant modifiedAt; + +} diff --git a/src/main/java/com/checkout/disputes/EvidenceList.java b/src/main/java/com/checkout/disputes/EvidenceList.java new file mode 100644 index 00000000..938c9189 --- /dev/null +++ b/src/main/java/com/checkout/disputes/EvidenceList.java @@ -0,0 +1,24 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public final class EvidenceList { + + private String file; + + private String text; + + private DisputeRelevantEvidence type; + + @SerializedName("dispute_id") + private String disputeId; + +} diff --git a/src/main/java/com/checkout/disputes/HistoricalTransactions.java b/src/main/java/com/checkout/disputes/HistoricalTransactions.java new file mode 100644 index 00000000..55c8b876 --- /dev/null +++ b/src/main/java/com/checkout/disputes/HistoricalTransactions.java @@ -0,0 +1,21 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public final class HistoricalTransactions { + + @SerializedName("historical_arn") + private String historicalArn; + + @SerializedName("merchandise_or_service_desc") + private String merchandiseOrServiceDesc; + +} diff --git a/src/main/java/com/checkout/disputes/PaymentDispute.java b/src/main/java/com/checkout/disputes/PaymentDispute.java index feca0202..cc9f6e5d 100644 --- a/src/main/java/com/checkout/disputes/PaymentDispute.java +++ b/src/main/java/com/checkout/disputes/PaymentDispute.java @@ -49,4 +49,6 @@ public final class PaymentDispute extends Resource { @SerializedName("has_refund") private Boolean hasRefund; + private String reference; + } diff --git a/src/main/java/com/checkout/disputes/ShippingAddress.java b/src/main/java/com/checkout/disputes/ShippingAddress.java new file mode 100644 index 00000000..54a4ed04 --- /dev/null +++ b/src/main/java/com/checkout/disputes/ShippingAddress.java @@ -0,0 +1,30 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public final class ShippingAddress { + + private String address; + + @SerializedName("address_2") + private String address2; + + private String city; + + @SerializedName("state_region") + private String stateRegion; + + @SerializedName("postal_code") + private String postalCode; + + private String country; + +} diff --git a/src/main/java/com/checkout/disputes/ShippingDeliveryStatusType.java b/src/main/java/com/checkout/disputes/ShippingDeliveryStatusType.java new file mode 100644 index 00000000..de721fa1 --- /dev/null +++ b/src/main/java/com/checkout/disputes/ShippingDeliveryStatusType.java @@ -0,0 +1,36 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; + +public enum ShippingDeliveryStatusType { + + @SerializedName("not_shipped") + NOT_SHIPPED, + + @SerializedName("back_ordered") + BACK_ORDERED, + + @SerializedName("in_transit") + IN_TRANSIT, + + @SerializedName("partial_shipped") + PARTIAL_SHIPPED, + + @SerializedName("shipped") + SHIPPED, + + @SerializedName("cancelled") + CANCELLED, + + @SerializedName("shipping_exception") + SHIPPING_EXCEPTION, + + @SerializedName("picked_up_by_customer") + PICKED_UP_BY_CUSTOMER, + + @SerializedName("delivered") + DELIVERED, + + @SerializedName("other") + OTHER +} diff --git a/src/main/java/com/checkout/disputes/TrackingInformationType.java b/src/main/java/com/checkout/disputes/TrackingInformationType.java new file mode 100644 index 00000000..fe054f8b --- /dev/null +++ b/src/main/java/com/checkout/disputes/TrackingInformationType.java @@ -0,0 +1,24 @@ +package com.checkout.disputes; + +import com.google.gson.annotations.SerializedName; + +public enum TrackingInformationType { + + @SerializedName("in_transit") + IN_TRANSIT, + + @SerializedName("partial_shipped") + PARTIAL_SHIPPED, + + @SerializedName("shipped") + SHIPPED, + + @SerializedName("shipping_exception") + SHIPPING_EXCEPTION, + + @SerializedName("delivered") + DELIVERED, + + @SerializedName("other") + OTHER +} diff --git a/src/main/java/com/checkout/payments/AccountUpdateStatusType.java b/src/main/java/com/checkout/payments/AccountUpdateStatusType.java new file mode 100644 index 00000000..4e7db35d --- /dev/null +++ b/src/main/java/com/checkout/payments/AccountUpdateStatusType.java @@ -0,0 +1,19 @@ +package com.checkout.payments; + +import com.google.gson.annotations.SerializedName; + +public enum AccountUpdateStatusType { + + @SerializedName("card_updated") + CARD_UPDATED, + + @SerializedName("card_expiry_updated") + CARD_EXPIRY_UPDATED, + + @SerializedName("card_closed") + CARD_CLOSED, + + @SerializedName("contact_cardholder") + CONTACT_CARDHOLDER + +} diff --git a/src/main/java/com/checkout/payments/AmountVariability.java b/src/main/java/com/checkout/payments/AmountVariabilityType.java similarity index 82% rename from src/main/java/com/checkout/payments/AmountVariability.java rename to src/main/java/com/checkout/payments/AmountVariabilityType.java index 2d4e69fe..569c59f5 100644 --- a/src/main/java/com/checkout/payments/AmountVariability.java +++ b/src/main/java/com/checkout/payments/AmountVariabilityType.java @@ -2,7 +2,7 @@ import com.google.gson.annotations.SerializedName; -public enum AmountVariability { +public enum AmountVariabilityType { @SerializedName("Fixed") FIXED, diff --git a/src/main/java/com/checkout/payments/PaymentPlanType.java b/src/main/java/com/checkout/payments/PaymentPlan.java similarity index 81% rename from src/main/java/com/checkout/payments/PaymentPlanType.java rename to src/main/java/com/checkout/payments/PaymentPlan.java index 2fa44e1c..0ad24fe9 100644 --- a/src/main/java/com/checkout/payments/PaymentPlanType.java +++ b/src/main/java/com/checkout/payments/PaymentPlan.java @@ -1,20 +1,18 @@ package com.checkout.payments; import com.google.gson.annotations.SerializedName; -import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import java.time.Instant; @Data @Builder -public final class PaymentPlanType { +public final class PaymentPlan { // Recurring @SerializedName("amount_variability") - private AmountVariability amountVariability; + private AmountVariabilityType amountVariabilityType; // Installment private Boolean financing; diff --git a/src/main/java/com/checkout/payments/links/PaymentLinkRequest.java b/src/main/java/com/checkout/payments/links/PaymentLinkRequest.java index ae164e66..454cdced 100644 --- a/src/main/java/com/checkout/payments/links/PaymentLinkRequest.java +++ b/src/main/java/com/checkout/payments/links/PaymentLinkRequest.java @@ -14,6 +14,7 @@ import com.checkout.payments.ShippingDetails; import com.checkout.payments.ThreeDSRequest; import com.checkout.payments.request.PaymentRetryRequest; +import com.checkout.payments.sender.PaymentSender; import com.google.gson.annotations.SerializedName; import lombok.Builder; import lombok.Data; @@ -91,6 +92,8 @@ public final class PaymentLinkRequest { @SerializedName("customer_retry") private PaymentRetryRequest customerRetry; + private PaymentSender sender; + @SerializedName("processing_channel_id") private String processingChannelId; diff --git a/src/main/java/com/checkout/payments/request/PaymentRequest.java b/src/main/java/com/checkout/payments/request/PaymentRequest.java index 6a1c2902..53890e44 100644 --- a/src/main/java/com/checkout/payments/request/PaymentRequest.java +++ b/src/main/java/com/checkout/payments/request/PaymentRequest.java @@ -14,7 +14,7 @@ import com.checkout.payments.ShippingDetails; import com.checkout.payments.ThreeDSRequest; import com.checkout.payments.request.source.AbstractRequestSource; -import com.checkout.payments.PaymentPlanType; +import com.checkout.payments.PaymentPlan; import com.checkout.payments.sender.PaymentSender; import com.google.gson.annotations.SerializedName; import lombok.Builder; @@ -38,11 +38,12 @@ public final class PaymentRequest { private Currency currency; + @Builder.Default @SerializedName("payment_type") private PaymentType paymentType = PaymentType.REGULAR; @SerializedName("payment_plan") - private PaymentPlanType paymentPlan; + private PaymentPlan paymentPlan; @SerializedName("merchant_initiated") private Boolean merchantInitiated; diff --git a/src/main/java/com/checkout/payments/request/source/RequestCardSource.java b/src/main/java/com/checkout/payments/request/source/RequestCardSource.java index e33a71da..ddd352c0 100644 --- a/src/main/java/com/checkout/payments/request/source/RequestCardSource.java +++ b/src/main/java/com/checkout/payments/request/source/RequestCardSource.java @@ -1,5 +1,6 @@ package com.checkout.payments.request.source; +import com.checkout.common.AccountHolder; import com.checkout.common.Address; import com.checkout.common.PaymentSourceType; import com.checkout.common.Phone; @@ -38,6 +39,9 @@ public final class RequestCardSource extends AbstractRequestSource { private Phone phone; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder private RequestCardSource(final String number, final Integer expiryMonth, @@ -47,7 +51,8 @@ private RequestCardSource(final String number, final Boolean stored, final Boolean storeForFutureUse, final Address billingAddress, - final Phone phone) { + final Phone phone, + final AccountHolder accountHolder) { super(PaymentSourceType.CARD); this.number = number; this.expiryMonth = expiryMonth; @@ -58,6 +63,7 @@ private RequestCardSource(final String number, this.storeForFutureUse = storeForFutureUse; this.billingAddress = billingAddress; this.phone = phone; + this.accountHolder = accountHolder; } public RequestCardSource() { diff --git a/src/main/java/com/checkout/payments/request/source/RequestCustomerSource.java b/src/main/java/com/checkout/payments/request/source/RequestCustomerSource.java index dd78e32e..55b44694 100644 --- a/src/main/java/com/checkout/payments/request/source/RequestCustomerSource.java +++ b/src/main/java/com/checkout/payments/request/source/RequestCustomerSource.java @@ -1,6 +1,8 @@ package com.checkout.payments.request.source; +import com.checkout.common.AccountHolder; import com.checkout.common.PaymentSourceType; +import com.google.gson.annotations.SerializedName; import lombok.Builder; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -15,10 +17,15 @@ public final class RequestCustomerSource extends AbstractRequestSource { private String id; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder - private RequestCustomerSource(final String id) { + private RequestCustomerSource(final String id, + final AccountHolder accountHolder) { super(PaymentSourceType.CUSTOMER); this.id = id; + this.accountHolder = accountHolder; } public RequestCustomerSource() { diff --git a/src/main/java/com/checkout/payments/request/source/RequestIdSource.java b/src/main/java/com/checkout/payments/request/source/RequestIdSource.java index 4a610740..aa1c66a8 100644 --- a/src/main/java/com/checkout/payments/request/source/RequestIdSource.java +++ b/src/main/java/com/checkout/payments/request/source/RequestIdSource.java @@ -1,5 +1,6 @@ package com.checkout.payments.request.source; +import com.checkout.common.AccountHolder; import com.checkout.common.PaymentSourceType; import com.google.gson.annotations.SerializedName; import lombok.Builder; @@ -26,18 +27,23 @@ public final class RequestIdSource extends AbstractRequestSource { @SerializedName("store_for_future_use") private Boolean storeForFutureUse; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder private RequestIdSource(final String id, final String cvv, final String paymentMethod, final Boolean stored, - final Boolean storeForFutureUse) { + final Boolean storeForFutureUse, + final AccountHolder accountHolder) { super(PaymentSourceType.ID); this.id = id; this.cvv = cvv; this.paymentMethod = paymentMethod; this.stored = stored; this.storeForFutureUse = storeForFutureUse; + this.accountHolder = accountHolder; } public RequestIdSource() { diff --git a/src/main/java/com/checkout/payments/request/source/RequestNetworkTokenSource.java b/src/main/java/com/checkout/payments/request/source/RequestNetworkTokenSource.java index cf4d8a0b..b2615911 100644 --- a/src/main/java/com/checkout/payments/request/source/RequestNetworkTokenSource.java +++ b/src/main/java/com/checkout/payments/request/source/RequestNetworkTokenSource.java @@ -1,5 +1,6 @@ package com.checkout.payments.request.source; +import com.checkout.common.AccountHolder; import com.checkout.common.Address; import com.checkout.common.Phone; import com.checkout.payments.NetworkTokenType; @@ -44,6 +45,9 @@ public final class RequestNetworkTokenSource extends AbstractRequestSource { private Phone phone; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder private RequestNetworkTokenSource(final String token, final Integer expiryMonth, @@ -55,7 +59,8 @@ private RequestNetworkTokenSource(final String token, final String name, final String cvv, final Address billingAddress, - final Phone phone) { + final Phone phone, + final AccountHolder accountHolder) { super(NETWORK_TOKEN); this.token = token; this.expiryMonth = expiryMonth; @@ -68,6 +73,7 @@ private RequestNetworkTokenSource(final String token, this.cvv = cvv; this.billingAddress = billingAddress; this.phone = phone; + this.accountHolder = accountHolder; } public RequestNetworkTokenSource() { diff --git a/src/main/java/com/checkout/payments/request/source/RequestTokenSource.java b/src/main/java/com/checkout/payments/request/source/RequestTokenSource.java index 0e754773..07e10fba 100644 --- a/src/main/java/com/checkout/payments/request/source/RequestTokenSource.java +++ b/src/main/java/com/checkout/payments/request/source/RequestTokenSource.java @@ -1,5 +1,6 @@ package com.checkout.payments.request.source; +import com.checkout.common.AccountHolder; import com.checkout.common.Address; import com.checkout.common.PaymentSourceType; import com.checkout.common.Phone; @@ -28,18 +29,23 @@ public final class RequestTokenSource extends AbstractRequestSource { @SerializedName("store_for_future_use") private Boolean storeForFutureUse; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder private RequestTokenSource(final String token, final Address billingAddress, final Phone phone, final Boolean stored, - final Boolean storeForFutureUse) { + final Boolean storeForFutureUse, + final AccountHolder accountHolder) { super(PaymentSourceType.TOKEN); this.token = token; this.billingAddress = billingAddress; this.phone = phone; this.stored = stored; this.storeForFutureUse = storeForFutureUse; + this.accountHolder = accountHolder; } public RequestTokenSource() { diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestAchSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestAchSource.java new file mode 100644 index 00000000..231975d5 --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestAchSource.java @@ -0,0 +1,54 @@ +package com.checkout.payments.request.source.apm; + +import com.checkout.common.AccountHolder; +import com.checkout.common.AccountType; +import com.checkout.common.CountryCode; +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class RequestAchSource extends AbstractRequestSource { + + @SerializedName("account_type") + private AccountType accountType; + + @SerializedName("country") + private CountryCode country; + + @SerializedName("account_number") + private String accountNumber; + + @SerializedName("bank_code") + private String bankCode; + + @SerializedName("account_holder") + private AccountHolder accountHolder; + + @Builder + private RequestAchSource( + final AccountType accountType, + final CountryCode country, + final String accountNumber, + final String bankCode, + final AccountHolder accountHolder) { + super(PaymentSourceType.ACH); + this.accountType = accountType; + this.country = country; + this.accountNumber = accountNumber; + this.bankCode = bankCode; + this.accountHolder = accountHolder; + } + + public RequestAchSource() { + super(PaymentSourceType.ACH); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestBizumSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestBizumSource.java new file mode 100644 index 00000000..eeae284e --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestBizumSource.java @@ -0,0 +1,30 @@ +package com.checkout.payments.request.source.apm; + +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class RequestBizumSource extends AbstractRequestSource { + + @SerializedName("mobile_number") + private String mobileNumber; + + @Builder + private RequestBizumSource(final String mobileNumber) { + super(PaymentSourceType.BIZUM); + this.mobileNumber = mobileNumber; + } + + public RequestBizumSource() { + super(PaymentSourceType.BIZUM); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestEpsSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestEpsSource.java index 454111e9..e838fab3 100644 --- a/src/main/java/com/checkout/payments/request/source/apm/RequestEpsSource.java +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestEpsSource.java @@ -1,7 +1,9 @@ package com.checkout.payments.request.source.apm; +import com.checkout.common.AccountHolder; import com.checkout.common.PaymentSourceType; import com.checkout.payments.request.source.AbstractRequestSource; +import com.google.gson.annotations.SerializedName; import lombok.Builder; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -16,10 +18,15 @@ public final class RequestEpsSource extends AbstractRequestSource { private String purpose; + @SerializedName("account_holder") + private AccountHolder accountHolder; + @Builder - private RequestEpsSource(final String purpose) { + private RequestEpsSource(final String purpose, + final AccountHolder accountHolder) { super(PaymentSourceType.EPS); this.purpose = purpose; + this.accountHolder = accountHolder; } public RequestEpsSource() { diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestOctopusSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestOctopusSource.java new file mode 100644 index 00000000..654423dc --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestOctopusSource.java @@ -0,0 +1,15 @@ +package com.checkout.payments.request.source.apm; + +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class RequestOctopusSource extends AbstractRequestSource { + + public RequestOctopusSource() { + super(PaymentSourceType.OCTOPUS); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestPlaidSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestPlaidSource.java new file mode 100644 index 00000000..730d1537 --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestPlaidSource.java @@ -0,0 +1,35 @@ +package com.checkout.payments.request.source.apm; + +import com.checkout.common.AccountHolder; +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class RequestPlaidSource extends AbstractRequestSource { + + @SerializedName("token") + private String token; + + @SerializedName("account_holder") + private AccountHolder accountHolder; + + @Builder + private RequestPlaidSource(final String token, final AccountHolder accountHolder) { + super(PaymentSourceType.PLAID); + this.token = token; + this.accountHolder = accountHolder; + } + + public RequestPlaidSource() { + super(PaymentSourceType.PLAID); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/apm/RequestSequraSource.java b/src/main/java/com/checkout/payments/request/source/apm/RequestSequraSource.java new file mode 100644 index 00000000..fa2d3431 --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/apm/RequestSequraSource.java @@ -0,0 +1,31 @@ +package com.checkout.payments.request.source.apm; + +import com.checkout.common.Address; +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class RequestSequraSource extends AbstractRequestSource { + + @SerializedName("billing_address") + private Address billingAddress; + + @Builder + private RequestSequraSource(final Address billingAddress) { + super(PaymentSourceType.SEQURA); + this.billingAddress = billingAddress; + } + + public RequestSequraSource() { + super(PaymentSourceType.SEQURA); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsPayPalSource.java b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsPayPalSource.java index d8477c77..51a1d716 100644 --- a/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsPayPalSource.java +++ b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsPayPalSource.java @@ -18,4 +18,5 @@ public final class PaymentContextsPayPalSource extends AbstractRequestSource { private PaymentContextsPayPalSource() { super(PaymentSourceType.PAYPAL); } + } diff --git a/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsStcpaySource.java b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsStcpaySource.java new file mode 100644 index 00000000..57390a63 --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsStcpaySource.java @@ -0,0 +1,21 @@ +package com.checkout.payments.request.source.contexts; + +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class PaymentContextsStcpaySource extends AbstractRequestSource { + + @Builder + private PaymentContextsStcpaySource() { + super(PaymentSourceType.STCPAY); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsTabbySource.java b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsTabbySource.java new file mode 100644 index 00000000..fecc7dd5 --- /dev/null +++ b/src/main/java/com/checkout/payments/request/source/contexts/PaymentContextsTabbySource.java @@ -0,0 +1,21 @@ +package com.checkout.payments.request.source.contexts; + +import com.checkout.common.PaymentSourceType; +import com.checkout.payments.request.source.AbstractRequestSource; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class PaymentContextsTabbySource extends AbstractRequestSource { + + @Builder + private PaymentContextsTabbySource() { + super(PaymentSourceType.TABBY); + } +} \ No newline at end of file diff --git a/src/main/java/com/checkout/payments/response/GetPaymentResponse.java b/src/main/java/com/checkout/payments/response/GetPaymentResponse.java index 3a2f075e..addd0b73 100644 --- a/src/main/java/com/checkout/payments/response/GetPaymentResponse.java +++ b/src/main/java/com/checkout/payments/response/GetPaymentResponse.java @@ -17,7 +17,7 @@ import com.checkout.payments.ThreeDSData; import com.checkout.payments.request.PaymentInstruction; import com.checkout.payments.response.destination.PaymentResponseDestination; -import com.checkout.payments.PaymentPlanType; +import com.checkout.payments.PaymentPlan; import com.checkout.payments.response.source.ResponseSource; import com.checkout.payments.sender.Sender; import com.google.gson.annotations.SerializedName; @@ -53,7 +53,7 @@ public final class GetPaymentResponse extends Resource { private PaymentType type; @SerializedName("payment_plan") - private PaymentPlanType paymentPlan; + private PaymentPlan paymentPlan; private String reference; diff --git a/src/main/java/com/checkout/payments/response/PaymentResponse.java b/src/main/java/com/checkout/payments/response/PaymentResponse.java index 1631bb4c..46e2274c 100644 --- a/src/main/java/com/checkout/payments/response/PaymentResponse.java +++ b/src/main/java/com/checkout/payments/response/PaymentResponse.java @@ -10,7 +10,7 @@ import com.checkout.payments.RiskAssessment; import com.checkout.payments.ShippingDetails; import com.checkout.payments.ThreeDSEnrollment; -import com.checkout.payments.PaymentPlanType; +import com.checkout.payments.PaymentPlan; import com.checkout.payments.response.source.ResponseSource; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -35,13 +35,15 @@ public final class PaymentResponse extends Resource implements Serializable { private PaymentType paymentType; @SerializedName("payment_plan") - private PaymentPlanType paymentPlan; + private PaymentPlan paymentPlan; @SerializedName("action_id") private String actionId; private Long amount; + private Long amountRequested; + private Currency currency; private boolean approved; diff --git a/src/main/java/com/checkout/payments/response/source/CardResponseSource.java b/src/main/java/com/checkout/payments/response/source/CardResponseSource.java index 221809c6..7d107a89 100644 --- a/src/main/java/com/checkout/payments/response/source/CardResponseSource.java +++ b/src/main/java/com/checkout/payments/response/source/CardResponseSource.java @@ -1,11 +1,14 @@ package com.checkout.payments.response.source; +import com.checkout.common.AccountHolder; +import com.checkout.common.AccountHolderResponse; import com.checkout.common.Address; import com.checkout.common.CardCategory; import com.checkout.common.CardType; import com.checkout.common.CardWalletType; import com.checkout.common.CountryCode; import com.checkout.common.Phone; +import com.checkout.payments.AccountUpdateStatusType; import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -82,4 +85,10 @@ public final class CardResponseSource extends AbstractResponseSource implements @SerializedName("encrypted_card_number") private String encryptedCardNumber; + @SerializedName("account_update_status") + private AccountUpdateStatusType accountUpdateStatus; + + @SerializedName("account_holder") + private AccountHolderResponse accountHolder; + } diff --git a/src/main/java/com/checkout/payments/response/source/contexts/AbstractPaymentContextsResponseSource.java b/src/main/java/com/checkout/payments/response/source/contexts/AbstractPaymentContextsResponseSource.java index 7b9f9c27..97d1a58d 100644 --- a/src/main/java/com/checkout/payments/response/source/contexts/AbstractPaymentContextsResponseSource.java +++ b/src/main/java/com/checkout/payments/response/source/contexts/AbstractPaymentContextsResponseSource.java @@ -1,23 +1,16 @@ package com.checkout.payments.response.source.contexts; -import com.checkout.accounts.payout.schedule.ScheduleFrequency; import com.checkout.common.AccountHolder; import com.checkout.common.PaymentSourceType; import com.google.gson.annotations.SerializedName; import lombok.Data; -import lombok.ToString; @Data -@ToString(callSuper = true) public abstract class AbstractPaymentContextsResponseSource { - private final PaymentSourceType type; + public PaymentSourceType type; @SerializedName("account_holder") - protected AccountHolder accountHolder; - - protected AbstractPaymentContextsResponseSource(final PaymentSourceType type) { - this.type = type; - } + public AccountHolder accountHolder; } diff --git a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsKlarnaResponseSource.java b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsKlarnaResponseSource.java index 8bf76761..f7cbe1e5 100644 --- a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsKlarnaResponseSource.java +++ b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsKlarnaResponseSource.java @@ -1,19 +1,12 @@ package com.checkout.payments.response.source.contexts; -import com.checkout.common.PaymentSourceType; +import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.Setter; import lombok.ToString; -@Getter -@Setter +@Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public final class PaymentContextsKlarnaResponseSource extends AbstractPaymentContextsResponseSource implements ResponseSource { - public PaymentContextsKlarnaResponseSource() { - super(PaymentSourceType.KLARNA); - } - } diff --git a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsPayPalResponseSource.java b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsPayPalResponseSource.java index e29f0ee0..c0723dd8 100644 --- a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsPayPalResponseSource.java +++ b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsPayPalResponseSource.java @@ -1,19 +1,12 @@ package com.checkout.payments.response.source.contexts; -import com.checkout.common.PaymentSourceType; +import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.Setter; import lombok.ToString; -@Getter -@Setter +@Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public final class PaymentContextsPayPalResponseSource extends AbstractPaymentContextsResponseSource implements ResponseSource { - public PaymentContextsPayPalResponseSource() { - super(PaymentSourceType.PAYPAL); - } - } diff --git a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsStcpayResponseSource.java b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsStcpayResponseSource.java new file mode 100644 index 00000000..4fd8c388 --- /dev/null +++ b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsStcpayResponseSource.java @@ -0,0 +1,12 @@ +package com.checkout.payments.response.source.contexts; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class PaymentContextsStcpayResponseSource extends AbstractPaymentContextsResponseSource implements ResponseSource { + +} diff --git a/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsTabbyResponseSource.java b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsTabbyResponseSource.java new file mode 100644 index 00000000..e2fd9fef --- /dev/null +++ b/src/main/java/com/checkout/payments/response/source/contexts/PaymentContextsTabbyResponseSource.java @@ -0,0 +1,12 @@ +package com.checkout.payments.response.source.contexts; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public final class PaymentContextsTabbyResponseSource extends AbstractPaymentContextsResponseSource implements ResponseSource { + +} diff --git a/src/test/java/com/checkout/CardSourceHelper.java b/src/test/java/com/checkout/CardSourceHelper.java index 39bb53a6..9b436b66 100644 --- a/src/test/java/com/checkout/CardSourceHelper.java +++ b/src/test/java/com/checkout/CardSourceHelper.java @@ -15,6 +15,10 @@ import java.util.UUID; +import static com.checkout.TestHelper.createAddress; +import static com.checkout.TestHelper.createPhone; +import static com.checkout.TestHelper.getAccountHolder; + public class CardSourceHelper { private static long amount = 10L; @@ -65,6 +69,9 @@ public static RequestCardSource getRequestCardSource() { .expiryMonth(CardSourceHelper.Visa.EXPIRY_MONTH) .expiryYear(CardSourceHelper.Visa.EXPIRY_YEAR) .cvv(Visa.CVV) + .billingAddress(createAddress()) + .phone(createPhone()) + .accountHolder(getAccountHolder()) .stored(false) .build(); } diff --git a/src/test/java/com/checkout/TestHelper.java b/src/test/java/com/checkout/TestHelper.java index 5996437c..7e8e8400 100644 --- a/src/test/java/com/checkout/TestHelper.java +++ b/src/test/java/com/checkout/TestHelper.java @@ -26,6 +26,8 @@ import com.checkout.payments.request.PaymentCustomerRequest; import com.checkout.payments.request.source.contexts.PaymentContextsKlarnaSource; import com.checkout.payments.request.source.contexts.PaymentContextsPayPalSource; +import com.checkout.payments.request.source.contexts.PaymentContextsStcpaySource; +import com.checkout.payments.request.source.contexts.PaymentContextsTabbySource; import lombok.SneakyThrows; import java.nio.file.Files; @@ -248,6 +250,47 @@ public static PaymentContextsRequest createPaymentContextsKlarnaRequest() { .build(); } + public static PaymentContextsRequest createPaymentContextsStcpayRequest() { + + final PaymentContextsStcpaySource source = PaymentContextsStcpaySource.builder().build(); + + final PaymentCustomerRequest customer = PaymentCustomerRequest.builder() + .phone(createPhone()) + .build(); + + return PaymentContextsRequest.builder() + .source(source) + .amount(1000L) + .reference("ORD-1011-87AH") + .currency(Currency.SAR) + .customer(customer) + .processingChannelId(requireNonNull(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID"))) + .build(); + } + + public static PaymentContextsRequest createPaymentContextsTabbyRequest() { + + final PaymentContextsTabbySource source = PaymentContextsTabbySource.builder().build(); + + final PaymentCustomerRequest customer = PaymentCustomerRequest.builder() + .email(generateRandomEmail()) + .name("Bruce Wayne") + .phone(createPhone()) + .build(); + + return PaymentContextsRequest.builder() + .source(source) + .amount(1000L) + .reference("ORD-1011-87AH") + .currency(Currency.AED) + .customer(customer) + .processing(PaymentContextsProcessing.builder() + .locale("ar-AE") + .build()) + .processingChannelId(requireNonNull(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID"))) + .build(); + } + public static PaymentRecipient createRecipient() { return PaymentRecipient.builder() .accountNumber("1234567") diff --git a/src/test/java/com/checkout/disputes/DisputesClientImplTest.java b/src/test/java/com/checkout/disputes/DisputesClientImplTest.java index 5849a59b..b107900f 100644 --- a/src/test/java/com/checkout/disputes/DisputesClientImplTest.java +++ b/src/test/java/com/checkout/disputes/DisputesClientImplTest.java @@ -136,6 +136,21 @@ void shouldGetCompiledSubmittedEvidence() throws ExecutionException, Interrupted assertEquals(response, future.get()); } + @Test + void shouldSubmitArbitrationEvidence() throws ExecutionException, InterruptedException { + + final EmptyResponse response = mock(EmptyResponse.class); + + when(apiClient.postAsync(eq("disputes/dispute_id/evidence/arbitration"), eq(authorization), eq(EmptyResponse.class), + isNull(), isNull())) + .thenReturn(CompletableFuture.completedFuture(response)); + + final CompletableFuture future = client.submitArbitrationEvidence("dispute_id"); + + assertNotNull(future.get()); + assertEquals(response, future.get()); + } + @Test void shouldSubmitDisputeEvidence() throws ExecutionException, InterruptedException { @@ -151,6 +166,19 @@ void shouldSubmitDisputeEvidence() throws ExecutionException, InterruptedExcepti assertEquals(response, future.get()); } + @Test + void shouldGetCompiledSubmittedArbitrationEvidence() throws ExecutionException, InterruptedException { + final DisputeCompiledSubmittedEvidenceResponse response = mock(DisputeCompiledSubmittedEvidenceResponse.class); + + when(apiClient.getAsync("disputes/dispute_id/evidence/arbitration/submitted", authorization, DisputeCompiledSubmittedEvidenceResponse.class)) + .thenReturn(CompletableFuture.completedFuture(response)); + + final CompletableFuture future = client.getCompiledSubmittedArbitrationEvidence("dispute_id"); + + assertNotNull(future.get()); + assertEquals(response, future.get()); + } + @Test void shouldUploadFile() throws ExecutionException, InterruptedException { diff --git a/src/test/java/com/checkout/payments/AbstractPaymentsTestIT.java b/src/test/java/com/checkout/payments/AbstractPaymentsTestIT.java index 1fc35484..050ca173 100644 --- a/src/test/java/com/checkout/payments/AbstractPaymentsTestIT.java +++ b/src/test/java/com/checkout/payments/AbstractPaymentsTestIT.java @@ -1,7 +1,6 @@ package com.checkout.payments; import com.checkout.CardSourceHelper; -import com.checkout.CheckoutApiException; import com.checkout.PlatformType; import com.checkout.SandboxTestFixture; import com.checkout.common.Address; @@ -19,21 +18,13 @@ import com.checkout.tokens.CardTokenRequest; import com.checkout.tokens.CardTokenResponse; -import java.util.List; import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.function.Supplier; import static com.checkout.CardSourceHelper.getCardSourcePayment; import static com.checkout.CardSourceHelper.getCorporateSender; import static com.checkout.CardSourceHelper.getIndividualSender; import static com.checkout.CardSourceHelper.getRequestCardSource; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItem; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; public abstract class AbstractPaymentsTestIT extends SandboxTestFixture { @@ -41,6 +32,7 @@ public abstract class AbstractPaymentsTestIT extends SandboxTestFixture { public static final String PAYEE_NOT_ONBOARDED = "payee_not_onboarded"; public static final String APM_SERVICE_UNAVAILABLE = "apm_service_unavailable"; public static final String PAYMENT_METHOD_NOT_SUPPORTED = "payment_method_not_supported"; + public static final String APM_CURRENCY_NOT_SUPPORTED = "currency_not_supported"; public AbstractPaymentsTestIT() { super(PlatformType.DEFAULT); diff --git a/src/test/java/com/checkout/payments/RequestApmPaymentsIT.java b/src/test/java/com/checkout/payments/RequestApmPaymentsIT.java index 84a94e75..24bfe7fa 100644 --- a/src/test/java/com/checkout/payments/RequestApmPaymentsIT.java +++ b/src/test/java/com/checkout/payments/RequestApmPaymentsIT.java @@ -7,6 +7,8 @@ import com.checkout.Environment; import com.checkout.TestHelper; import com.checkout.common.AccountHolder; +import com.checkout.common.AccountHolderType; +import com.checkout.common.AccountType; import com.checkout.common.Address; import com.checkout.common.CountryCode; import com.checkout.common.Currency; @@ -15,11 +17,13 @@ import com.checkout.common.Phone; import com.checkout.payments.request.PaymentCustomerRequest; import com.checkout.payments.request.PaymentRequest; +import com.checkout.payments.request.source.apm.RequestAchSource; import com.checkout.payments.request.source.apm.RequestAfterPaySource; import com.checkout.payments.request.source.apm.RequestAlipayPlusSource; import com.checkout.payments.request.source.apm.RequestAlmaSource; import com.checkout.payments.request.source.apm.RequestBancontactSource; import com.checkout.payments.request.source.apm.RequestBenefitSource; +import com.checkout.payments.request.source.apm.RequestBizumSource; import com.checkout.payments.request.source.apm.RequestCvConnectSource; import com.checkout.payments.request.source.apm.RequestEpsSource; import com.checkout.payments.request.source.apm.RequestFawrySource; @@ -29,10 +33,13 @@ import com.checkout.payments.request.source.apm.RequestKnetSource; import com.checkout.payments.request.source.apm.RequestMbwaySource; import com.checkout.payments.request.source.apm.RequestMultiBancoSource; +import com.checkout.payments.request.source.apm.RequestOctopusSource; import com.checkout.payments.request.source.apm.RequestP24Source; +import com.checkout.payments.request.source.apm.RequestPlaidSource; import com.checkout.payments.request.source.apm.RequestPostFinanceSource; import com.checkout.payments.request.source.apm.RequestQPaySource; import com.checkout.payments.request.source.apm.RequestSepaSource; +import com.checkout.payments.request.source.apm.RequestSequraSource; import com.checkout.payments.request.source.apm.RequestSofortSource; import com.checkout.payments.request.source.apm.RequestStcPaySource; import com.checkout.payments.request.source.apm.RequestTamaraSource; @@ -48,6 +55,7 @@ import static com.checkout.TestHelper.createAddress; import static com.checkout.TestHelper.createPhone; +import static com.checkout.TestHelper.getAccountHolder; import static java.util.Objects.requireNonNull; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -114,7 +122,7 @@ void shouldMakeIdealPayment() { assertEquals(PaymentSourceType.IDEAL, paymentDetails.getSource().getType()); } - + @Disabled("payment method not supported") @Test void shouldMakeSofortPayment() { final PaymentRequest paymentRequest = PaymentRequest.builder() @@ -277,6 +285,7 @@ void shouldMakeMbwayPayment() { void shouldMakeEpsPayment() { final PaymentRequest paymentRequest = PaymentRequest.builder() .source(RequestEpsSource.builder() + .accountHolder(getAccountHolder()) .purpose("Mens black t-shirt L") .build()) .currency(Currency.EUR) @@ -565,4 +574,116 @@ void shouldMakeSepaV4Payment() { checkErrorItem(() -> paymentsClient.requestPayment(paymentRequest), APM_SERVICE_UNAVAILABLE); } + + @Test + void shouldMakeAchPayment() { + final PaymentRequest paymentRequest = PaymentRequest.builder() + .source(RequestAchSource.builder() + .accountType(AccountType.SAVINGS) + .country(CountryCode.GB) + .accountNumber("8784738748973829") + .bankCode("BANK") + .accountHolder(AccountHolder.builder() + .firstName("John") + .lastName("Doe") + .billingAddress(createAddress()) + .phone(createPhone()) + .build()) + .build()) + .currency(Currency.USD) + .amount(10L) + .capture(true) + .processingChannelId(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID")) + .successUrl("https://testing.checkout.com/success") + .failureUrl("https://testing.checkout.com/failure") + .build(); + + final PaymentResponse paymentResponse = blocking(() -> paymentsClient.requestPayment(paymentRequest)); + assertNotNull(paymentResponse); + assertEquals(PaymentStatus.PENDING, paymentResponse.getStatus()); + assertNotNull(paymentResponse.getId()); + assertTrue(paymentResponse.getSource() instanceof AlternativePaymentSourceResponse); + + final AlternativePaymentSourceResponse sourceResponse = (AlternativePaymentSourceResponse) paymentResponse.getSource(); + assertEquals(PaymentSourceType.ACH, sourceResponse.getType()); + } + + @Test + void shouldMakeBizumPayment() { + final PaymentRequest paymentRequest = PaymentRequest.builder() + .source(RequestBizumSource.builder() + .mobileNumber("+447700900986") + .build()) + .currency(Currency.EUR) + .amount(10L) + .capture(true) + .processingChannelId(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID")) + .successUrl("https://testing.checkout.com/success") + .failureUrl("https://testing.checkout.com/failure") + .build(); + + checkErrorItem(() -> paymentsClient.requestPayment(paymentRequest), APM_SERVICE_UNAVAILABLE); + } + + @Test + void shouldMakeOctopusPayment() { + final PaymentRequest paymentRequest = PaymentRequest.builder() + .source(new RequestOctopusSource()) + .currency(Currency.USD) + .amount(10L) + .capture(true) + .processingChannelId(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID")) + .successUrl("https://testing.checkout.com/success") + .failureUrl("https://testing.checkout.com/failure") + .build(); + + checkErrorItem(() -> paymentsClient.requestPayment(paymentRequest), APM_CURRENCY_NOT_SUPPORTED); + } + + @Test + void shouldMakePlaidPayment() { + final RequestPlaidSource plaidSource = RequestPlaidSource.builder() + .token("token") + .accountHolder(AccountHolder.builder() + .firstName("John") + .lastName("Doe") + .phone(createPhone()) + .billingAddress(createAddress()) + .type(AccountHolderType.INDIVIDUAL) + .accountNameInquiry(false) + .build()) + .build(); + + final PaymentRequest paymentRequest = PaymentRequest.builder() + .source(plaidSource) + .currency(Currency.USD) + .amount(10L) + .capture(true) + .processingChannelId(System.getenv("CHECKOUT_PROCESSING_CHANNEL_ID")) + .successUrl("https://testing.checkout.com/success") + .failureUrl("https://testing.checkout.com/failure") + .build(); + + final PaymentResponse paymentResponse = blocking(() -> paymentsClient.requestPayment(paymentRequest)); + + assertNotNull(paymentResponse); + assertNotNull(paymentResponse.getId()); + assertEquals(202, paymentResponse.getHttpStatusCode()); + } + + @Test + void shouldMakeSequraPayment() { + final PaymentRequest paymentRequest = PaymentRequest.builder() + .source(RequestSequraSource.builder() + .billingAddress(createAddress()) + .build()) + .currency(Currency.EUR) + .amount(10L) + .capture(true) + .successUrl("https://testing.checkout.com/success") + .failureUrl("https://testing.checkout.com/failure") + .build(); + + checkErrorItem(() -> paymentsClient.requestPayment(paymentRequest), PAYEE_NOT_ONBOARDED); + } } diff --git a/src/test/java/com/checkout/payments/RequestPaymentsTestIT.java b/src/test/java/com/checkout/payments/RequestPaymentsTestIT.java index ddda58db..62edf703 100644 --- a/src/test/java/com/checkout/payments/RequestPaymentsTestIT.java +++ b/src/test/java/com/checkout/payments/RequestPaymentsTestIT.java @@ -62,8 +62,8 @@ void shouldMakeCardPayment() { .build()) .build(); - final PaymentPlanType recurringPlan = PaymentPlanType.builder() - .amountVariability(AmountVariability.FIXED) + final PaymentPlan recurringPlan = PaymentPlan.builder() + .amountVariabilityType(AmountVariabilityType.FIXED) .daysBetweenPayments(1) .totalNumberOfPayments(1) .currentPaymentNumber(1) diff --git a/src/test/java/com/checkout/payments/contexts/PaymentContextsTestIT.java b/src/test/java/com/checkout/payments/contexts/PaymentContextsTestIT.java index b6bd7559..d8f95262 100644 --- a/src/test/java/com/checkout/payments/contexts/PaymentContextsTestIT.java +++ b/src/test/java/com/checkout/payments/contexts/PaymentContextsTestIT.java @@ -6,8 +6,11 @@ import com.checkout.TestHelper; import com.checkout.common.Currency; import com.checkout.payments.PaymentType; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import static com.checkout.payments.AbstractPaymentsTestIT.APM_SERVICE_UNAVAILABLE; +import static com.checkout.payments.AbstractPaymentsTestIT.PAYEE_NOT_ONBOARDED; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -42,6 +45,28 @@ void shouldMakeAPaymentContextKlarnaRequest() { assertNotNull(response.getPartnerMetadata().getClientToken()); } + @Disabled("Unavailable") + @Test + void shouldMakeAPaymentContextStcpayRequest() { + + final PaymentContextsRequest request = TestHelper.createPaymentContextsStcpayRequest(); + + final PaymentContextsRequestResponse response = blocking(() -> checkoutApi.paymentContextsClient().requestPaymentContexts(request)); + + assertNotNull(response); + assertNotNull(response.getId()); + assertNotNull(response.getPartnerMetadata().getSessionId()); + assertNotNull(response.getPartnerMetadata().getClientToken()); + } + + @Test + void shouldMakeAPaymentContextTabbyRequest() { + + final PaymentContextsRequest request = TestHelper.createPaymentContextsTabbyRequest(); + + checkErrorItem(() -> checkoutApi.paymentContextsClient().requestPaymentContexts(request), APM_SERVICE_UNAVAILABLE); + } + @Test void shouldGetAPaymentContext() { diff --git a/src/test/java/com/checkout/payments/hosted/HostedPaymentsTestIT.java b/src/test/java/com/checkout/payments/hosted/HostedPaymentsTestIT.java index 387573d9..60621d8d 100644 --- a/src/test/java/com/checkout/payments/hosted/HostedPaymentsTestIT.java +++ b/src/test/java/com/checkout/payments/hosted/HostedPaymentsTestIT.java @@ -27,7 +27,7 @@ void shouldCreateAndGetHostedPayments() { assertEquals(REFERENCE, response.getReference()); assertNotNull(response.getLinks()); assertTrue(response.getLinks().containsKey("redirect")); - assertNotNull(response.getWarnings()); + assertEquals(response.getHttpStatusCode(), 201); final HostedPaymentDetailsResponse detailsResponse = blocking(() -> checkoutApi.hostedPaymentsClient().getHostedPaymentsPageDetails(response.getId())); diff --git a/src/test/java/com/checkout/payments/links/PaymentLinksTestIT.java b/src/test/java/com/checkout/payments/links/PaymentLinksTestIT.java index fd5579cc..f4342c00 100644 --- a/src/test/java/com/checkout/payments/links/PaymentLinksTestIT.java +++ b/src/test/java/com/checkout/payments/links/PaymentLinksTestIT.java @@ -45,7 +45,7 @@ void shouldCreateAndGetPaymentsLink() { assertNotNull(paymentLinkResponse.getExpiresOn()); assertNotNull(paymentLinkResponse.getLinks()); assertTrue(paymentLinkResponse.getLinks().containsKey("redirect")); - assertNotNull(paymentLinkResponse.getWarnings()); + assertEquals(paymentLinkResponse.getHttpStatusCode(), 201); final PaymentLinkDetailsResponse detailsResponse = blocking(() -> checkoutApi.paymentLinksClient().getPaymentLink(paymentLinkResponse.getId())); assertNotNull(detailsResponse);