From 39680f30890a31c95767b520d6d24b0972c210e8 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Tue, 29 Jul 2025 11:57:17 +0300 Subject: [PATCH] Add merchant apm list endpoint --- src/main/java/io/craftgate/Craftgate.java | 6 ++++++ .../craftgate/adapter/MerchantApmAdapter.java | 18 ++++++++++++++++++ .../response/MerchantApmListResponse.java | 10 ++++++++++ .../response/MerchantApmResponse.java | 19 +++++++++++++++++++ .../craftgate/sample/MerchantApmSample.java | 19 +++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 src/main/java/io/craftgate/adapter/MerchantApmAdapter.java create mode 100644 src/main/java/io/craftgate/response/MerchantApmListResponse.java create mode 100644 src/main/java/io/craftgate/response/MerchantApmResponse.java create mode 100644 src/test/java/io/craftgate/sample/MerchantApmSample.java diff --git a/src/main/java/io/craftgate/Craftgate.java b/src/main/java/io/craftgate/Craftgate.java index 4384a0c6..fc72f606 100644 --- a/src/main/java/io/craftgate/Craftgate.java +++ b/src/main/java/io/craftgate/Craftgate.java @@ -22,6 +22,7 @@ public class Craftgate { private final MasterpassPaymentAdapter masterpassPaymentAdapter; private final BankAccountTrackingAdapter bankAccountTrackingAdapter; private final MerchantAdapter merchantAdapter; + private final MerchantApmAdapter merchantApmAdapter; private final JuzdanPaymentAdapter juzdanPaymentAdapter; private final BkmExpressPaymentAdapter bkmExpressPaymentAdapter; @@ -57,6 +58,7 @@ public Craftgate(String apiKey, String secretKey, String baseUrl, String languag this.masterpassPaymentAdapter = new MasterpassPaymentAdapter(requestOptions); this.bankAccountTrackingAdapter = new BankAccountTrackingAdapter(requestOptions); this.merchantAdapter = new MerchantAdapter(requestOptions); + this.merchantApmAdapter = new MerchantApmAdapter(requestOptions); this.juzdanPaymentAdapter = new JuzdanPaymentAdapter(requestOptions); this.bkmExpressPaymentAdapter = new BkmExpressPaymentAdapter(requestOptions); } @@ -121,6 +123,10 @@ public MerchantAdapter merchant() { return merchantAdapter; } + public MerchantApmAdapter merchantApm() { + return merchantApmAdapter; + } + public JuzdanPaymentAdapter juzdan() { return juzdanPaymentAdapter; } diff --git a/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java b/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java new file mode 100644 index 00000000..8c549186 --- /dev/null +++ b/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java @@ -0,0 +1,18 @@ +package io.craftgate.adapter; + +import io.craftgate.net.HttpClient; +import io.craftgate.request.common.RequestOptions; +import io.craftgate.response.MerchantApmListResponse; + +public class MerchantApmAdapter extends BaseAdapter { + + public MerchantApmAdapter(RequestOptions requestOptions) { + super(requestOptions); + } + + public MerchantApmListResponse retrieveApms() { + String path = "/merchant/v1/merchant-apms"; + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MerchantApmListResponse.class); + } + +} \ No newline at end of file diff --git a/src/main/java/io/craftgate/response/MerchantApmListResponse.java b/src/main/java/io/craftgate/response/MerchantApmListResponse.java new file mode 100644 index 00000000..93d0f0be --- /dev/null +++ b/src/main/java/io/craftgate/response/MerchantApmListResponse.java @@ -0,0 +1,10 @@ +package io.craftgate.response; + +import io.craftgate.response.common.ListResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class MerchantApmListResponse extends ListResponse { +} diff --git a/src/main/java/io/craftgate/response/MerchantApmResponse.java b/src/main/java/io/craftgate/response/MerchantApmResponse.java new file mode 100644 index 00000000..c028dd84 --- /dev/null +++ b/src/main/java/io/craftgate/response/MerchantApmResponse.java @@ -0,0 +1,19 @@ +package io.craftgate.response; + +import io.craftgate.model.ApmType; +import io.craftgate.model.Currency; +import io.craftgate.model.Status; +import lombok.Data; + +import java.util.List; + +@Data +public class MerchantApmResponse { + + private Long id; + private Status status; + private String name; + private ApmType apmType; + private String hostname; + private List supportedCurrencies; +} \ No newline at end of file diff --git a/src/test/java/io/craftgate/sample/MerchantApmSample.java b/src/test/java/io/craftgate/sample/MerchantApmSample.java new file mode 100644 index 00000000..b699fc84 --- /dev/null +++ b/src/test/java/io/craftgate/sample/MerchantApmSample.java @@ -0,0 +1,19 @@ +package io.craftgate.sample; + +import io.craftgate.Craftgate; +import io.craftgate.response.MerchantApmListResponse; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class MerchantApmSample { + + private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); + + @Test + void retrieve_merchant_apms() { + MerchantApmListResponse response = craftgate.merchantApm().retrieveApms(); + + assertNotNull(response); + } +}