diff --git a/example/com/pensio/api/CheckoutSessionExample.java b/example/com/pensio/api/CheckoutSessionExample.java new file mode 100644 index 0000000..9864cca --- /dev/null +++ b/example/com/pensio/api/CheckoutSessionExample.java @@ -0,0 +1,31 @@ +package com.pensio.api; + +import com.pensio.Amount; +import com.pensio.Currency; +import com.pensio.api.request.CreateCheckoutSessionRequest; +import com.pensio.response.CheckoutSessionResponse; + +import java.util.Arrays; +import java.util.Random; + +public class CheckoutSessionExample { + private final static String apiUrl = System.getProperty("pensio.TestUrl", "https://testgateway.altapaysecure.com/"); + private final static String username = System.getProperty("pensio.TestApiUsername", "shop api"); + private final static String password = System.getProperty("pensio.TestApiPassword", "testpassword"); + private final static PensioMerchantAPI api = new PensioMerchantAPI(apiUrl, username, password); + + public static void main(String args[]) throws PensioAPIException { + String orderId = "CheckoutSessionExample_" + new Random().nextInt(); + + CreateCheckoutSessionRequest createRequest = new CreateCheckoutSessionRequest(); + createRequest.setTerminal("AltaPay Test Terminal"); + createRequest.setShopOrderId(orderId); + createRequest.setAmount(Amount.get(100.00, Currency.EUR)); + createRequest.setTerminals(Arrays.asList("AltaPay Test Terminal")); + + CheckoutSessionResponse createResponse = api.createCheckoutSession(createRequest); + System.out.println("Checkout Session Created:"); + System.out.println("Session ID: " + createResponse.getSessionId()); + System.out.println("Session Status: " + createResponse.getSessionStatus()); + } +} diff --git a/src/MerchantApi_CheckoutSessionTests.java b/src/MerchantApi_CheckoutSessionTests.java new file mode 100644 index 0000000..a18e312 --- /dev/null +++ b/src/MerchantApi_CheckoutSessionTests.java @@ -0,0 +1,56 @@ +package com.pensio.api; + +import com.pensio.Amount; +import com.pensio.Currency; +import com.pensio.api.generated.APIResponse; +import com.pensio.api.request.CreateCheckoutSessionRequest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Map; + +class MerchantApi_CheckoutSessionTests { + + @Test + void testCreateCheckoutSessionMapping() throws PensioAPIException { + final var terminal = "AltaPay Test Terminal"; + final var shopOrderId = "order123"; + final var amount = Amount.get(100, Currency.DKK); + final var terminals = Arrays.asList("term1", "term2"); + + final var api = new PensioMerchantAPI("https://testgateway.altapaysecure.com/", "shop api", "testpassword") { + @Override + protected APIResponse getAPIResponse(String method, HttpMethod httpMethod, Map requestVars) throws PensioAPIException { + Assertions.assertEquals("checkoutSession", method); + Assertions.assertEquals(HttpMethod.POST, httpMethod); + Assertions.assertEquals(terminal, requestVars.get("terminal")); + Assertions.assertEquals(shopOrderId, requestVars.get("shop_orderid")); + Assertions.assertEquals(amount.getAmountString(), requestVars.get("amount")); + Assertions.assertEquals(amount.getCurrency().name(), requestVars.get("currency")); + Assertions.assertEquals("term1", requestVars.get("terminals[0]")); + Assertions.assertEquals("term2", requestVars.get("terminals[1]")); + + // Return a mock response with session + APIResponse response = new APIResponse(); + com.pensio.api.generated.Body body = new com.pensio.api.generated.Body(); + com.pensio.api.generated.Session session = new com.pensio.api.generated.Session(); + session.setId("session-123"); + session.setStatus("CREATED"); + body.setSession(session); + response.setBody(body); + return response; + } + }; + + CreateCheckoutSessionRequest request = new CreateCheckoutSessionRequest(); + request.setTerminal(terminal); + request.setShopOrderId(shopOrderId); + request.setAmount(amount); + request.setTerminals(terminals); + + var response = api.createCheckoutSession(request); + Assertions.assertEquals("session-123", response.getSessionId()); + Assertions.assertEquals(SessionStatus.CREATED, response.getSessionStatus()); + } +} diff --git a/src/integrationTest/java/com/pensio/api/PensioMerchantAPITest.java b/src/integrationTest/java/com/pensio/api/PensioMerchantAPITest.java index d0f78ab..35d1bc7 100644 --- a/src/integrationTest/java/com/pensio/api/PensioMerchantAPITest.java +++ b/src/integrationTest/java/com/pensio/api/PensioMerchantAPITest.java @@ -26,6 +26,9 @@ import com.pensio.api.request.ReleaseReservationRequest; import com.pensio.api.request.ReserveSubscriptionChargeRequest; import com.pensio.api.request.TransactionsRequest; +import com.pensio.api.request.CreateCheckoutSessionRequest; +import com.pensio.response.CheckoutSessionResponse; +import com.pensio.api.SessionStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -275,6 +278,20 @@ public void getTerminalsTest() throws Throwable assertTrue(result.getBody().getTerminals().getTerminal().size() > 0); } + @Test + public void checkoutSessionTest() throws Throwable + { + CreateCheckoutSessionRequest request = new CreateCheckoutSessionRequest(); + request.setTerminal("AltaPay Test Terminal"); + request.setShopOrderId(getOrderId()); + request.setAmount(Amount.get(1.00, Currency.EUR)); + request.setTerminals(Arrays.asList("AltaPay Test Terminal")); + + CheckoutSessionResponse response = api.createCheckoutSession(request); + assertNotNull(response.getSessionId()); + assertEquals(SessionStatus.CREATED, response.getSessionStatus()); + } + @Test public void getTransactionsTest() throws Throwable { diff --git a/src/test/java/com/pensio/api/MerchantApi_CheckoutSessionTests.java b/src/test/java/com/pensio/api/MerchantApi_CheckoutSessionTests.java new file mode 100644 index 0000000..a18e312 --- /dev/null +++ b/src/test/java/com/pensio/api/MerchantApi_CheckoutSessionTests.java @@ -0,0 +1,56 @@ +package com.pensio.api; + +import com.pensio.Amount; +import com.pensio.Currency; +import com.pensio.api.generated.APIResponse; +import com.pensio.api.request.CreateCheckoutSessionRequest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Map; + +class MerchantApi_CheckoutSessionTests { + + @Test + void testCreateCheckoutSessionMapping() throws PensioAPIException { + final var terminal = "AltaPay Test Terminal"; + final var shopOrderId = "order123"; + final var amount = Amount.get(100, Currency.DKK); + final var terminals = Arrays.asList("term1", "term2"); + + final var api = new PensioMerchantAPI("https://testgateway.altapaysecure.com/", "shop api", "testpassword") { + @Override + protected APIResponse getAPIResponse(String method, HttpMethod httpMethod, Map requestVars) throws PensioAPIException { + Assertions.assertEquals("checkoutSession", method); + Assertions.assertEquals(HttpMethod.POST, httpMethod); + Assertions.assertEquals(terminal, requestVars.get("terminal")); + Assertions.assertEquals(shopOrderId, requestVars.get("shop_orderid")); + Assertions.assertEquals(amount.getAmountString(), requestVars.get("amount")); + Assertions.assertEquals(amount.getCurrency().name(), requestVars.get("currency")); + Assertions.assertEquals("term1", requestVars.get("terminals[0]")); + Assertions.assertEquals("term2", requestVars.get("terminals[1]")); + + // Return a mock response with session + APIResponse response = new APIResponse(); + com.pensio.api.generated.Body body = new com.pensio.api.generated.Body(); + com.pensio.api.generated.Session session = new com.pensio.api.generated.Session(); + session.setId("session-123"); + session.setStatus("CREATED"); + body.setSession(session); + response.setBody(body); + return response; + } + }; + + CreateCheckoutSessionRequest request = new CreateCheckoutSessionRequest(); + request.setTerminal(terminal); + request.setShopOrderId(shopOrderId); + request.setAmount(amount); + request.setTerminals(terminals); + + var response = api.createCheckoutSession(request); + Assertions.assertEquals("session-123", response.getSessionId()); + Assertions.assertEquals(SessionStatus.CREATED, response.getSessionStatus()); + } +}