diff --git a/src/main/java/io/craftgate/adapter/PaymentAdapter.java b/src/main/java/io/craftgate/adapter/PaymentAdapter.java index ca85fe1..cf7eb40 100644 --- a/src/main/java/io/craftgate/adapter/PaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/PaymentAdapter.java @@ -297,6 +297,12 @@ public StoredCardListResponse retrieveProviderCards(RetrieveProviderCardRequest return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), StoredCardListResponse.class); } + public IVRCardTokenizationResponse retrieveCardFromIvr(RetrieveCardFromIvrRequest retrieveCardFromIvrRequest) { + String query = RequestQueryParamsBuilder.buildQueryParam(retrieveCardFromIvrRequest); + String path = "/payment/v1/ivr-cards" + query; + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), IVRCardTokenizationResponse.class); + } + public CreateDepositToCardPaymentResponse depositToCard(CreateDepositToCardRequest createDepositToCardRequest) { String path = "/payment/v1/card-payments/deposit-to-card"; return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositToCardRequest, path, requestOptions), diff --git a/src/main/java/io/craftgate/request/RetrieveCardFromIvrRequest.java b/src/main/java/io/craftgate/request/RetrieveCardFromIvrRequest.java new file mode 100644 index 0000000..3c9f02f --- /dev/null +++ b/src/main/java/io/craftgate/request/RetrieveCardFromIvrRequest.java @@ -0,0 +1,12 @@ +package io.craftgate.request; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class RetrieveCardFromIvrRequest { + + private String callToken; + private String cardUserKey; +} diff --git a/src/main/java/io/craftgate/response/IVRCardTokenizationResponse.java b/src/main/java/io/craftgate/response/IVRCardTokenizationResponse.java new file mode 100644 index 0000000..602fb9a --- /dev/null +++ b/src/main/java/io/craftgate/response/IVRCardTokenizationResponse.java @@ -0,0 +1,13 @@ +package io.craftgate.response; + +import lombok.Data; + +@Data +public class IVRCardTokenizationResponse { + + private String binNumber; + private String lastFourDigits; + private String cardUserKey; + private String cardToken; + private String secureFieldsToken; +} diff --git a/src/test/java/io/craftgate/sample/PaymentSample.java b/src/test/java/io/craftgate/sample/PaymentSample.java index 6182bc2..c32a422 100644 --- a/src/test/java/io/craftgate/sample/PaymentSample.java +++ b/src/test/java/io/craftgate/sample/PaymentSample.java @@ -2348,6 +2348,18 @@ void retrieve_provider_card() { assertNotNull(response); } + @Test + void retrieve_ivr_card() { + RetrieveCardFromIvrRequest retrieveCardFromIvrRequest = RetrieveCardFromIvrRequest.builder() + .cardUserKey("45f12c74-3000-465c-96dc-876850e7dd7a") + .callToken("0309ac2d-c5a5-4b4f-a91f-5c444ba07b24") + .build(); + + IVRCardTokenizationResponse response = craftgate.payment().retrieveCardFromIvr(retrieveCardFromIvrRequest); + + assertNotNull(response); + } + @Test void should_validate_3D_secure_callback_verified() { //given