From e5454682b162aa3a436564e004ab0bf9d894a1cc Mon Sep 17 00:00:00 2001 From: dharmendra kumar Date: Wed, 15 Nov 2023 16:53:39 +0000 Subject: [PATCH 1/5] Add service request for fees payments --- .../reform/payments/client/PaymentsApi.java | 26 ++++++++ .../client/models/PaymentGroupDto.java | 36 +++++++++++ .../payments/client/models/RemissionDto.java | 63 +++++++++++++++++++ .../request/CardPaymentServiceRequestDTO.java | 26 ++++++++ .../CardPaymentServiceRequestResponse.java | 31 +++++++++ .../response/PaymentGroupResponse.java | 22 +++++++ 6 files changed, 204 insertions(+) create mode 100644 src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java create mode 100644 src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java create mode 100644 src/main/java/uk/gov/hmcts/reform/payments/request/CardPaymentServiceRequestDTO.java create mode 100644 src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java create mode 100644 src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java index ced0ba7..a9f85d4 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java @@ -10,10 +10,13 @@ import uk.gov.hmcts.reform.payments.client.health.InternalHealth; import uk.gov.hmcts.reform.payments.client.models.PaymentDto; import uk.gov.hmcts.reform.payments.request.CardPaymentRequest; +import uk.gov.hmcts.reform.payments.request.CardPaymentServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreateServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreditAccountPaymentRequest; import uk.gov.hmcts.reform.payments.request.PBAServiceRequestDTO; +import uk.gov.hmcts.reform.payments.response.CardPaymentServiceRequestResponse; import uk.gov.hmcts.reform.payments.response.PBAServiceRequestResponse; +import uk.gov.hmcts.reform.payments.response.PaymentGroupResponse; import uk.gov.hmcts.reform.payments.response.PaymentServiceResponse; @FeignClient(name = "payments-api", url = "${payments.api.url}", configuration = PaymentClientConfiguration.class) @@ -51,6 +54,13 @@ void cancelCardPayment( @RequestHeader("ServiceAuthorization") String serviceAuthorization ); + @GetMapping(value = "/card-payments/{internal-reference}/status") + PaymentDto getCardPaymentStatus( + @PathVariable("internal-reference") String internalReference, + @RequestHeader("Authorization") String authorization, + @RequestHeader("ServiceAuthorization") String serviceAuthorization + ); + @PostMapping(value = "/service-request", consumes = "application/json") PaymentServiceResponse createServiceRequest( @RequestHeader("Authorization") String authorization, @@ -65,4 +75,20 @@ PBAServiceRequestResponse createPbaPayment( @RequestHeader("ServiceAuthorization") String serviceAuthorization, @RequestBody PBAServiceRequestDTO paymentRequest ); + + @PostMapping(value = "/service-request/{service-request-reference}/card-payments", consumes = "application/json") + CardPaymentServiceRequestResponse createCardPaymentServiceRequest( + @PathVariable("service-request-reference") String serviceReqReference, + @RequestHeader("Authorization") String authorization, + @RequestHeader("ServiceAuthorization") String serviceAuthorization, + @RequestBody CardPaymentServiceRequestDTO paymentRequest + ); + + @GetMapping(value = "cases/{ccd-case-number}/paymentgroups") + PaymentGroupResponse getCasePaymentGroups( + @PathVariable("ccd-case-number") String ccdCaseNumber, + @RequestHeader("Authorization") String authorization, + @RequestHeader("ServiceAuthorization") String serviceAuthorization + ); + } diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java b/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java new file mode 100644 index 0000000..5d0cbf2 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java @@ -0,0 +1,36 @@ +package uk.gov.hmcts.reform.payments.client.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.OffsetDateTime; +import java.util.List; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PaymentGroupDto { + + @JsonProperty("any_payment_disputed") + private boolean anyPaymentDisputed; + @JsonProperty("date_created") + private OffsetDateTime dateCreated; + @JsonProperty("date_updated") + private OffsetDateTime dateUpdated; + private List fees; + @JsonProperty("payment_group_reference") + private String paymentGroupReference; + private List payments; + private List remissions; + @JsonProperty("service_request_status") + private String serviceRequestStatus; +} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java b/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java new file mode 100644 index 0000000..1782ac9 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java @@ -0,0 +1,63 @@ +package uk.gov.hmcts.reform.payments.client.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RemissionDto { + + @JsonProperty("add_refund") + private boolean addRefund; + + @JsonProperty("beneficiary_name") + private String beneficiaryName; + + @JsonProperty("case_reference") + private String caseReference; + + @JsonProperty("ccd_case_number") + private String ccdCaseNumber; + + @JsonProperty("date_created") + private String dateCreated; + + @JsonProperty("fee_code") + private String feeCode; + + @JsonProperty("fee_id") + private String feeId; + + @JsonProperty("hwf_amount") + private BigDecimal hwfAmount; + + @JsonProperty("hwf_reference") + private String hwfReference; + + private String id; + + @JsonProperty("issue_refund_add_refund_add_remission") + private boolean issueRefundAddRefundAddRemission; + + @JsonProperty("payment_group_reference") + private String paymentGroupReference; + + @JsonProperty("payment_reference") + private String paymentReference; + + @JsonProperty("remission_reference") + private String remissionReference; + +} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/request/CardPaymentServiceRequestDTO.java b/src/main/java/uk/gov/hmcts/reform/payments/request/CardPaymentServiceRequestDTO.java new file mode 100644 index 0000000..f7b4307 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/payments/request/CardPaymentServiceRequestDTO.java @@ -0,0 +1,26 @@ +package uk.gov.hmcts.reform.payments.request; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Builder +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class CardPaymentServiceRequestDTO { + + @JsonProperty("language") + private String language; + @JsonProperty("amount") + private BigDecimal amount; + @Builder.Default + @JsonProperty("currency") + private String currency = "GBP"; + @JsonProperty("return-url") + private String returnUrl; +} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java b/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java new file mode 100644 index 0000000..fe706d8 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java @@ -0,0 +1,31 @@ +package uk.gov.hmcts.reform.payments.response; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class CardPaymentServiceRequestResponse { + + @JsonProperty("external_reference") + private String externalReference; + + @JsonProperty("payment_reference") + private String paymentReference; + + @JsonProperty("status") + private String status; + + @JsonProperty("next_url") + private String nextUrl; + + @JsonProperty("date_created") + private String dateCreated; +} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java b/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java new file mode 100644 index 0000000..f826024 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java @@ -0,0 +1,22 @@ +package uk.gov.hmcts.reform.payments.response; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import uk.gov.hmcts.reform.payments.client.models.PaymentGroupDto; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class PaymentGroupResponse { + + @JsonProperty("payment_groups") + List paymentGroups; +} From d570bf8acf8e09542e9bcfdc514f80c0cbe3c33a Mon Sep 17 00:00:00 2001 From: dharmendra kumar Date: Tue, 21 Nov 2023 10:01:38 +0000 Subject: [PATCH 2/5] Correct get payment status review url --- .../java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java index a9f85d4..62741b3 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java @@ -54,9 +54,9 @@ void cancelCardPayment( @RequestHeader("ServiceAuthorization") String serviceAuthorization ); - @GetMapping(value = "/card-payments/{internal-reference}/status") + @GetMapping(value = "/payments/{payment-reference}") PaymentDto getCardPaymentStatus( - @PathVariable("internal-reference") String internalReference, + @PathVariable("payment-reference") String paymentReference, @RequestHeader("Authorization") String authorization, @RequestHeader("ServiceAuthorization") String serviceAuthorization ); From eccd24412da49e4912f0e6ccc9e93b6fd0e917b9 Mon Sep 17 00:00:00 2001 From: dharmendra kumar Date: Thu, 23 Nov 2023 15:53:39 +0000 Subject: [PATCH 3/5] Update payment client --- .../payments/client/PaymentsClient.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java index 10138fc..f0ec8d9 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java @@ -6,10 +6,13 @@ import uk.gov.hmcts.reform.authorisation.generators.AuthTokenGenerator; import uk.gov.hmcts.reform.payments.client.models.PaymentDto; import uk.gov.hmcts.reform.payments.request.CardPaymentRequest; +import uk.gov.hmcts.reform.payments.request.CardPaymentServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreateServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreditAccountPaymentRequest; import uk.gov.hmcts.reform.payments.request.PBAServiceRequestDTO; +import uk.gov.hmcts.reform.payments.response.CardPaymentServiceRequestResponse; import uk.gov.hmcts.reform.payments.response.PBAServiceRequestResponse; +import uk.gov.hmcts.reform.payments.response.PaymentGroupResponse; import uk.gov.hmcts.reform.payments.response.PaymentServiceResponse; @Service @@ -76,4 +79,20 @@ public PBAServiceRequestResponse createPbaPayment(String serviceReqReference, St paymentRequest ); } + + public PaymentGroupResponse getCasePaymentGroups(String ccdCaseNumber, String authorisation) { + return paymentsApi.getCasePaymentGroups(ccdCaseNumber, authorisation, authTokenGenerator.generate()); + } + + public CardPaymentServiceRequestResponse createCardPaymentServiceRequest( + String serviceReqReference, + String authorization, + CardPaymentServiceRequestDTO paymentRequest) { + return paymentsApi.createCardPaymentServiceRequest( + serviceReqReference, authorization, authTokenGenerator.generate(), paymentRequest); + } + + public PaymentDto getCardPaymentStatus(String paymentReference, String authorization) { + return paymentsApi.getCardPaymentStatus(paymentReference, authorization, authTokenGenerator.generate()); + } } From 70284b39cd7b4e58844aa713cfebbef3d300a135 Mon Sep 17 00:00:00 2001 From: dharmendra kumar Date: Mon, 27 Nov 2023 19:58:44 +0000 Subject: [PATCH 4/5] Add tests for new apis --- .../reform/payments/client/PaymentsApi.java | 13 +--- .../payments/client/PaymentsClient.java | 13 ++-- .../client/models/PaymentGroupDto.java | 36 ----------- .../payments/client/models/RemissionDto.java | 63 ------------------- .../response/PaymentGroupResponse.java | 22 ------- .../payments/client/PaymentsClientTest.java | 28 ++++++++- .../client/PaymentsClientWiremockTest.java | 63 +++++++++++++++++++ ...ov-pay-card-payment-status-successful.json | 24 +++++++ ...ov-pay-create-card-payment-successful.json | 31 +++++++++ 9 files changed, 150 insertions(+), 143 deletions(-) delete mode 100644 src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java delete mode 100644 src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java delete mode 100644 src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java create mode 100644 src/test/resources/mappings/gov-pay-card-payment-status-successful.json create mode 100644 src/test/resources/mappings/gov-pay-create-card-payment-successful.json diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java index 62741b3..37022a6 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsApi.java @@ -16,7 +16,6 @@ import uk.gov.hmcts.reform.payments.request.PBAServiceRequestDTO; import uk.gov.hmcts.reform.payments.response.CardPaymentServiceRequestResponse; import uk.gov.hmcts.reform.payments.response.PBAServiceRequestResponse; -import uk.gov.hmcts.reform.payments.response.PaymentGroupResponse; import uk.gov.hmcts.reform.payments.response.PaymentServiceResponse; @FeignClient(name = "payments-api", url = "${payments.api.url}", configuration = PaymentClientConfiguration.class) @@ -55,7 +54,7 @@ void cancelCardPayment( ); @GetMapping(value = "/payments/{payment-reference}") - PaymentDto getCardPaymentStatus( + PaymentDto getGovPayCardPaymentStatus( @PathVariable("payment-reference") String paymentReference, @RequestHeader("Authorization") String authorization, @RequestHeader("ServiceAuthorization") String serviceAuthorization @@ -77,18 +76,10 @@ PBAServiceRequestResponse createPbaPayment( ); @PostMapping(value = "/service-request/{service-request-reference}/card-payments", consumes = "application/json") - CardPaymentServiceRequestResponse createCardPaymentServiceRequest( + CardPaymentServiceRequestResponse createGovPayCardPaymentRequest( @PathVariable("service-request-reference") String serviceReqReference, @RequestHeader("Authorization") String authorization, @RequestHeader("ServiceAuthorization") String serviceAuthorization, @RequestBody CardPaymentServiceRequestDTO paymentRequest ); - - @GetMapping(value = "cases/{ccd-case-number}/paymentgroups") - PaymentGroupResponse getCasePaymentGroups( - @PathVariable("ccd-case-number") String ccdCaseNumber, - @RequestHeader("Authorization") String authorization, - @RequestHeader("ServiceAuthorization") String serviceAuthorization - ); - } diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java index f0ec8d9..d2d017a 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/client/PaymentsClient.java @@ -12,7 +12,6 @@ import uk.gov.hmcts.reform.payments.request.PBAServiceRequestDTO; import uk.gov.hmcts.reform.payments.response.CardPaymentServiceRequestResponse; import uk.gov.hmcts.reform.payments.response.PBAServiceRequestResponse; -import uk.gov.hmcts.reform.payments.response.PaymentGroupResponse; import uk.gov.hmcts.reform.payments.response.PaymentServiceResponse; @Service @@ -80,19 +79,15 @@ public PBAServiceRequestResponse createPbaPayment(String serviceReqReference, St ); } - public PaymentGroupResponse getCasePaymentGroups(String ccdCaseNumber, String authorisation) { - return paymentsApi.getCasePaymentGroups(ccdCaseNumber, authorisation, authTokenGenerator.generate()); - } - - public CardPaymentServiceRequestResponse createCardPaymentServiceRequest( + public CardPaymentServiceRequestResponse createGovPayCardPaymentRequest( String serviceReqReference, String authorization, CardPaymentServiceRequestDTO paymentRequest) { - return paymentsApi.createCardPaymentServiceRequest( + return paymentsApi.createGovPayCardPaymentRequest( serviceReqReference, authorization, authTokenGenerator.generate(), paymentRequest); } - public PaymentDto getCardPaymentStatus(String paymentReference, String authorization) { - return paymentsApi.getCardPaymentStatus(paymentReference, authorization, authTokenGenerator.generate()); + public PaymentDto getGovPayCardPaymentStatus(String paymentReference, String authorization) { + return paymentsApi.getGovPayCardPaymentStatus(paymentReference, authorization, authTokenGenerator.generate()); } } diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java b/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java deleted file mode 100644 index 5d0cbf2..0000000 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/models/PaymentGroupDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package uk.gov.hmcts.reform.payments.client.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; -import com.fasterxml.jackson.databind.annotation.JsonNaming; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.OffsetDateTime; -import java.util.List; - -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class PaymentGroupDto { - - @JsonProperty("any_payment_disputed") - private boolean anyPaymentDisputed; - @JsonProperty("date_created") - private OffsetDateTime dateCreated; - @JsonProperty("date_updated") - private OffsetDateTime dateUpdated; - private List fees; - @JsonProperty("payment_group_reference") - private String paymentGroupReference; - private List payments; - private List remissions; - @JsonProperty("service_request_status") - private String serviceRequestStatus; -} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java b/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java deleted file mode 100644 index 1782ac9..0000000 --- a/src/main/java/uk/gov/hmcts/reform/payments/client/models/RemissionDto.java +++ /dev/null @@ -1,63 +0,0 @@ -package uk.gov.hmcts.reform.payments.client.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; -import com.fasterxml.jackson.databind.annotation.JsonNaming; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class RemissionDto { - - @JsonProperty("add_refund") - private boolean addRefund; - - @JsonProperty("beneficiary_name") - private String beneficiaryName; - - @JsonProperty("case_reference") - private String caseReference; - - @JsonProperty("ccd_case_number") - private String ccdCaseNumber; - - @JsonProperty("date_created") - private String dateCreated; - - @JsonProperty("fee_code") - private String feeCode; - - @JsonProperty("fee_id") - private String feeId; - - @JsonProperty("hwf_amount") - private BigDecimal hwfAmount; - - @JsonProperty("hwf_reference") - private String hwfReference; - - private String id; - - @JsonProperty("issue_refund_add_refund_add_remission") - private boolean issueRefundAddRefundAddRemission; - - @JsonProperty("payment_group_reference") - private String paymentGroupReference; - - @JsonProperty("payment_reference") - private String paymentReference; - - @JsonProperty("remission_reference") - private String remissionReference; - -} diff --git a/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java b/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java deleted file mode 100644 index f826024..0000000 --- a/src/main/java/uk/gov/hmcts/reform/payments/response/PaymentGroupResponse.java +++ /dev/null @@ -1,22 +0,0 @@ -package uk.gov.hmcts.reform.payments.response; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import uk.gov.hmcts.reform.payments.client.models.PaymentGroupDto; - -import java.util.List; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@JsonIgnoreProperties(ignoreUnknown = true) -public class PaymentGroupResponse { - - @JsonProperty("payment_groups") - List paymentGroups; -} diff --git a/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientTest.java b/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientTest.java index bdfdbf8..9b97737 100644 --- a/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientTest.java +++ b/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientTest.java @@ -11,13 +11,13 @@ import uk.gov.hmcts.reform.payments.client.models.CasePaymentRequestDto; import uk.gov.hmcts.reform.payments.client.models.FeeDto; import uk.gov.hmcts.reform.payments.request.CardPaymentRequest; +import uk.gov.hmcts.reform.payments.request.CardPaymentServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreateServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreditAccountPaymentRequest; import uk.gov.hmcts.reform.payments.request.PBAServiceRequestDTO; import java.math.BigDecimal; -import static java.math.BigDecimal.ROUND_UNNECESSARY; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doThrow; @@ -27,7 +27,7 @@ @ExtendWith(MockitoExtension.class) class PaymentsClientTest { - private static final BigDecimal TEN_2_DP = BigDecimal.TEN.setScale(2, ROUND_UNNECESSARY); + private static final BigDecimal TEN_2_DP = new BigDecimal("10.00"); private static final String CCD_CASE_NUMBER = "UNKNOWN"; private static final BigDecimal FEE_AMOUNT = TEN_2_DP; @@ -65,6 +65,14 @@ class PaymentsClientTest { .siteId("site ID") .build(); + private static final CardPaymentServiceRequestDTO CARD_PAYMENT_SERVICE_REQUEST = + CardPaymentServiceRequestDTO.builder() + .returnUrl("return-url") + .language("English") + .amount(new BigDecimal("232.00")) + .currency("GBP") + .build(); + private static final CreateServiceRequestDTO SERVICE_REQUEST = CreateServiceRequestDTO.builder() .callBackUrl("callbackurl") .casePaymentRequest(CasePaymentRequestDto.builder().action("action").responsibleParty("party").build()) @@ -129,6 +137,22 @@ void createServiceRequestShouldPropagateExceptions() { .hasMessage("expected exception for create payment"); } + @Test + void createGovPayCardPaymentRequest() { + client.createGovPayCardPaymentRequest("service-request-id", + "authorisation", CARD_PAYMENT_SERVICE_REQUEST); + verify(paymentsApi) + .createGovPayCardPaymentRequest("service-request-id", + "authorisation", "auth token", CARD_PAYMENT_SERVICE_REQUEST); + } + + @Test + void getGovPayCardPaymentStatus() { + client.getGovPayCardPaymentStatus("payment-reference", "authorisation"); + verify(paymentsApi) + .getGovPayCardPaymentStatus("payment-reference", "authorisation", "auth token"); + } + @Test void createCreditAccountPaymentShouldInvokePaymentsApi() { client.createCreditAccountPayment("authorisation", CREDIT_ACCOUNT_PAYMENT); diff --git a/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientWiremockTest.java b/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientWiremockTest.java index 0dd62b2..63ec2b6 100644 --- a/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientWiremockTest.java +++ b/src/test/java/uk/gov/hmcts/reform/payments/client/PaymentsClientWiremockTest.java @@ -15,7 +15,9 @@ import uk.gov.hmcts.reform.payments.client.models.FeeDto; import uk.gov.hmcts.reform.payments.client.models.PaymentDto; import uk.gov.hmcts.reform.payments.request.CardPaymentRequest; +import uk.gov.hmcts.reform.payments.request.CardPaymentServiceRequestDTO; import uk.gov.hmcts.reform.payments.request.CreditAccountPaymentRequest; +import uk.gov.hmcts.reform.payments.response.CardPaymentServiceRequestResponse; import java.math.BigDecimal; import java.util.Map; @@ -116,6 +118,28 @@ void testCreateCardPayment() { ); } + @Test + void testCreateGovPayCardPaymentRequest() { + CardPaymentServiceRequestResponse payment = paymentsClient.createGovPayCardPaymentRequest( + "2023-1701090705688", + "Authorisation", + CardPaymentServiceRequestDTO.builder() + .returnUrl("return-url") + .language("English") + .amount(new BigDecimal("232.00")) + .currency("GBP") + .build() + ); + assertNotNull(payment); + assertAll( + () -> assertEquals("RC-1701-0909-0602-0418", payment.getPaymentReference()), + () -> assertEquals("lbh2ogknloh9p3b4lchngdfg63", payment.getExternalReference()), + () -> assertEquals("Initiated", payment.getStatus()), + () -> assertEquals("https://card.payments.service.gov.uk/secure/7b0716b2-40c4-413e-b62e-72c599c91960", + payment.getNextUrl()) + ); + } + @Test void testRetrieveCardPayment() { PaymentDto payment = paymentsClient.retrieveCardPayment("Authorisation", "RC-1566-2093-5462-0545"); @@ -139,6 +163,45 @@ void testRetrieveCardPayment() { ); } + @Test + void testRetrieveCardPaymentStatus() { + PaymentDto payment = paymentsClient.getGovPayCardPaymentStatus("RC-1701-0909-0602-0418", "Authorisation"); + assertNotNull(payment); + assertAll( + () -> assertEquals("RC-1701-0909-0602-0418", payment.getPaymentReference()), + () -> assertEquals(new BigDecimal("232.00"), payment.getAmount()), + () -> assertEquals("GBP", payment.getCurrency()), + () -> assertEquals("online", payment.getChannel()), + () -> assertEquals("card", payment.getMethod()), + () -> assertEquals("gov pay", payment.getExternalProvider()), + () -> assertEquals("Success", payment.getStatus()), + () -> assertEquals("lbh2ogknloh9p3b4lchngdfg63", payment.getExternalReference()), + () -> assertEquals("2023-1701090705688", payment.getPaymentGroupReference()), + () -> assertNotNull(payment.getFees()), + () -> assertAll( + () -> assertEquals( + "FEE0336", + payment.getFees()[0].getCode() + ), + () -> assertEquals( + new BigDecimal("232.00"), + payment.getFees()[0].getCalculatedAmount() + ) + ), + () -> assertNotNull(payment.getStatusHistories()), + () -> assertAll( + () -> assertEquals( + "Initiated", + payment.getStatusHistories()[0].getStatus() + ), + () -> assertEquals( + "Success", + payment.getStatusHistories()[1].getStatus() + ) + ) + ); + } + @Test void testCancelCardPayment() { // test passes if no exceptions are thrown diff --git a/src/test/resources/mappings/gov-pay-card-payment-status-successful.json b/src/test/resources/mappings/gov-pay-card-payment-status-successful.json new file mode 100644 index 0000000..92abb5a --- /dev/null +++ b/src/test/resources/mappings/gov-pay-card-payment-status-successful.json @@ -0,0 +1,24 @@ +{ + "id" : "f4db6fd2-dea4-4a3a-80df-643b2cf1344d", + "name" : "card-payments_rc-1701-0909-0602-0418", + "request" : { + "url" : "/payments/RC-1701-0909-0602-0418", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"amount\": 232.00,\n \"date_created\": \"2023-11-27T13:15:06.313+0000\",\n \"date_updated\": \"2023-11-27T13:19:28.761+0000\",\n \"currency\": \"GBP\",\n \"ccd_case_number\": \"1701090368574910\",\n \"case_reference\": \"123456\",\n \"payment_reference\": \"RC-1701-0909-0602-0418\",\n \"channel\": \"online\",\n \"method\": \"card\",\n \"external_provider\": \"gov pay\",\n \"status\": \"Success\",\n \"external_reference\": \"lbh2ogknloh9p3b4lchngdfg63\",\n \"site_id\": \"ABA5\",\n \"service_name\": \"Family Private Law\",\n \"payment_group_reference\": \"2023-1701090705688\",\n \"issue_refund_add_refund_add_remission\": false,\n \"issue_refund\": false,\n \"fees\": [\n {\n \"id\": 2729098,\n \"code\": \"FEE0336\",\n \"version\": \"2\",\n \"volume\": 1,\n \"calculated_amount\": 232.00,\n \"memo_line\": \"RECEIPT OF FEES - Family misc private\",\n \"natural_account_code\": \"4481102174\",\n \"ccd_case_number\": \"1701090368574910\",\n \"jurisdiction1\": \"family\",\n \"jurisdiction2\": \"family court\",\n \"date_created\": \"2023-11-27T13:11:45.623+00:00\",\n \"date_updated\": \"2023-11-27T13:19:28.765+00:00\",\n \"issue_refund_add_refund_add_remission\": false,\n \"add_remission\": false\n }\n ],\n \"status_histories\": [\n {\n \"status\": \"Initiated\",\n \"external_status\": \"created\",\n \"date_created\": \"2023-11-27T13:15:06.319+0000\"\n },\n {\n \"status\": \"Success\",\n \"external_status\": \"success\",\n \"date_created\": \"2023-11-27T13:19:28.759+0000\"\n }\n ],\n \"payment_allocation\": []\n}", + "headers" : { + "X-Content-Type-Options" : "nosniff", + "X-XSS-Protection" : "1; mode=block", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "Pragma" : "no-cache", + "Expires" : "0", + "X-Frame-Options" : "DENY", + "Content-Type" : "application/json;charset=UTF-8", + "Date" : "Mon, 19 Aug 2019 10:09:15 GMT" + } + }, + "uuid" : "f4db6fd2-dea4-4a3a-80df-643b2cf1344d", + "persistent" : true +} diff --git a/src/test/resources/mappings/gov-pay-create-card-payment-successful.json b/src/test/resources/mappings/gov-pay-create-card-payment-successful.json new file mode 100644 index 0000000..560556a --- /dev/null +++ b/src/test/resources/mappings/gov-pay-create-card-payment-successful.json @@ -0,0 +1,31 @@ +{ + "id": "603a01d7-0c0b-494d-ba4c-0d7165238522", + "name": "gov-pay-card-payments", + "request": { + "url": "/service-request/2023-1701090705688/card-payments", + "method": "POST", + "bodyPatterns": [ + { + "equalToJson": "{\n \"return-url\" : \"return-url\",\n \"language\" : \"English\",\n \"currency\" : \"GBP\",\n \"amount\" : 232.00\n}", + "ignoreArrayOrder": true, + "ignoreExtraElements": true + } + ] + }, + "response": { + "status": 201, + "body": "{\n \"payment_reference\": \"RC-1701-0909-0602-0418\",\n \"external_reference\": \"lbh2ogknloh9p3b4lchngdfg63\",\n \"status\": \"Initiated\",\n \"next_url\": \"https://card.payments.service.gov.uk/secure/7b0716b2-40c4-413e-b62e-72c599c91960\",\n \"date_created\": \"2023-11-27T13:15:06.313+00:00\"\n}", + "headers": { + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "1; mode=block", + "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", + "Pragma": "no-cache", + "Expires": "0", + "X-Frame-Options": "DENY", + "Content-Type": "application/json;charset=UTF-8", + "Date": "Mon, 19 Aug 2019 09:46:54 GMT" + } + }, + "uuid": "603a01d7-0c0b-494d-ba4c-0d7165238522", + "persistent": true +} From 31fcab450bdebbdabd3ec9560ad93d35702fe488 Mon Sep 17 00:00:00 2001 From: dharmendra kumar Date: Tue, 28 Nov 2023 09:43:53 +0000 Subject: [PATCH 5/5] Change date type --- .../payments/response/CardPaymentServiceRequestResponse.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java b/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java index fe706d8..559bcb6 100644 --- a/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java +++ b/src/main/java/uk/gov/hmcts/reform/payments/response/CardPaymentServiceRequestResponse.java @@ -7,6 +7,8 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.time.OffsetDateTime; + @Data @Builder @NoArgsConstructor @@ -27,5 +29,5 @@ public class CardPaymentServiceRequestResponse { private String nextUrl; @JsonProperty("date_created") - private String dateCreated; + private OffsetDateTime dateCreated; }