diff --git a/src/main/java/com/checkout/payments/ProcessingSettings.java b/src/main/java/com/checkout/payments/ProcessingSettings.java index b8fd540b..d1642032 100644 --- a/src/main/java/com/checkout/payments/ProcessingSettings.java +++ b/src/main/java/com/checkout/payments/ProcessingSettings.java @@ -113,6 +113,9 @@ public final class ProcessingSettings { @SerializedName("pan_preference") private PanProcessedType panPreference; + @SerializedName("hub_model_origination_country") + private CountryCode hubModelOriginationCountry; + //Previous private DLocalProcessingSettings dlocal; diff --git a/src/main/java/com/checkout/payments/request/PayoutRequest.java b/src/main/java/com/checkout/payments/request/PayoutRequest.java index f957e515..cbb7e39f 100644 --- a/src/main/java/com/checkout/payments/request/PayoutRequest.java +++ b/src/main/java/com/checkout/payments/request/PayoutRequest.java @@ -1,6 +1,7 @@ package com.checkout.payments.request; import com.checkout.common.Currency; +import com.checkout.payments.ProcessingSettings; import com.checkout.payments.request.destination.PaymentRequestDestination; import com.checkout.payments.request.source.PayoutRequestSource; import com.checkout.payments.sender.PaymentSender; @@ -34,6 +35,8 @@ public final class PayoutRequest { @SerializedName("processing_channel_id") private String processingChannelId; + private ProcessingSettings processing; + private Map metadata; } diff --git a/src/test/java/com/checkout/payments/PayoutRequestProcessingTest.java b/src/test/java/com/checkout/payments/PayoutRequestProcessingTest.java new file mode 100644 index 00000000..e55a1b4f --- /dev/null +++ b/src/test/java/com/checkout/payments/PayoutRequestProcessingTest.java @@ -0,0 +1,41 @@ +package com.checkout.payments; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +import com.checkout.GsonSerializer; +import com.checkout.common.CountryCode; +import com.checkout.payments.request.PayoutRequest; +import com.checkout.payments.request.source.PayoutRequestCurrencyAccountSource; + +class PayoutRequestProcessingTest { + + private final GsonSerializer serializer = new GsonSerializer(); + + @Test + void shouldSerializeHubModelOriginationCountry() { + final PayoutRequest request = PayoutRequest.builder() + .source(PayoutRequestCurrencyAccountSource.builder().id("ca_123").build()) + .processing(ProcessingSettings.builder() + .hubModelOriginationCountry(CountryCode.AU) + .build()) + .build(); + + final String json = serializer.toJson(request); + + assertTrue(json.contains("\"hub_model_origination_country\":\"AU\"")); + } + + @Test + void shouldDeserializeHubModelOriginationCountry() { + final String json = "{\"processing\":{\"hub_model_origination_country\":\"AU\"}}"; + + final PayoutRequest request = serializer.fromJson(json, PayoutRequest.class); + + assertNotNull(request.getProcessing()); + assertEquals(CountryCode.AU, request.getProcessing().getHubModelOriginationCountry()); + } +} \ No newline at end of file