diff --git a/scripts/native/file/bus-service-issue-payment-status-1.0-native-quarkus-jdk17-runner b/scripts/native/file/bus-service-issue-payment-status-1.0-native-quarkus-jdk17-runner index c013f5c..5439edb 100644 Binary files a/scripts/native/file/bus-service-issue-payment-status-1.0-native-quarkus-jdk17-runner and b/scripts/native/file/bus-service-issue-payment-status-1.0-native-quarkus-jdk17-runner differ diff --git a/src/main/java/com/banesco/common/domain/model/HttpRequest.java b/src/main/java/com/banesco/common/domain/model/HttpRequest.java index af48ca7..35a46e8 100644 --- a/src/main/java/com/banesco/common/domain/model/HttpRequest.java +++ b/src/main/java/com/banesco/common/domain/model/HttpRequest.java @@ -58,103 +58,117 @@ public class HttpRequest { private boolean logResponseBody = true; public static HttpRequest forApiResponse( - String url, - HttpMethod method, - Class dataType + String url, + HttpMethod method, + Class dataType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(ApiResponse.class) - .genericType(dataType) - .apiResponse(true) - .build(); + .url(url) + .method(method) + .responseType(ApiResponse.class) + .genericType(dataType) + .apiResponse(true) + .build(); } public static HttpRequest forApiResponseList( - String url, - HttpMethod method, - Class elementType + String url, + HttpMethod method, + Class elementType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(ApiResponse.class) - .complexType(TypeBuilder.listOf(elementType)) - .apiResponse(true) - .listResponse(true) - .build(); + .url(url) + .method(method) + .responseType(ApiResponse.class) + .complexType(TypeBuilder.listOf(elementType)) + .apiResponse(true) + .listResponse(true) + .build(); } public static HttpRequest forApiPrivateResponse( - String url, - String statusSuccess, - HttpMethod method, - Class successType + String url, + String statusSuccess, + HttpMethod method, + Class successType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(ApiPrivateResponse.class) - .complexType(TypeBuilder.parametricType( - Either.class, - successType, - ApiPrivateError.class - )) - .apiPrivateResponse(true) - .eitherResponse(true) - .errorType(ApiPrivateError.class) - .statusSuccess(statusSuccess) - .build(); + .url(url) + .method(method) + .responseType(ApiPrivateResponse.class) + .complexType(TypeBuilder.parametricType( + Either.class, + successType, + ApiPrivateError.class + )) + .apiPrivateResponse(true) + .eitherResponse(true) + .errorType(ApiPrivateError.class) + .statusSuccess(statusSuccess) + .build(); } public static HttpRequest forApiPrivateResponseList( - String url, - String statusSuccess, - HttpMethod method, - Class elementType + String url, + String statusSuccess, + HttpMethod method, + Class elementType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(ApiPrivateResponse.class) - .complexType(TypeBuilder.parametricType( - Either.class, - TypeBuilder.listOf(elementType), - ApiPrivateError.class - )) - .apiPrivateResponse(true) - .eitherResponse(true) - .listResponse(true) - .errorType(ApiPrivateError.class) - .statusSuccess(statusSuccess) - .build(); + .url(url) + .method(method) + .responseType(ApiPrivateResponse.class) + .complexType(TypeBuilder.parametricType( + Either.class, + TypeBuilder.listOf(elementType), + ApiPrivateError.class + )) + .apiPrivateResponse(true) + .eitherResponse(true) + .listResponse(true) + .errorType(ApiPrivateError.class) + .statusSuccess(statusSuccess) + .build(); } public static HttpRequest forDirectResponse( - String url, - HttpMethod method, - Class responseType + String url, + HttpMethod method, + Class responseType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(responseType) - .build(); + .url(url) + .method(method) + .responseType(responseType) + .build(); + } + + public static HttpRequest forDirectResponse( + String url, + HttpMethod method, + Class responseType, + Class errorType + ) { + return HttpRequest.builder() + .url(url) + .method(method) + .responseType(responseType) + .errorType(errorType) + .build(); } public static HttpRequest forGenericResponse( - String url, - HttpMethod method, - Class rawType, - Class genericType + String url, + HttpMethod method, + Class rawType, + Class genericType ) { return HttpRequest.builder() - .url(url) - .method(method) - .responseType(rawType) - .complexType(TypeBuilder.parametricType(rawType, genericType)) - .build(); + .url(url) + .method(method) + .responseType(rawType) + .complexType(TypeBuilder.parametricType(rawType, genericType)) + .build(); } public HttpRequest withHeaders(Map headers) { diff --git a/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java b/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java index 42a1660..ba8972f 100644 --- a/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java +++ b/src/main/java/com/banesco/module/security_trace/domain/model/SecurityTraceConfig.java @@ -6,6 +6,8 @@ import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.Getter; import lombok.ToString; +import java.util.Map; + @Getter @ToString @RegisterForReflection @@ -13,4 +15,5 @@ public class SecurityTraceConfig { private String url; private TimeoutConfig timeout; private SecurityTraceRequest request; + private Map converters; } \ No newline at end of file diff --git a/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java b/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java index 1c0d6e4..97ef8af 100644 --- a/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java +++ b/src/main/java/com/banesco/module/security_trace/infrastructure/client/SecurityTraceClient.java @@ -10,6 +10,7 @@ import com.banesco.module.security_trace.domain.dto.request.SecurityTraceRequest import com.banesco.module.security_trace.domain.model.SecurityTraceConfig; import com.banesco.module.security_trace.domain.model.SecurityTraceObject; import com.banesco.module.service_issue_payment_status.domain.dto.request.ServiceIssuePaymentStatusRequest; +import com.banesco.module.service_issue_payment_status.domain.dto.response.ServiceIssuePaymentStatusResponse; import io.netty.util.internal.StringUtil; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @@ -17,6 +18,7 @@ import jakarta.ws.rs.core.Response; import lombok.extern.slf4j.Slf4j; import java.util.Date; +import java.util.Objects; @Slf4j @ApplicationScoped @@ -90,12 +92,13 @@ public class SecurityTraceClient implements SecurityTraceUseCase { ) { long executedTime = (endTime - startTime); int statusHttp = apiResponse.getStatus(); - ApiResponse apiResponseData = (ApiResponse) apiResponse.getEntity(); + ApiResponse apiResponseData = + (ApiResponse) apiResponse.getEntity(); return SecurityTraceRequest.builder() .sp(securityTraceConfig.getRequest().getSp()) .codBan(securityTraceConfig.getRequest().getCodBan()) - .codMon(securityTraceConfig.getRequest().getCodMon()) + .codMon(getCodMon(apiResponseData)) .codEve(securityTraceConfig.getRequest().getCodEve()) .codEve2(securityTraceConfig.getRequest().getCodEve2()) .login(apiRequest.getChannelCode()) @@ -119,6 +122,43 @@ public class SecurityTraceClient implements SecurityTraceUseCase { .build(); } + private String getCodMon( + ApiResponse apiResponseData + ) { + String defaultCurrency = securityTraceConfig.getRequest().getCodMon(); + + if( + Objects.isNull(apiResponseData) || + Objects.isNull(apiResponseData.getData()) || + Objects.isNull(apiResponseData.getData().getServicingIssueProcedure()) || + Objects.isNull(apiResponseData.getData().getServicingIssueProcedure().getTransaction()) || + Objects.isNull(apiResponseData.getData().getServicingIssueProcedure().getTransaction().getFinancialTransaction()) + ) { + log.info("Moneda asignada por defecto: {}", defaultCurrency); + return defaultCurrency; + } + + String currency = apiResponseData.getData() + .getServicingIssueProcedure() + .getTransaction() + .getFinancialTransaction() + .getCurrencyCode(); + + if (StringUtil.isNullOrEmpty(currency)) { + log.info("Moneda de la peticion/respuesta vacia, asignada por defecto: {}", defaultCurrency); + return defaultCurrency; + } + + defaultCurrency = securityTraceConfig.getConverters().getOrDefault( + currency.toUpperCase(), + currency.toUpperCase() + ); + + log.info("Moneda convertida o por defecto: {} -> {}", currency, defaultCurrency); + + return defaultCurrency; + } + private String getStatusMessage( ApiResponse apiResponseData, int statusHttp diff --git a/src/main/java/com/banesco/module/service_issue_payment_status/infrastructure/resource/ServiceIssuePaymentStatusResource.java b/src/main/java/com/banesco/module/service_issue_payment_status/infrastructure/resource/ServiceIssuePaymentStatusResource.java index 20634b1..ac12a22 100644 --- a/src/main/java/com/banesco/module/service_issue_payment_status/infrastructure/resource/ServiceIssuePaymentStatusResource.java +++ b/src/main/java/com/banesco/module/service_issue_payment_status/infrastructure/resource/ServiceIssuePaymentStatusResource.java @@ -311,7 +311,7 @@ public class ServiceIssuePaymentStatusResource { String channelCode, @QueryParam("customerReferenceFintechId") - @Parameter(description = "ID de la fintech", example = "pranical-test") + @Parameter(description = "ID de la fintech", example = "provider-test") String customerReferenceFintechId, @QueryParam("appId") diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 623676f..de4edbb 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,8 +13,8 @@ api: bus-service-issue-payment-status: messages: key: 'bus-service-issue-payment-status' - content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":"503","statusCode":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backendCode":"VRN02","httpCode":"204","statusCode":"VRN02","description":"Cliente sin productos"}]' + content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":503,"statusCode":"VRN04","description":"Servicio en horario de mantenimiento"},{"backendCode":"PIB-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIB-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]' rest-client: dom-service-issue-payment-status: '{"url":"http://localhost:8083/service-issue-payment-status/retrieve/{paymentStatusId}/{channelCode}","timeout":{"connect":10000,"response":10000}}' - security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSSOLID","codEve2":"CONSSOLID","codBan":"01","codMon":"BS"}}' + security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSSOLID","codEve2":"CONSSOLID","codBan":"01","codMon":"BS"},"converters":{"VES":"BS"}}' service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":10000,"response":10000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}' \ No newline at end of file diff --git a/src/main/resources/configmap.yaml b/src/main/resources/configmap.yaml index f9043d1..a8c1773 100644 --- a/src/main/resources/configmap.yaml +++ b/src/main/resources/configmap.yaml @@ -79,5 +79,5 @@ data: quarkus.smallrye-openapi.enable: 'true' quarkus.smallrye-health.readiness-path: /actuator/health/ready quarkus.log.console.enable: 'true' - api.bus-service-issue-payment-status.messages.content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":"503","statusCode":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backendCode":"204","httpCode":"200","statusCode":"200","description":"Cliente sin productos","status":"ok"}]' + api.bus-service-issue-payment-status.messages.content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN04","httpCode":503,"statusCode":"VRN04","description":"Servicio en horario de mantenimiento"},{"backendCode":"PIB-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIB-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]' quarkus.smallrye-openapi.path: /openapi