From 4cd85ec377ca32d5d47c2fd7605286e249605517 Mon Sep 17 00:00:00 2001 From: gytis leonavicius Date: Wed, 26 Aug 2026 17:06:53 +0300 Subject: [PATCH] COREP-5945-allow-invoice-number-in-checkout-solution --- build.gradle | 2 +- .../com/pensio/api/PensioMerchantAPI.java | 2 +- .../request/CardWalletAuthorizeRequest.java | 10 --- .../pensio/api/request/PaymentRequest.java | 11 +++ ...chantApi_PaymentRequestParameterTests.java | 67 +++++++++++++++++++ 5 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 src/test/java/com/pensio/api/MerchantApi_PaymentRequestParameterTests.java diff --git a/build.gradle b/build.gradle index e673316..d82d9e0 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { } group = 'com.altapay' -version = '3.1.21' +version = '3.1.22' repositories { mavenCentral() diff --git a/src/main/java/com/pensio/api/PensioMerchantAPI.java b/src/main/java/com/pensio/api/PensioMerchantAPI.java index 02659d6..671803f 100644 --- a/src/main/java/com/pensio/api/PensioMerchantAPI.java +++ b/src/main/java/com/pensio/api/PensioMerchantAPI.java @@ -380,6 +380,7 @@ protected void setPaymentRequestParameters( if (paymentRequest.getSessionId() != null) { addParam(params, "session_id", paymentRequest.getSessionId()); } + addParam(params, "sale_invoice_number", paymentRequest.getSaleInvoiceNumber()); } protected void setInvoiceReservationRequestParameters( @@ -729,7 +730,6 @@ public APIResponse cardWalletAuthorize(CardWalletAuthorizeRequest request) throw addParam(params, "payment_id", request.getPaymentId()); addParam(params, "sale_reconciliation_identifier", request.getSaleReconciliationIdentifier()); - addParam(params, "sale_invoice_number", request.getSaleInvoiceNumber()); addParam(params, "sales_tax", request.getSalesTax()); setPaymentRequestParameters(request, params); diff --git a/src/main/java/com/pensio/api/request/CardWalletAuthorizeRequest.java b/src/main/java/com/pensio/api/request/CardWalletAuthorizeRequest.java index 8f6a21c..ead1eb2 100644 --- a/src/main/java/com/pensio/api/request/CardWalletAuthorizeRequest.java +++ b/src/main/java/com/pensio/api/request/CardWalletAuthorizeRequest.java @@ -9,7 +9,6 @@ public class CardWalletAuthorizeRequest extends PaymentRequest> private String giftCardToken; private String dynamicDescriptor; private String sessionId; + private String saleInvoiceNumber; protected PaymentRequestConfig config; protected CustomerInfo customerInfo; @@ -255,6 +256,16 @@ public T setSessionId(String sessionId) { return (T)this; } + public String getSaleInvoiceNumber() { + return saleInvoiceNumber; + } + + @SuppressWarnings("unchecked") + public T setSaleInvoiceNumber(String saleInvoiceNumber) { + this.saleInvoiceNumber = saleInvoiceNumber; + return (T)this; + } + public List getOrderLines() { return orderLines; diff --git a/src/test/java/com/pensio/api/MerchantApi_PaymentRequestParameterTests.java b/src/test/java/com/pensio/api/MerchantApi_PaymentRequestParameterTests.java new file mode 100644 index 0000000..f532893 --- /dev/null +++ b/src/test/java/com/pensio/api/MerchantApi_PaymentRequestParameterTests.java @@ -0,0 +1,67 @@ +package com.pensio.api; + +import com.pensio.Amount; +import com.pensio.Currency; +import com.pensio.api.generated.APIResponse; +import com.pensio.api.generated.Body; +import com.pensio.api.request.PaymentRequest; +import com.pensio.api.request.PaymentReservationRequest; +import org.junit.jupiter.api.Test; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class MerchantApi_PaymentRequestParameterTests { + + @Test + void createPaymentRequestEmitsSaleInvoiceNumberParam() throws PensioAPIException { + final var api = new PensioMerchantAPI("http://base", "user", "pass") { + @Override + protected APIResponse getAPIResponse(String method, HttpMethod httpMethod, Map requestVars) { + assertEquals("createPaymentRequest", method); + assertEquals(HttpMethod.POST, httpMethod); + assertEquals("INV-12345", requestVars.get("sale_invoice_number")); + assertNull(requestVars.get("invoiceNumber")); + + APIResponse response = new APIResponse(); + Body body = new Body(); + body.setUrl("http://checkout.pensio.com"); + response.setBody(body); + return response; + } + }; + + PaymentRequest request = new PaymentRequest<>() + .setTerminal("Terminal") + .setAmount(Amount.get(100, Currency.DKK)) + .setShopOrderId("order123") + .setSaleInvoiceNumber("INV-12345"); + + api.createPaymentRequest(request); + } + + @Test + void reservationEmitsSaleInvoiceNumberParam() throws PensioAPIException { + final var api = new PensioMerchantAPI("http://base", "user", "pass") { + @Override + protected APIResponse getAPIResponse(String method, HttpMethod httpMethod, Map requestVars) { + assertEquals("reservation", method); + assertEquals(HttpMethod.POST, httpMethod); + assertEquals("INV-99999", requestVars.get("sale_invoice_number")); + assertNull(requestVars.get("invoiceNumber")); + + APIResponse response = new APIResponse(); + Body body = new Body(); + response.setBody(body); + return response; + } + }; + + PaymentReservationRequest request = new PaymentReservationRequest("order123", "Terminal", Amount.get(100, Currency.DKK)); + request.setSaleInvoiceNumber("INV-99999"); + + api.reservation(request); + } +}