Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIV-0000 add service auth #3495

Merged
merged 65 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
5de1b77
Adding S2S token for service request update url
sampankumar Jul 17, 2023
a986d65
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Jul 18, 2023
702ca44
Adding S2S token for service request update url
sampankumar Jul 19, 2023
bc9658d
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Jul 19, 2023
898daf3
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Jul 20, 2023
bbd10f7
Adding S2S token for service request update url
sampankumar Jul 21, 2023
2844def
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Jul 21, 2023
8f581cb
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Jul 21, 2023
d4340ce
Adding S2S token for service request update url
sampankumar Jul 21, 2023
d6ce023
Merge remote-tracking branch 'origin/task/CIV-0000-addServiceAuth' in…
sampankumar Jul 21, 2023
cc07f28
Adding S2S token for service request update url
sampankumar Jul 21, 2023
c8e7bfd
Adding S2S token for service request update url
sampankumar Jul 21, 2023
d383c8c
Adding S2S token for service request update url
sampankumar Jul 21, 2023
25fae44
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Jul 24, 2023
121d400
Adding S2S token for service request update url
sampankumar Jul 24, 2023
6f53ae0
Bumping chart version/ fixing aliases
hmcts-jenkins-a-to-c[bot] Jul 24, 2023
1b7a0df
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Aug 9, 2023
7782928
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Aug 15, 2023
a358b16
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Aug 15, 2023
63b1b9a
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Aug 15, 2023
18c5f39
Update Jenkinsfile_CNP
sampankumar Aug 16, 2023
50bfc90
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Aug 18, 2023
765a45a
Pointing to a branch
sampankumar Aug 18, 2023
c0ceeb5
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Oct 11, 2023
52a3ba0
CIV-0000 - Add service Auth for payment
sampankumar Oct 13, 2023
36f92e0
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Oct 13, 2023
8660f5f
Bumping chart version/ fixing aliases
hmcts-jenkins-a-to-c[bot] Oct 13, 2023
b5584a9
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Oct 31, 2023
f388e8c
Bumping chart version/ fixing aliases
hmcts-jenkins-a-to-c[bot] Oct 31, 2023
fb35361
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Oct 31, 2023
cd4ac00
Fixing unit tests
sampankumar Oct 31, 2023
8796752
Merge remote-tracking branch 'origin/task/CIV-0000-addServiceAuth' in…
sampankumar Oct 31, 2023
28c10b5
Fixing unit tests
sampankumar Oct 31, 2023
6df7c58
Fixing unit tests
sampankumar Oct 31, 2023
a921c60
Fixing unit tests
sampankumar Oct 31, 2023
d062c82
Fixing unit tests
sampankumar Oct 31, 2023
425b81f
Fixing unit tests
sampankumar Oct 31, 2023
848d742
Bumping chart version/ fixing aliases
hmcts-jenkins-a-to-c[bot] Oct 31, 2023
d15ba42
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 1, 2023
19058eb
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 1, 2023
e16e822
Merge branch 'master' into task/CIV-0000-addServiceAuth
sankhajuria Nov 1, 2023
ebf9dae
Merge branch 'master' into task/CIV-0000-addServiceAuth
sankhajuria Nov 1, 2023
cb8311d
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 1, 2023
6df81a5
Merge branch 'master' into task/CIV-0000-addServiceAuth
mfallonhmcts Nov 10, 2023
428bec2
Merge branch 'master' into task/CIV-0000-addServiceAuth
mfallonhmcts Nov 10, 2023
db5643c
Merge branch 'master' into task/CIV-0000-addServiceAuth
mfallonhmcts Nov 13, 2023
746b28e
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 15, 2023
40e448a
Adding service-request-update-claim-issued
sampankumar Nov 15, 2023
98ab590
Update Jenkinsfile_CNP
sampankumar Nov 16, 2023
3f75603
converting to List<String>
sampankumar Nov 16, 2023
60972ae
Checkstyle error
sampankumar Nov 16, 2023
5e55fd4
converting to List<String>
sampankumar Nov 16, 2023
222500f
converting to List<String>
sampankumar Nov 17, 2023
8e0de90
Fixing Sonar failures
sampankumar Nov 20, 2023
f11daa9
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 20, 2023
51fd2f6
Fixing Sonar failures
sampankumar Nov 20, 2023
df470aa
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 20, 2023
529c1fe
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 20, 2023
f740feb
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 22, 2023
6a8f1c1
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 22, 2023
eb3f86f
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 22, 2023
720058a
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 23, 2023
0dd38c2
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 23, 2023
165a12e
Merge remote-tracking branch 'origin/master' into task/CIV-0000-addSe…
sampankumar Nov 24, 2023
09f4de3
Merge branch 'master' into task/CIV-0000-addServiceAuth
sampankumar Nov 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Jenkinsfile_CNP
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import uk.gov.hmcts.contino.GithubAPI
def type = "java"
def product = "civil"
def component = "service"
def ccdBranch = "master"
def ccdBranch = "CIV-0000-adds2stoken"
sampankumar marked this conversation as resolved.
Show resolved Hide resolved
def camundaBranch = "master"
def yarnBuilder = new uk.gov.hmcts.contino.YarnBuilder(this)

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ dependencies {
implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-openfeign'
implementation group: 'org.springframework.cloud', name: 'spring-cloud-openfeign-core'
implementation group: 'uk.gov.hmcts.reform', name: 'properties-volume-spring-boot-starter', version: '0.1.0'
implementation group: 'uk.gov.hmcts.reform', name: 'service-auth-provider-client', version: '4.0.0'
implementation group: 'uk.gov.hmcts.reform', name: 'service-auth-provider-client', version: '4.0.3'

implementation group: 'io.github.openfeign', name: 'feign-httpclient', version: '12.4'
implementation group: 'org.springframework.retry', name: 'spring-retry'
Expand Down
2 changes: 1 addition & 1 deletion charts/civil-service/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
description: A Helm chart for civil-service App
name: civil-service
home: https://github.com/hmcts/civil-service
version: 0.0.52
version: 0.0.53
maintainers:
- name: HMCTS Civil team

Expand Down
1 change: 1 addition & 0 deletions charts/civil-service/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ java:
ASYNC_HANDLER_CORE_POOL_SIZE: 7
ASYNC_HANDLER_MAX_POOL_SIZE: 42
ASYNC_HANDLER_QUEUE_CAPACITY: 10
CIVIL_S2S_AUTHORISED_SERVICES: payment_app,ccd_data,civil_service,civil-citizen-ui

keyVaults:
civil:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import uk.gov.hmcts.reform.authorisation.ServiceAuthorisationApi;
import uk.gov.hmcts.reform.civil.Application;
import uk.gov.hmcts.reform.civil.TestIdamConfiguration;
import uk.gov.hmcts.reform.civil.service.AuthorisationService;
import uk.gov.hmcts.reform.civil.service.UserService;
import uk.gov.hmcts.reform.idam.client.models.UserInfo;

Expand Down Expand Up @@ -61,6 +63,9 @@ public abstract class BaseIntegrationTest {
.roles(of("caseworker-civil-solicitor"))
.build();

private static final String s2sToken = "s2s AuthToken";
@MockBean
private ServiceAuthorisationApi serviceAuthorisationApi;
@MockBean
protected UserService userService;
@MockBean
Expand All @@ -69,6 +74,8 @@ public abstract class BaseIntegrationTest {
protected SecurityContext securityContext;
@MockBean
protected JwtDecoder jwtDecoder;
@MockBean
public AuthorisationService authorisationService;

@Autowired
protected ObjectMapper objectMapper;
Expand All @@ -78,11 +85,13 @@ public abstract class BaseIntegrationTest {

@BeforeEach
public void setUpBase() {
when(authorisationService.isServiceAuthorized(any())).thenReturn(true);
when(userService.getAccessToken(any(), any())).thenReturn("arbitrary access token");
when(userService.getUserInfo(anyString())).thenReturn(USER_INFO);
when(securityContext.getAuthentication()).thenReturn(authentication);
SecurityContextHolder.setContext(securityContext);
setSecurityAuthorities(authentication);
when(serviceAuthorisationApi.getServiceName(any())).thenReturn("payment_app");
when(jwtDecoder.decode(anyString())).thenReturn(getJwt());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
Expand All @@ -22,6 +23,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

class ServiceRequestUpdateCallbackControllerTest extends BaseIntegrationTest {
Expand All @@ -31,6 +33,7 @@ class ServiceRequestUpdateCallbackControllerTest extends BaseIntegrationTest {
private static final String PAID = "Paid";
private static final String REFERENCE = "reference";
private static final String ACCOUNT_NUMBER = "123445555";
private static final String s2sToken = "s2s AuthToken";

@MockBean
CoreCaseDataApi coreCaseDataApi;
Expand All @@ -40,6 +43,7 @@ class ServiceRequestUpdateCallbackControllerTest extends BaseIntegrationTest {

@BeforeEach
void bareMinimumToMakeAPositiveRequest() {
when(authorisationService.isServiceAuthorized(any())).thenReturn(true);
CaseData caseData = CaseData.builder().businessProcess(BusinessProcess.builder().processInstanceId("instance").camundaEvent("camunda event").build()).build();
CaseDetails caseDetails = CaseDetails.builder().build();
caseDetails.setData(caseData.toMap(objectMapper));
Expand All @@ -51,6 +55,30 @@ void bareMinimumToMakeAPositiveRequest() {
given(coreCaseDataApi.submitEventForCaseWorker(any(), any(), any(), any(), any(), any(), anyBoolean(), any())).willReturn(caseDetails);
}

@Test
public void whenValidPaymentCallbackIsReceivedReturnSuccess() throws Exception {
doPut(buildServiceDto(), PAYMENT_CALLBACK_URL, "")
.andExpect(status().isOk());
}

@Test
public void whenPaymentCallbackIsReceivedWithoutServiceAuthorisationReturn400() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders.put(PAYMENT_CALLBACK_URL, "")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(buildServiceDto()))).andExpect(status().is4xxClientError());
}

@Test
public void whenPaymentCallbackIsReceivedWithServiceAuthorisationButreturnsfalseReturn400() throws Exception {
when(authorisationService.isServiceAuthorized(any())).thenReturn(false);
mockMvc.perform(
MockMvcRequestBuilders.put(PAYMENT_CALLBACK_URL, "")
.header("ServiceAuthorization", s2sToken)
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(buildServiceDto()))).andExpect(status().is5xxServerError());
}

@Test
public void whenInvalidTypeOfRequestMade_ReturnMethodNotAllowed() throws Exception {

Expand Down Expand Up @@ -96,6 +124,8 @@ private ServiceRequestUpdateDto buildServiceDto() {
protected <T> ResultActions doPut(T content, String urlTemplate, Object... uriVars) {
return mockMvc.perform(
MockMvcRequestBuilders.put(urlTemplate, uriVars)
.header(HttpHeaders.AUTHORIZATION, BEARER_TOKEN)
.header("ServiceAuthorization", "s2s AuthToken")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(content)));
}
Expand All @@ -104,6 +134,8 @@ protected <T> ResultActions doPut(T content, String urlTemplate, Object... uriVa
protected <T> ResultActions doPost(T content, String urlTemplate, Object... uriVars) {
return mockMvc.perform(
MockMvcRequestBuilders.post(urlTemplate, uriVars)
.header(HttpHeaders.AUTHORIZATION, BEARER_TOKEN)
.header("ServiceAuthorization", "s2s AuthToken")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(content)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
Expand All @@ -22,6 +23,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

class ServiceRequestUpdateClaimIssuedCallbackControllerTest extends BaseIntegrationTest {
Expand All @@ -31,7 +33,6 @@ class ServiceRequestUpdateClaimIssuedCallbackControllerTest extends BaseIntegrat
private static final String PAID = "Paid";
private static final String REFERENCE = "reference";
private static final String ACCOUNT_NUMBER = "123445555";

@MockBean
CoreCaseDataApi coreCaseDataApi;

Expand All @@ -40,6 +41,7 @@ class ServiceRequestUpdateClaimIssuedCallbackControllerTest extends BaseIntegrat

@BeforeEach
void bareMinimumToMakeAPositiveRequest() {
when(authorisationService.isServiceAuthorized(any())).thenReturn(true);
CaseData
caseData = CaseData.builder().businessProcess(BusinessProcess.builder().processInstanceId("instance").camundaEvent("camunda event").build()).build();
CaseDetails caseDetails = CaseDetails.builder().build();
Expand Down Expand Up @@ -77,6 +79,30 @@ public void whenServiceRequestUpdateRequestButUnexpectedErrorOccurs_thenHttp5xx(
.andExpect(status().is5xxServerError());
}

@Test
public void whenValidPaymentCallbackIsReceivedReturnSuccess() throws Exception {
doPut(buildServiceDto(), PAYMENT_CALLBACK_URL, "")
.andExpect(status().isOk());
}

@Test
public void whenPaymentCallbackIsReceivedWithoutServiceAuthorisationReturn400() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders.put(PAYMENT_CALLBACK_URL, "")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(buildServiceDto()))).andExpect(status().is4xxClientError());
}

@Test
public void whenPaymentCallbackIsReceivedWithServiceAuthorisationButreturnsfalseReturn400() throws Exception {
when(authorisationService.isServiceAuthorized(any())).thenReturn(false);

doPut(buildServiceDto(), PAYMENT_CALLBACK_URL, "")
// Then: the result status must be an HTTP-4xx
.andExpect(status().is5xxServerError());

}

private ServiceRequestUpdateDto buildServiceDto() {
return ServiceRequestUpdateDto.builder()
.ccdCaseNumber(CCD_CASE_NUMBER)
Expand All @@ -94,6 +120,8 @@ private ServiceRequestUpdateDto buildServiceDto() {
protected <T> ResultActions doPut(T content, String urlTemplate, Object... uriVars) {
return mockMvc.perform(
MockMvcRequestBuilders.put(urlTemplate, uriVars)
.header(HttpHeaders.AUTHORIZATION, BEARER_TOKEN)
.header("ServiceAuthorization", "s2s AuthToken")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(content)));
}
Expand All @@ -102,6 +130,8 @@ protected <T> ResultActions doPut(T content, String urlTemplate, Object... uriVa
protected <T> ResultActions doPost(T content, String urlTemplate, Object... uriVars) {
return mockMvc.perform(
MockMvcRequestBuilders.post(urlTemplate, uriVars)
.header(HttpHeaders.AUTHORIZATION, BEARER_TOKEN)
.header("ServiceAuthorization", "s2s AuthToken")
.contentType(MediaType.APPLICATION_JSON)
.content(toJson(content)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
"/",
"/loggers/**",
"/assignment/**",
"/case/document/**",
"/service-request-update",
"/service-request-update-claim-issued",
"/case/document/**"
};

@Value("${spring.security.oauth2.client.provider.oidc.issuer-uri}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import uk.gov.hmcts.reform.civil.enums.FeeType;
import uk.gov.hmcts.reform.civil.exceptions.InternalServerErrorException;
import uk.gov.hmcts.reform.civil.model.ServiceRequestUpdateDto;
import uk.gov.hmcts.reform.civil.service.AuthorisationService;
import uk.gov.hmcts.reform.civil.service.PaymentRequestUpdateCallbackService;

import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
Expand All @@ -22,16 +24,24 @@ public class ServiceRequestUpdateCallbackController {

private final PaymentRequestUpdateCallbackService requestUpdateCallbackService;

private final AuthorisationService authorisationService;

@PutMapping(path = "/service-request-update", consumes = APPLICATION_JSON, produces = APPLICATION_JSON)
@Operation(summary = "Ways to pay will call this API and send the status of payment with other details")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Callback processed."),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "500", description = "Internal Server Error")
})
public void serviceRequestUpdate(@RequestBody ServiceRequestUpdateDto serviceRequestUpdateDto) {
public void serviceRequestUpdate(
@RequestHeader("ServiceAuthorization") String s2sToken,
@RequestBody ServiceRequestUpdateDto serviceRequestUpdateDto) {
try {
requestUpdateCallbackService.processCallback(serviceRequestUpdateDto, FeeType.HEARING.name());
if (authorisationService.isServiceAuthorized(s2sToken)) {
requestUpdateCallbackService.processCallback(serviceRequestUpdateDto, FeeType.HEARING.name());
} else {
throw (new RuntimeException("Invalid Client"));
}
} catch (Exception ex) {
log.error(
"Payment callback is unsuccessful for the CaseID: {}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import uk.gov.hmcts.reform.civil.enums.FeeType;
import uk.gov.hmcts.reform.civil.exceptions.InternalServerErrorException;
import uk.gov.hmcts.reform.civil.model.ServiceRequestUpdateDto;
import uk.gov.hmcts.reform.civil.service.AuthorisationService;
import uk.gov.hmcts.reform.civil.service.PaymentRequestUpdateCallbackService;

import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
Expand All @@ -22,14 +24,21 @@ public class ServiceRequestUpdateClaimIssuedCallbackController {

private final PaymentRequestUpdateCallbackService requestUpdateCallbackService;

private final AuthorisationService authorisationService;

@PutMapping(path = "/service-request-update-claim-issued", consumes = APPLICATION_JSON, produces = APPLICATION_JSON)
@Operation(summary = "Ways to pay will call this API and send the status of payment with other details")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Callback processed."),
@ApiResponse(responseCode = "400", description = "Bad Request")})
public void serviceRequestUpdate(@RequestBody ServiceRequestUpdateDto serviceRequestUpdateDto) {
public void serviceRequestUpdate(@RequestHeader("ServiceAuthorization") String s2sToken,
@RequestBody ServiceRequestUpdateDto serviceRequestUpdateDto) {
try {
requestUpdateCallbackService.processCallback(serviceRequestUpdateDto, FeeType.CLAIMISSUED.name());
if (authorisationService.isServiceAuthorized(s2sToken)) {
requestUpdateCallbackService.processCallback(serviceRequestUpdateDto, FeeType.CLAIMISSUED.name());
} else {
throw (new RuntimeException("Invalid Client"));
}
} catch (Exception ex) {
log.error(
"Payment callback is unsuccessful for the CaseID: {}",
Expand Down
Loading
Loading