diff --git a/pom.xml b/pom.xml
index ed84ffc..a9e4c62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
bus-payment-initiation-request
1.0-native-quarkus-jdk17
bus-payment-initiation-request
- API Business - Read payment statuses of the file by ID
+ API Business - Create payment single request
17
diff --git a/scripts/native/file/bus-payment-initiation-request-1.0-native-quarkus-jdk17-runner b/scripts/native/file/bus-payment-initiation-request-1.0-native-quarkus-jdk17-runner
index b20ce90..39af4c7 100644
Binary files a/scripts/native/file/bus-payment-initiation-request-1.0-native-quarkus-jdk17-runner and b/scripts/native/file/bus-payment-initiation-request-1.0-native-quarkus-jdk17-runner differ
diff --git a/src/main/java/com/banesco/common/application/helper/PartyValidateHelper.java b/src/main/java/com/banesco/common/application/helper/PartyValidateHelper.java
new file mode 100644
index 0000000..32b911d
--- /dev/null
+++ b/src/main/java/com/banesco/common/application/helper/PartyValidateHelper.java
@@ -0,0 +1,112 @@
+package com.banesco.common.application.helper;
+
+import com.banesco.common.domain.exception.HttpStatusCodeException;
+import com.banesco.module.msg_response_header.domain.model.AdditionalStatus;
+import com.banesco.module.msg_response_header.domain.model.BlackList;
+import com.banesco.module.msg_response_header.domain.model.BlackListRec;
+import com.banesco.module.msg_response_header.domain.model.Status;
+import io.netty.util.internal.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Slf4j
+public class PartyValidateHelper {
+
+ private PartyValidateHelper() {}
+
+ public static void validateBlackListStatus(
+ BlackList blackList,
+ Status status
+ ) {
+ if(!Objects.isNull(blackList)) {
+ BlackListRec blackListRec = blackList.getBlackListRec();
+
+ if(
+ !Objects.isNull(blackListRec) &&
+ !StringUtil.isNullOrEmpty(blackListRec.getBlackListBanesco()) &&
+ !StringUtil.isNullOrEmpty(blackListRec.getBlackListCbn()) &&
+ blackListRec.getBlackListBanesco().equalsIgnoreCase("N") &&
+ blackListRec.getBlackListCbn().equalsIgnoreCase("N")
+ ) {
+ return;
+ }
+ }
+
+ PartyValidateHelper.validateStatus(status);
+ }
+
+ public static void validateStatus(Status status) {
+ if(Objects.isNull(status)) {
+ return;
+ }
+
+ List errors = extractErrorCodes(status);
+
+ if(!errors.isEmpty()) {
+ AdditionalStatus additionalStatus = getFirstAdditionalStatus(status);
+ String error = String.join("-", errors);
+ String desc = (!Objects.isNull(additionalStatus))
+ ? additionalStatus.getStatusDesc()
+ : "";
+
+ log.error(
+ "Error asignado desde la lista concatenada de los errores: {} -> {}",
+ error,
+ desc
+ );
+
+ throw HttpStatusCodeException.badRequest(error, desc);
+ } else {
+ log.error(
+ "Error asignado desde el status principal: {} -> {}",
+ status.getStatusCode(),
+ status.getStatusDesc()
+ );
+
+ throw HttpStatusCodeException.internalServer(
+ status.getStatusCode(),
+ status.getStatusDesc()
+ );
+ }
+ }
+
+ private static List extractErrorCodes(Status status) {
+ List errors = new ArrayList<>();
+
+ List additionalStatuses = status.getAdditionalStatus();
+
+ if(Objects.isNull(additionalStatuses) || additionalStatuses.isEmpty()) {
+ return errors;
+ }
+
+ for (AdditionalStatus item: additionalStatuses) {
+ if (
+ !Objects.equals(item.getStatusCode(), "000") &&
+ !errors.contains(item.getStatusCode())
+ ) {
+ errors.add(item.getStatusCode());
+ }
+ }
+
+ return errors;
+ }
+
+ private static AdditionalStatus getFirstAdditionalStatus(Status status) {
+ List additionalStatuses = status.getAdditionalStatus();
+
+ if(Objects.isNull(additionalStatuses) || additionalStatuses.isEmpty()) {
+ return null;
+ }
+
+ for (AdditionalStatus item: additionalStatuses) {
+ if (!Objects.equals(item.getStatusCode(), "000")) {
+ return item;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/src/main/java/com/banesco/common/application/service/HttpClientService.java b/src/main/java/com/banesco/common/application/service/HttpClientService.java
index fb42a5c..d74aaa6 100644
--- a/src/main/java/com/banesco/common/application/service/HttpClientService.java
+++ b/src/main/java/com/banesco/common/application/service/HttpClientService.java
@@ -36,56 +36,61 @@ public class HttpClientService implements HttpClientUseCase {
@Override
public T execute(HttpRequest request) {
- return executeInternal(request);
+ return executeRequest(request);
+ }
+
+ @Override
+ public Either executeEither(HttpRequest request) {
+ return executeEitherInternal(request, false);
+ }
+
+ @Override
+ public Either, R> executeEitherList(HttpRequest request) {
+ return executeEitherInternal(request, true);
}
@Override
public ApiResponse executeApiResponse(HttpRequest request) {
- return executeInternal(request);
+ return executeRequest(request);
}
@Override
- public ApiResponse> executeApiResponseList(
- HttpRequest request
- ) {
- return executeInternal(request);
+ public ApiResponse> executeApiResponseList(HttpRequest request) {
+ return executeRequest(request);
}
@Override
- public ApiPrivateResponse> executeApiPrivateResponse(
- HttpRequest request
- ) {
- return executeInternal(request);
+ public ApiPrivateResponse> executeApiPrivateResponse(HttpRequest request) {
+ return executeRequest(request);
}
@Override
- public ApiPrivateResponse, ApiPrivateError>> executeApiPrivateResponseList(
- HttpRequest request
- ) {
- return executeInternal(request);
+ public ApiPrivateResponse, ApiPrivateError>> executeApiPrivateResponseList(HttpRequest request) {
+ return executeRequest(request);
}
- private T executeInternal(HttpRequest request) {
- String finalUrl = buildFinalUrl(request);
-
- if (request.isLogRequestBody()) {
- log.info("URL final: {}", finalUrl);
-
- if (request.getHeaders() != null && !request.getHeaders().isEmpty()) {
- log.info("Headers: {}", request.getHeaders());
- }
-
- if (request.getQueryParams() != null && !request.getQueryParams().isEmpty()) {
- log.info("Query params: {}", request.getQueryParams());
- }
-
- if (request.getBody() != null) {
- log.info("Body: {}", request.getBody());
- }
- }
-
+ private Either executeEitherInternal(HttpRequest request, boolean isList) {
try (Client client = createClient(request.getConnectTimeout(), request.getReadTimeout())) {
- WebTarget target = client.target(finalUrl);
+ WebTarget target = client.target(buildFinalUrl(request));
+ Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
+
+ if (request.getHeaders() != null) {
+ request.getHeaders().forEach(builder::header);
+ }
+
+ Response response = buildRequest(builder, request);
+ return handleEitherResponse(request, response, isList);
+
+ } catch (HttpStatusCodeException | HttpApiResponseException e) {
+ throw e;
+ } catch (Exception e) {
+ throw handleConnectionError(request, e);
+ }
+ }
+
+ private T executeRequest(HttpRequest request) {
+ try (Client client = createClient(request.getConnectTimeout(), request.getReadTimeout())) {
+ WebTarget target = client.target(buildFinalUrl(request));
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
if (request.getHeaders() != null) {
@@ -97,14 +102,122 @@ public class HttpClientService implements HttpClientUseCase {
} catch (HttpStatusCodeException | HttpApiResponseException e) {
throw e;
} catch (Exception e) {
- log.error("Error de conexion {}: {}", request.getMethod(), e.getMessage());
- throw HttpStatusCodeException.serviceUnavailable(
- "503",
- "Error de conexion con el servicio externo: " + e.getMessage()
- );
+ throw handleConnectionError(request, e);
}
}
+ @SuppressWarnings("unchecked")
+ private Either handleEitherResponse(HttpRequest request, Response response, boolean isList) {
+ int statusCode = response.getStatus();
+
+ try (response) {
+ String responseBody = response.readEntity(String.class);
+ logResponse(request, statusCode, responseBody);
+
+ if (statusCode >= 200 && statusCode < 300) {
+ Object successData = isList
+ ? parseSuccessListResponse(request, responseBody)
+ : parseSuccessResponse(request, responseBody);
+ return Either.left((T) successData);
+ } else {
+ logErrorResponse(request, statusCode, responseBody);
+ R errorData = tryParseErrorResponse(request, responseBody);
+
+ if (errorData != null) {
+ return Either.right(errorData);
+ }
+
+ throw mapHttpStatusToException(statusCode, responseBody);
+ }
+ } catch (HttpStatusCodeException | HttpApiResponseException e) {
+ throw e;
+ } catch (Exception e) {
+ throw handleProcessingError(request, e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private T parseSuccessResponse(HttpRequest request, String responseBody) throws JsonProcessingException {
+ Type successType = extractSuccessType(request);
+
+ if (successType != null) {
+ if (successType instanceof Class) {
+ return objectMapper.readValue(responseBody, (Class) successType);
+ } else if (successType instanceof ParameterizedType) {
+ JavaType javaType = objectMapper.getTypeFactory().constructType(successType);
+ return objectMapper.readValue(responseBody, javaType);
+ }
+ }
+
+ if (request.getResponseType() != null && request.getResponseType() != Object.class) {
+ return objectMapper.readValue(responseBody, objectMapper.getTypeFactory().constructType(request.getResponseType()));
+ }
+
+ return (T) objectMapper.readValue(responseBody, Object.class);
+ }
+
+ @SuppressWarnings("unchecked")
+ private List parseSuccessListResponse(HttpRequest request, String responseBody) throws JsonProcessingException {
+ Type successType = extractSuccessType(request);
+
+ if (
+ successType instanceof ParameterizedType paramType &&
+ paramType.getRawType() == List.class &&
+ paramType.getActualTypeArguments().length > 0
+ ) {
+ Type elementType = paramType.getActualTypeArguments()[0];
+ if (elementType instanceof Class) {
+ JavaType javaType = objectMapper.getTypeFactory().constructCollectionType(
+ List.class, (Class) elementType
+ );
+ return objectMapper.readValue(responseBody, javaType);
+ }
+ }
+
+ return objectMapper.readValue(responseBody, List.class);
+ }
+
+ private Type extractSuccessType(HttpRequest request) {
+ if (
+ request.getComplexType() != null &&
+ request.getComplexType() instanceof ParameterizedType paramType &&
+ paramType.getRawType() == Either.class &&
+ paramType.getActualTypeArguments().length > 0
+ ) {
+ return paramType.getActualTypeArguments()[0];
+ }
+
+ if (request.getGenericType() != null) {
+ return request.getGenericType();
+ }
+
+ return request.getResponseType();
+ }
+
+ @SuppressWarnings("unchecked")
+ private R tryParseErrorResponse(HttpRequest request, String responseBody) {
+ if (responseBody == null || responseBody.trim().isEmpty()) {
+ return null;
+ }
+
+ try {
+ if (request.getErrorType() != null) {
+ return (R) objectMapper.readValue(responseBody, request.getErrorType());
+ }
+
+ if (request.getComplexType() != null && request.getComplexType() instanceof ParameterizedType paramType) {
+ Type[] typeArgs = paramType.getActualTypeArguments();
+ if (typeArgs.length >= 2 && typeArgs[1] instanceof Class) {
+ return objectMapper.readValue(responseBody, (Class) typeArgs[1]);
+ }
+ }
+ } catch (Exception e) {
+ log.error("No se pudo parsear la respuesta como error type: {}", e.getMessage());
+ }
+
+ return null;
+ }
+
private String buildFinalUrl(HttpRequest request) {
String finalUrl = request.getUrl();
@@ -115,7 +228,11 @@ public class HttpClientService implements HttpClientUseCase {
}
}
- return appendQueryParams(finalUrl, request.getQueryParams());
+ String url = appendQueryParams(finalUrl, request.getQueryParams());
+
+ log.info("Url Final: {}", url);
+
+ return url;
}
private String appendQueryParams(String url, Map queryParams) {
@@ -145,12 +262,13 @@ public class HttpClientService implements HttpClientUseCase {
return urlBuilder.toString();
}
- private Response buildRequest(
- Invocation.Builder builder,
- HttpRequest request
- ) {
+ private Response buildRequest(Invocation.Builder builder, HttpRequest request) {
log.info("Metodo HTTP: {}", request.getMethod().name());
+ if(request.getBody() != null) {
+ log.info("Cuerpo de la Peticion: {}", request.getBody());
+ }
+
return switch (request.getMethod()) {
case GET -> builder.get();
case POST -> builder.post(Entity.entity(request.getBody(), MediaType.APPLICATION_JSON));
@@ -165,43 +283,26 @@ public class HttpClientService implements HttpClientUseCase {
private Client createClient(int connectTimeout, int readTimeout) {
return ClientBuilder.newBuilder()
- .connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
- .readTimeout(readTimeout, TimeUnit.MILLISECONDS)
- .build();
+ .connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
+ .readTimeout(readTimeout, TimeUnit.MILLISECONDS)
+ .build();
}
- private T handleResponse(
- HttpRequest request,
- Response response
- ) {
+ private T handleResponse(HttpRequest request, Response response) {
int statusCode = response.getStatus();
- log.info("Respuesta {} - Status: {}", request.getMethod(), statusCode);
try (response) {
String responseBody = response.readEntity(String.class);
-
- if (request.isLogResponseBody()) {
- log.info("Respuesta Cuerpo: {}", responseBody);
- }
+ logResponse(request, statusCode, responseBody);
if (statusCode >= 200 && statusCode < 300) {
if (request.getResponseType() == Void.class || request.getResponseType() == void.class) {
return null;
}
- T result = responseResult(request, responseBody);
-
- log.debug("Respuesta exitosa {} {}: {}", request.getMethod(), request.getUrl(), result);
-
- return result;
+ return responseResult(request, responseBody);
} else {
- log.error(
- "Error HTTP {} {} - Status: {} - Body: {}",
- request.getMethod(),
- request.getUrl(),
- statusCode,
- responseBody
- );
+ logErrorResponse(request, statusCode, responseBody);
if (isApiResponseFormat(responseBody)) {
ApiResponse> apiResponse = deserializeApiResponse(responseBody, request);
@@ -213,53 +314,72 @@ public class HttpClientService implements HttpClientUseCase {
} catch (HttpStatusCodeException | HttpApiResponseException e) {
throw e;
} catch (Exception e) {
- log.error(
- "Error procesando respuesta {} {}: {}",
- request.getMethod(),
- request.getUrl(),
- e.getMessage()
- );
- throw HttpStatusCodeException.internalServer(
- "500", "Error procesando respuesta del servicio externo: " + e.getMessage()
- );
+ throw handleProcessingError(request, e);
}
}
- private T responseResult(
- HttpRequest request,
- String responseBody
- ) throws JsonProcessingException {
+ private void logResponse(HttpRequest request, int statusCode, String responseBody) {
+ if (request.isLogResponseBody()) {
+ log.info("Respuesta {} - Status: {}", request.getMethod(), statusCode);
+ log.info("Respuesta Cuerpo: {}", responseBody);
+ }
+ }
+
+ private void logErrorResponse(HttpRequest request, int statusCode, String responseBody) {
+ log.error(
+ "Error HTTP {} {} - Status: {} - Body: {}",
+ request.getMethod(),
+ request.getUrl(),
+ statusCode,
+ responseBody
+ );
+ }
+
+ private HttpStatusCodeException handleConnectionError(HttpRequest request, Exception e) {
+ log.error("Error de conexion {}: {}", request.getMethod(), e.getMessage());
+
+ return HttpStatusCodeException.serviceUnavailable(
+ "503", "Error de conexion con el servicio externo: " + e.getMessage()
+ );
+ }
+
+ private HttpStatusCodeException handleProcessingError(HttpRequest request, Exception e) {
+ log.error(
+ "Error procesando respuesta {} {}: {}",
+ request.getMethod(),
+ request.getUrl(),
+ e.getMessage()
+ );
+ return HttpStatusCodeException.internalServer(
+ "500", "Error procesando respuesta del servicio externo: " + e.getMessage()
+ );
+ }
+
+ private T responseResult(HttpRequest request, String responseBody) throws JsonProcessingException {
if (request.isApiPrivateResponse() && request.isEitherResponse()) {
return handleApiPrivateResponseWithEither(request, responseBody);
}
- T result;
-
if (request.getResponseType() == ApiResponse.class) {
- result = deserializeApiResponse(responseBody, request);
+ return deserializeApiResponse(responseBody, request);
} else if (request.getComplexType() != null) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(
request.getResponseType(), objectMapper.getTypeFactory().constructType(request.getComplexType())
);
- result = objectMapper.readValue(responseBody, javaType);
+ return objectMapper.readValue(responseBody, javaType);
} else if (request.getGenericType() != null) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(
request.getResponseType(), objectMapper.getTypeFactory().constructType(request.getGenericType())
);
- result = objectMapper.readValue(responseBody, javaType);
+ return objectMapper.readValue(responseBody, javaType);
} else {
- result = objectMapper.readValue(
+ return objectMapper.readValue(
responseBody, objectMapper.getTypeFactory().constructType(request.getResponseType())
);
}
-
- return result;
}
- private T handleApiPrivateResponseWithEither(
- HttpRequest request,
- String responseBody
- ) throws JsonProcessingException {
+ private T handleApiPrivateResponseWithEither(HttpRequest request, String responseBody) throws JsonProcessingException {
JsonNode rootNode = objectMapper.readTree(responseBody);
String status = rootNode.has("estatus") ? rootNode.get("estatus").asText() : null;
String message = rootNode.has("mensaje") ? rootNode.get("mensaje").asText() : null;
@@ -273,12 +393,7 @@ public class HttpClientService implements HttpClientUseCase {
}
@SuppressWarnings("unchecked")
- private T handleSuccessResponse(
- HttpRequest request,
- String status,
- String message,
- JsonNode detailNode
- ) {
+ private T handleSuccessResponse(HttpRequest request, String status, String message, JsonNode detailNode) {
Object successData;
if (request.isListResponse()) {
@@ -300,10 +415,7 @@ public class HttpClientService implements HttpClientUseCase {
}
}
- private Object handleListSuccess(
- HttpRequest request,
- JsonNode detailNode
- ) {
+ private Object handleListSuccess(HttpRequest request, JsonNode detailNode) {
Class> elementType = getElementTypeFromRequest(request);
JavaType listType = objectMapper.getTypeFactory().constructCollectionType(List.class, elementType);
@@ -314,10 +426,7 @@ public class HttpClientService implements HttpClientUseCase {
return List.of();
}
- private Object handleObjectSuccess(
- HttpRequest request,
- JsonNode detailNode
- ) {
+ private Object handleObjectSuccess(HttpRequest request, JsonNode detailNode) {
Class> elementType = getElementTypeFromRequest(request);
if (detailNode != null && !detailNode.isNull()) {
@@ -328,11 +437,7 @@ public class HttpClientService implements HttpClientUseCase {
}
@SuppressWarnings("unchecked")
- private T handleErrorResponse(
- String status,
- String message,
- JsonNode detailNode
- ) {
+ private T handleErrorResponse(String status, String message, JsonNode detailNode) {
ApiPrivateError error = buildApiPrivateError(detailNode, message);
ApiPrivateResponse> response = new ApiPrivateResponse<>();
@@ -343,10 +448,7 @@ public class HttpClientService implements HttpClientUseCase {
return (T) response;
}
- private ApiPrivateError buildApiPrivateError(
- JsonNode detailNode,
- String message
- ) {
+ private ApiPrivateError buildApiPrivateError(JsonNode detailNode, String message) {
if (detailNode != null && !detailNode.isNull()) {
try {
return objectMapper.convertValue(detailNode, ApiPrivateError.class);
@@ -390,15 +492,11 @@ public class HttpClientService implements HttpClientUseCase {
}
@SuppressWarnings("unchecked")
- private T deserializeApiResponse(
- String responseBody,
- HttpRequest request
- ) {
+ private T deserializeApiResponse(String responseBody, HttpRequest request) {
try {
if (request.getGenericType() != null) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(
- ApiResponse.class,
- objectMapper.getTypeFactory().constructType(request.getGenericType())
+ ApiResponse.class, objectMapper.getTypeFactory().constructType(request.getGenericType())
);
return objectMapper.readValue(responseBody, javaType);
} else {
@@ -432,10 +530,7 @@ public class HttpClientService implements HttpClientUseCase {
}
}
- private HttpStatusCodeException mapHttpStatusToException(
- int statusCode,
- String errorBody
- ) {
+ private HttpStatusCodeException mapHttpStatusToException(int statusCode, String errorBody) {
String errorCode = "HTTP_" + statusCode;
String defaultMessage = "Error en servicio externo: HTTP " + statusCode;
String message = errorBody != null && !errorBody.isEmpty()
diff --git a/src/main/java/com/banesco/common/application/usecase/HttpClientUseCase.java b/src/main/java/com/banesco/common/application/usecase/HttpClientUseCase.java
index c7a0b7b..b55922c 100644
--- a/src/main/java/com/banesco/common/application/usecase/HttpClientUseCase.java
+++ b/src/main/java/com/banesco/common/application/usecase/HttpClientUseCase.java
@@ -8,6 +8,10 @@ public interface HttpClientUseCase {
T execute(HttpRequest request);
+ Either executeEither(HttpRequest request);
+
+ Either, R> executeEitherList(HttpRequest request);
+
ApiResponse executeApiResponse(HttpRequest request);
ApiResponse> executeApiResponseList(HttpRequest request);
diff --git a/src/main/java/com/banesco/common/domain/exception/BusinessException.java b/src/main/java/com/banesco/common/domain/exception/BusinessException.java
deleted file mode 100644
index 6d44727..0000000
--- a/src/main/java/com/banesco/common/domain/exception/BusinessException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.banesco.common.domain.exception;
-
-public class BusinessException extends BaseApiException {
- public BusinessException(String errorCode, String message, String fieldPath) {
- super(errorCode, message, fieldPath, "business");
- }
-
- public BusinessException(String errorCode, String fieldPath) {
- super(errorCode, fieldPath, "business");
- }
-}
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..57c88d3 100644
--- a/src/main/java/com/banesco/common/domain/model/HttpRequest.java
+++ b/src/main/java/com/banesco/common/domain/model/HttpRequest.java
@@ -143,6 +143,20 @@ public class HttpRequest {
.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,
diff --git a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java
index 9e8bca8..3f63719 100644
--- a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java
+++ b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java
@@ -1,6 +1,8 @@
package com.banesco.common.infrastructure.config;
import com.banesco.common.domain.model.DomainConfig;
+import com.banesco.module.black_list.domain.model.BlackListConfig;
+import com.banesco.module.get_affiliation.domain.model.GetAffiliationConfig;
import com.banesco.module.security_trace.domain.model.SecurityTraceConfig;
import com.banesco.module.service_status.domain.model.ServiceStatusConfig;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -26,6 +28,8 @@ public class RestClientConfig {
private static final String API_DOMAIN_NAME = "dom-payment-initiation-request";
private static final String API_SECURITY_TRACE_NAME = "security-trace";
private static final String API_SERVICE_STATUS_NAME = "service-status";
+ private static final String API_BLACK_LIST_NAME = "black-list";
+ private static final String API_GET_AFFILIATION_NAME = "get-affiliation";
@Inject
public RestClientConfig(
@@ -36,7 +40,7 @@ public class RestClientConfig {
this.objectMapper = objectMapper;
}
- public DomainConfig getDomDocserviceFileConfig() {
+ public DomainConfig getDomPaymentRequestConfig() {
return getConfig(API_DOMAIN_NAME, DomainConfig.class);
}
@@ -48,6 +52,14 @@ public class RestClientConfig {
return getConfig(API_SERVICE_STATUS_NAME, ServiceStatusConfig.class);
}
+ public BlackListConfig getBlackListConfig() {
+ return getConfig(API_BLACK_LIST_NAME, BlackListConfig.class);
+ }
+
+ public GetAffiliationConfig getGetAffiliationConfig() {
+ return getConfig(API_GET_AFFILIATION_NAME, GetAffiliationConfig.class);
+ }
+
private T getConfig(
String configName,
Class configType
diff --git a/src/main/java/com/banesco/module/black_list/application/usecase/BlackListUseCase.java b/src/main/java/com/banesco/module/black_list/application/usecase/BlackListUseCase.java
new file mode 100644
index 0000000..1393582
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/application/usecase/BlackListUseCase.java
@@ -0,0 +1,12 @@
+package com.banesco.module.black_list.application.usecase;
+
+import com.banesco.common.domain.model.Either;
+import com.banesco.module.payment_initiation_request.domain.dto.request.PaymentInitiationRequestRequest;
+
+public interface BlackListUseCase {
+ Either execute(
+ PaymentInitiationRequestRequest apiRequest,
+ Class responseType,
+ Class errorType
+ );
+}
diff --git a/src/main/java/com/banesco/module/black_list/domain/dto/request/BlackListRequest.java b/src/main/java/com/banesco/module/black_list/domain/dto/request/BlackListRequest.java
new file mode 100644
index 0000000..5662b5f
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/dto/request/BlackListRequest.java
@@ -0,0 +1,22 @@
+package com.banesco.module.black_list.domain.dto.request;
+
+import com.banesco.module.black_list.domain.model.Customer;
+import com.banesco.module.msg_request_header.domain.model.MsgRqHdr;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class BlackListRequest {
+ private MsgRqHdr msgRqHdr;
+ private Customer customer;
+ private String domain;
+ private String requestId;
+ private String appId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/black_list/domain/dto/response/BlackListResponse.java b/src/main/java/com/banesco/module/black_list/domain/dto/response/BlackListResponse.java
new file mode 100644
index 0000000..0847abe
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/dto/response/BlackListResponse.java
@@ -0,0 +1,22 @@
+package com.banesco.module.black_list.domain.dto.response;
+
+import com.banesco.module.msg_response_header.domain.model.BlackList;
+import com.banesco.module.msg_response_header.domain.model.MsgRsHdr;
+import com.banesco.module.msg_response_header.domain.model.Status;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class BlackListResponse {
+ private MsgRsHdr msgRsHdr;
+ private Status status;
+ private BlackList blackList;
+ private String httpStatus;
+ private String blackListBanesco;
+ private String blackListCbn;
+}
diff --git a/src/main/java/com/banesco/module/black_list/domain/model/BlackListConfig.java b/src/main/java/com/banesco/module/black_list/domain/model/BlackListConfig.java
new file mode 100644
index 0000000..919cf15
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/model/BlackListConfig.java
@@ -0,0 +1,16 @@
+package com.banesco.module.black_list.domain.model;
+
+import com.banesco.common.domain.model.TimeoutConfig;
+import com.banesco.module.black_list.domain.dto.request.BlackListRequest;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.Getter;
+import lombok.ToString;
+
+@Getter
+@ToString
+@RegisterForReflection
+public class BlackListConfig {
+ private String url;
+ private TimeoutConfig timeout;
+ private BlackListRequest request;
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/black_list/domain/model/Customer.java b/src/main/java/com/banesco/module/black_list/domain/model/Customer.java
new file mode 100644
index 0000000..938b795
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/model/Customer.java
@@ -0,0 +1,14 @@
+package com.banesco.module.black_list.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Customer {
+ private PersonInfo personInfo;
+}
diff --git a/src/main/java/com/banesco/module/black_list/domain/model/OtherIdentDoc.java b/src/main/java/com/banesco/module/black_list/domain/model/OtherIdentDoc.java
new file mode 100644
index 0000000..6fedd84
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/model/OtherIdentDoc.java
@@ -0,0 +1,14 @@
+package com.banesco.module.black_list.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class OtherIdentDoc {
+ private String identSerialNum;
+}
diff --git a/src/main/java/com/banesco/module/black_list/domain/model/PersonInfo.java b/src/main/java/com/banesco/module/black_list/domain/model/PersonInfo.java
new file mode 100644
index 0000000..ed12035
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/domain/model/PersonInfo.java
@@ -0,0 +1,15 @@
+package com.banesco.module.black_list.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class PersonInfo {
+ private String nationality;
+ private OtherIdentDoc otherIdentDoc;
+}
diff --git a/src/main/java/com/banesco/module/black_list/infrastructure/client/BlackListClient.java b/src/main/java/com/banesco/module/black_list/infrastructure/client/BlackListClient.java
new file mode 100644
index 0000000..1689704
--- /dev/null
+++ b/src/main/java/com/banesco/module/black_list/infrastructure/client/BlackListClient.java
@@ -0,0 +1,114 @@
+package com.banesco.module.black_list.infrastructure.client;
+
+import com.banesco.common.application.usecase.HttpClientUseCase;
+import com.banesco.common.domain.exception.HttpStatusCodeException;
+import com.banesco.common.domain.model.Either;
+import com.banesco.common.domain.model.HttpRequest;
+import com.banesco.common.infrastructure.config.RestClientConfig;
+import com.banesco.module.black_list.application.usecase.BlackListUseCase;
+import com.banesco.module.black_list.domain.dto.request.BlackListRequest;
+import com.banesco.module.black_list.domain.model.BlackListConfig;
+import com.banesco.module.black_list.domain.model.Customer;
+import com.banesco.module.black_list.domain.model.OtherIdentDoc;
+import com.banesco.module.black_list.domain.model.PersonInfo;
+import com.banesco.module.msg_request_header.domain.model.MsgRqHdr;
+import com.banesco.module.payment_initiation_request.domain.dto.request.PaymentInitiationRequestRequest;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@ApplicationScoped
+public class BlackListClient implements BlackListUseCase {
+ private final HttpClientUseCase httpClientUseCase;
+ private final BlackListConfig blackListConfig;
+
+ @Inject
+ public BlackListClient(
+ HttpClientUseCase httpClientUseCase,
+ RestClientConfig restClientConfig
+ ) {
+ this.httpClientUseCase = httpClientUseCase;
+ this.blackListConfig = restClientConfig.getBlackListConfig();
+ log.info("Configuracion cargada para security-trace: {}", blackListConfig);
+ }
+
+ @Override
+ public Either execute(
+ PaymentInitiationRequestRequest apiRequest,
+ Class responseType,
+ Class errorType
+ ) {
+ BlackListRequest body = getRequest(apiRequest);
+ HttpRequest request = HttpRequest.forDirectResponse(
+ blackListConfig.getUrl(),
+ HttpRequest.HttpMethod.POST,
+ responseType,
+ errorType
+ )
+ .withBody(body)
+ .withTimeout(
+ blackListConfig.getTimeout().getConnect(),
+ blackListConfig.getTimeout().getResponse()
+ );
+
+ try {
+ Either response = httpClientUseCase.executeEither(request);
+
+ log.info(
+ "Solicitud de lista negra exitosa: {}",
+ response.isLeft() && response.getLeft().toString().contains("msgRsHdr=")
+ );
+
+ return response;
+ } catch (HttpStatusCodeException e) {
+ log.error(
+ "Error HTTP ejecutando lista negra: {} - {}",
+ e.getStatusCode(),
+ e.getMessage()
+ );
+
+ throw e;
+ } catch (Exception e) {
+ log.error("Error ejecutando lista negra: {}", e.getMessage());
+ throw HttpStatusCodeException.serviceUnavailable("503");
+ }
+ }
+
+ private BlackListRequest getRequest(
+ PaymentInitiationRequestRequest apiRequest
+ ) {
+ String payeeId = apiRequest.getPayeeId();
+ MsgRqHdr msgRqHdr = blackListConfig
+ .getRequest()
+ .getMsgRqHdr()
+ .withOptions(apiRequest.getDevice());
+
+ return BlackListRequest.builder()
+ .msgRqHdr(msgRqHdr)
+ .customer(Customer.builder()
+ .personInfo(PersonInfo.builder()
+ .nationality(payeeId.substring(0, 1).toUpperCase())
+ .otherIdentDoc(OtherIdentDoc.builder()
+ .identSerialNum(getPartyIdNumber(payeeId.substring(1)))
+ .build())
+ .build())
+ .build())
+ .domain(blackListConfig.getRequest().getDomain())
+ .build();
+ }
+
+ private String getPartyIdNumber(String partyId) {
+ if (partyId == null || partyId.trim().isEmpty()) {
+ return null;
+ }
+
+ String digits = partyId.replaceAll("\\D", "");
+
+ if (digits.isEmpty()) {
+ return null;
+ }
+
+ return digits;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/get_affiliation/application/usecase/GetAffiliationUseCase.java b/src/main/java/com/banesco/module/get_affiliation/application/usecase/GetAffiliationUseCase.java
new file mode 100644
index 0000000..8160096
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/application/usecase/GetAffiliationUseCase.java
@@ -0,0 +1,12 @@
+package com.banesco.module.get_affiliation.application.usecase;
+
+import com.banesco.common.domain.model.Either;
+import com.banesco.module.payment_initiation_request.domain.dto.request.PaymentInitiationRequestRequest;
+
+public interface GetAffiliationUseCase {
+ Either execute(
+ PaymentInitiationRequestRequest apiRequest,
+ Class responseType,
+ Class errorType
+ );
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/dto/request/GetAffiliationRequest.java b/src/main/java/com/banesco/module/get_affiliation/domain/dto/request/GetAffiliationRequest.java
new file mode 100644
index 0000000..0c37298
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/dto/request/GetAffiliationRequest.java
@@ -0,0 +1,26 @@
+package com.banesco.module.get_affiliation.domain.dto.request;
+
+import com.banesco.module.msg_request_header.domain.model.MsgRqHdr;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GetAffiliationRequest {
+ private MsgRqHdr msgRqHdr;
+ private String type;
+ private String identSerialNum;
+ private String phone;
+ private String svcType;
+ private String affilType;
+ private String sourceChannelCode;
+ private String domain;
+ private String requestId;
+ private String appId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/dto/response/GetAffiliationResponse.java b/src/main/java/com/banesco/module/get_affiliation/domain/dto/response/GetAffiliationResponse.java
new file mode 100644
index 0000000..a872c08
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/dto/response/GetAffiliationResponse.java
@@ -0,0 +1,27 @@
+package com.banesco.module.get_affiliation.domain.dto.response;
+
+import com.banesco.module.get_affiliation.domain.model.Account;
+import com.banesco.module.get_affiliation.domain.model.AffiliationSvg;
+import com.banesco.module.get_affiliation.domain.model.Configuration;
+import com.banesco.module.get_affiliation.domain.model.Customer;
+import com.banesco.module.msg_response_header.domain.model.MsgRsHdr;
+import com.banesco.module.msg_response_header.domain.model.Status;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class GetAffiliationResponse {
+ private MsgRsHdr msgRsHdr;
+ private Status status;
+ private List affiliationSvc;
+ private Customer customer;
+ private List account;
+ private List configuration;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/Account.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/Account.java
new file mode 100644
index 0000000..d6c306f
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/Account.java
@@ -0,0 +1,14 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Account {
+ private String acctId;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/AffilStatus.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/AffilStatus.java
new file mode 100644
index 0000000..02e9547
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/AffilStatus.java
@@ -0,0 +1,14 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class AffilStatus {
+ private String affilStatusCode;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/AffiliationSvg.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/AffiliationSvg.java
new file mode 100644
index 0000000..6da73c6
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/AffiliationSvg.java
@@ -0,0 +1,17 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class AffiliationSvg {
+ private String affilType;
+ private String affilDate;
+ private AffilStatus affilStatus;
+ private Service service;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/Configuration.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/Configuration.java
new file mode 100644
index 0000000..a24fec8
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/Configuration.java
@@ -0,0 +1,18 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Configuration {
+ private String confId;
+ private String confType;
+ private List parameter;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/CustInfo.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/CustInfo.java
new file mode 100644
index 0000000..a0fecfd
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/CustInfo.java
@@ -0,0 +1,17 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class CustInfo {
+ private String emailAddr;
+ private List phoneNum;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/Customer.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/Customer.java
new file mode 100644
index 0000000..fa62709
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/Customer.java
@@ -0,0 +1,17 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Customer {
+ private List personInfo;
+ private CustInfo custInfo;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/GetAffiliationConfig.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/GetAffiliationConfig.java
new file mode 100644
index 0000000..316791a
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/GetAffiliationConfig.java
@@ -0,0 +1,16 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import com.banesco.common.domain.model.TimeoutConfig;
+import com.banesco.module.get_affiliation.domain.dto.request.GetAffiliationRequest;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.Getter;
+import lombok.ToString;
+
+@Getter
+@ToString
+@RegisterForReflection
+public class GetAffiliationConfig {
+ private String url;
+ private TimeoutConfig timeout;
+ private GetAffiliationRequest request;
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/OtherIdentDoc.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/OtherIdentDoc.java
new file mode 100644
index 0000000..e45050f
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/OtherIdentDoc.java
@@ -0,0 +1,15 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class OtherIdentDoc {
+ private String identSerialNum;
+ private String type;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/ParamValue.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/ParamValue.java
new file mode 100644
index 0000000..da510ac
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/ParamValue.java
@@ -0,0 +1,14 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class ParamValue {
+ private String value;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/Parameter.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/Parameter.java
new file mode 100644
index 0000000..cbc612a
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/Parameter.java
@@ -0,0 +1,15 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Parameter {
+ private String paramName;
+ private ParamValue paramValue;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/PersonInfo.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/PersonInfo.java
new file mode 100644
index 0000000..4d8c015
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/PersonInfo.java
@@ -0,0 +1,16 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class PersonInfo {
+ private List otherIdentDoc;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/PhoneNum.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/PhoneNum.java
new file mode 100644
index 0000000..35bb44a
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/PhoneNum.java
@@ -0,0 +1,14 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class PhoneNum {
+ private String phone;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/domain/model/Service.java b/src/main/java/com/banesco/module/get_affiliation/domain/model/Service.java
new file mode 100644
index 0000000..312324b
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/domain/model/Service.java
@@ -0,0 +1,14 @@
+package com.banesco.module.get_affiliation.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Service {
+ private String svcType;
+}
diff --git a/src/main/java/com/banesco/module/get_affiliation/infrastructure/client/GetAffiliationClient.java b/src/main/java/com/banesco/module/get_affiliation/infrastructure/client/GetAffiliationClient.java
new file mode 100644
index 0000000..00cb2b2
--- /dev/null
+++ b/src/main/java/com/banesco/module/get_affiliation/infrastructure/client/GetAffiliationClient.java
@@ -0,0 +1,109 @@
+package com.banesco.module.get_affiliation.infrastructure.client;
+
+import com.banesco.common.application.usecase.HttpClientUseCase;
+import com.banesco.common.domain.exception.HttpStatusCodeException;
+import com.banesco.common.domain.model.Either;
+import com.banesco.common.domain.model.HttpRequest;
+import com.banesco.common.infrastructure.config.RestClientConfig;
+import com.banesco.module.get_affiliation.application.usecase.GetAffiliationUseCase;
+import com.banesco.module.get_affiliation.domain.dto.request.GetAffiliationRequest;
+import com.banesco.module.get_affiliation.domain.model.GetAffiliationConfig;
+import com.banesco.module.msg_request_header.domain.model.MsgRqHdr;
+import com.banesco.module.payment_initiation_request.domain.dto.request.PaymentInitiationRequestRequest;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@ApplicationScoped
+public class GetAffiliationClient implements GetAffiliationUseCase {
+ private final HttpClientUseCase httpClientUseCase;
+ private final GetAffiliationConfig getAffiliationConfig;
+
+ @Inject
+ public GetAffiliationClient(
+ HttpClientUseCase httpClientUseCase,
+ RestClientConfig restClientConfig
+ ) {
+ this.httpClientUseCase = httpClientUseCase;
+ this.getAffiliationConfig = restClientConfig.getGetAffiliationConfig();
+ log.info("Configuracion cargada para security-trace: {}", getAffiliationConfig);
+ }
+
+ @Override
+ public Either execute(
+ PaymentInitiationRequestRequest apiRequest,
+ Class responseType,
+ Class errorType
+ ) {
+ GetAffiliationRequest body = getRequest(apiRequest);
+ HttpRequest request = HttpRequest.forDirectResponse(
+ getAffiliationConfig.getUrl(),
+ HttpRequest.HttpMethod.POST,
+ responseType,
+ errorType
+ )
+ .withBody(body)
+ .withTimeout(
+ getAffiliationConfig.getTimeout().getConnect(),
+ getAffiliationConfig.getTimeout().getResponse()
+ );
+
+ try {
+ Either response = httpClientUseCase.executeEither(request);
+
+ log.info(
+ "Solicitud de consulta de afiliacion exitosa: {}",
+ response.isLeft() && response.getLeft().toString().contains("msgRsHdr=")
+ );
+
+ return response;
+ } catch (HttpStatusCodeException e) {
+ log.error(
+ "Error HTTP ejecutando consulta de afiliacion: {} - {}",
+ e.getStatusCode(),
+ e.getMessage()
+ );
+
+ throw e;
+ } catch (Exception e) {
+ log.error("Error ejecutando consulta de afiliacion: {}", e.getMessage());
+ throw HttpStatusCodeException.serviceUnavailable("503");
+ }
+ }
+
+ private GetAffiliationRequest getRequest(
+ PaymentInitiationRequestRequest apiRequest
+ ) {
+ String payeeId = apiRequest.getPayeeId();
+ MsgRqHdr msgRqHdr = getAffiliationConfig
+ .getRequest()
+ .getMsgRqHdr()
+ .withOptions(apiRequest.getDevice());
+
+ return GetAffiliationRequest.builder()
+ .msgRqHdr(msgRqHdr)
+ .type(payeeId.substring(0, 1).toUpperCase())
+ .identSerialNum(getPartyIdNumber(payeeId.substring(1)))
+ .phone(getAffiliationConfig.getRequest().getPhone())
+ .svcType(getAffiliationConfig.getRequest().getSvcType())
+ .affilType(getAffiliationConfig.getRequest().getAffilType())
+ .sourceChannelCode(getAffiliationConfig.getRequest().getSourceChannelCode())
+ .domain(getAffiliationConfig.getRequest().getDomain())
+ .build();
+ }
+
+ private String getPartyIdNumber(String partyId) {
+ if (partyId == null || partyId.trim().isEmpty()) {
+ return null;
+ }
+
+ String digits = partyId.replaceAll("\\D", "");
+
+ if (digits.isEmpty()) {
+ return null;
+ }
+
+ return digits;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/msg_request_header/domain/model/ApplicantData.java b/src/main/java/com/banesco/module/msg_request_header/domain/model/ApplicantData.java
new file mode 100644
index 0000000..ab0ef10
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_request_header/domain/model/ApplicantData.java
@@ -0,0 +1,32 @@
+package com.banesco.module.msg_request_header.domain.model;
+
+import com.banesco.common.domain.model.Device;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class ApplicantData {
+ private String enterpriseCode;
+ private String privateChannelId;
+ private String ipAddress;
+ private String hostName;
+ private String stadisticId;
+ private String application;
+ private String nationality;
+ private String idDocument;
+ private String rolType;
+ private String planCode;
+ private String channel;
+
+ @JsonIgnore
+ public ApplicantData withOptions(Device device) {
+ this.ipAddress = device.getDeviceIp();
+ return this;
+ }
+}
diff --git a/src/main/java/com/banesco/module/msg_request_header/domain/model/MsgRqHdr.java b/src/main/java/com/banesco/module/msg_request_header/domain/model/MsgRqHdr.java
new file mode 100644
index 0000000..5e70319
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_request_header/domain/model/MsgRqHdr.java
@@ -0,0 +1,67 @@
+package com.banesco.module.msg_request_header.domain.model;
+
+import com.banesco.common.domain.model.Device;
+import com.banesco.common.infrastructure.context.RequestContext;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class MsgRqHdr {
+ private String messageDate;
+ private String messageTime;
+ private String requestId;
+ private String lastStatusRequest;
+ private String finalStatusRequest;
+ private String resumeId;
+ private String reverseId;
+ private String lineId;
+ private String sourceChannelCode;
+ private String supervisorCode;
+ private String operatorCode;
+ private String requestedOperationType;
+ private List networkTrnInfo;
+ private ApplicantData applicantData;
+ private RecCtrlIn recCtrlIn;
+ private String returnValue;
+ private String messageId;
+ private String priority;
+ private VbProtocol vbProtocol;
+
+ private static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+ @JsonIgnore
+ public MsgRqHdr withOptions(Device device) {
+ if(Objects.isNull(this.getApplicantData())) {
+ this.applicantData = ApplicantData.builder()
+ .ipAddress(device.getDeviceIp())
+ .build();
+ } else {
+ this.applicantData = this.applicantData.withOptions(device);
+ }
+
+ String[] dateTime = LocalDateTime.now().format(dateTimeFormatter).split(" ");
+ String date = dateTime[0];
+ String time = dateTime[1];
+
+ this.requestId = RequestContext.getRequestId();
+ this.messageDate = date;
+ this.messageTime = time;
+
+ this.networkTrnInfo = this.networkTrnInfo.stream()
+ .map(info -> (!Objects.isNull(info)) ? info.withOptions(date, time) : null)
+ .toList();
+
+ return this;
+ }
+}
diff --git a/src/main/java/com/banesco/module/msg_request_header/domain/model/NetworkTrnInfo.java b/src/main/java/com/banesco/module/msg_request_header/domain/model/NetworkTrnInfo.java
new file mode 100644
index 0000000..ef69b90
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_request_header/domain/model/NetworkTrnInfo.java
@@ -0,0 +1,41 @@
+package com.banesco.module.msg_request_header.domain.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class NetworkTrnInfo {
+ private String transactionConsecutive;
+ private String registerNumber;
+ private String originatorName;
+ private String operationType;
+ private String transactionType;
+ private String transactionCode;
+ private String transactionDate;
+ private String transactionTime;
+ private String bankId;
+ private String agencyCode;
+ private String channelId;
+ private String channelUserId;
+ private String operationExecIndicator;
+ private String configuredTransactionCode;
+ private String desc;
+ private String userId;
+ private String userType;
+
+ @JsonIgnore
+ public NetworkTrnInfo withOptions(
+ String date,
+ String time
+ ) {
+ this.transactionDate = date;
+ this.transactionTime = time;
+ return this;
+ }
+}
diff --git a/src/main/java/com/banesco/module/msg_request_header/domain/model/RecCtrlIn.java b/src/main/java/com/banesco/module/msg_request_header/domain/model/RecCtrlIn.java
new file mode 100644
index 0000000..fb73a1d
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_request_header/domain/model/RecCtrlIn.java
@@ -0,0 +1,14 @@
+package com.banesco.module.msg_request_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class RecCtrlIn {
+ private String maxRec;
+}
diff --git a/src/main/java/com/banesco/module/msg_request_header/domain/model/VbProtocol.java b/src/main/java/com/banesco/module/msg_request_header/domain/model/VbProtocol.java
new file mode 100644
index 0000000..1ce4a61
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_request_header/domain/model/VbProtocol.java
@@ -0,0 +1,15 @@
+package com.banesco.module.msg_request_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class VbProtocol {
+ private Boolean vbProtocolInd;
+ private Boolean transactionInd;
+}
diff --git a/src/main/java/com/banesco/module/msg_response_header/domain/model/AdditionalStatus.java b/src/main/java/com/banesco/module/msg_response_header/domain/model/AdditionalStatus.java
new file mode 100644
index 0000000..acc520d
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_response_header/domain/model/AdditionalStatus.java
@@ -0,0 +1,19 @@
+package com.banesco.module.msg_response_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class AdditionalStatus {
+ private String statusType;
+ private String statusCode;
+ private String statusDesc;
+ private String validationType;
+ private String severity;
+ private String lineNumber;
+}
diff --git a/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackList.java b/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackList.java
new file mode 100644
index 0000000..ca30d25
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackList.java
@@ -0,0 +1,18 @@
+package com.banesco.module.msg_response_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class BlackList {
+ private BlackListRec blackListRec;
+}
\ No newline at end of file
diff --git a/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackListRec.java b/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackListRec.java
new file mode 100644
index 0000000..0ffb289
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_response_header/domain/model/BlackListRec.java
@@ -0,0 +1,19 @@
+package com.banesco.module.msg_response_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class BlackListRec {
+ private String blackListBanesco;
+ private String blackListCbn;
+}
diff --git a/src/main/java/com/banesco/module/msg_response_header/domain/model/MsgRsHdr.java b/src/main/java/com/banesco/module/msg_response_header/domain/model/MsgRsHdr.java
new file mode 100644
index 0000000..ec54d23
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_response_header/domain/model/MsgRsHdr.java
@@ -0,0 +1,38 @@
+package com.banesco.module.msg_response_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class MsgRsHdr {
+ private String privateChannelId;
+ private String finalStatusRequest;
+ private String countDataOut;
+ private String headerTypeReg;
+ private String detailTypeReg;
+ private String transactionCode;
+ private String supervisorCode;
+ private String operationType;
+ private String transactionConsecutive;
+ private String detailReg;
+ private List registerNumber;
+ private String transactionType;
+ private String requestId;
+ private String requestedOperationType;
+ private String messageDate;
+ private String transactionTime;
+ private String lastStatusRequest;
+ private String returnValue;
+ private String requestStatus;
+ private String messageTime;
+ private String transacctionDate;
+ private String requestNumber;
+ private String appName;
+}
diff --git a/src/main/java/com/banesco/module/msg_response_header/domain/model/Status.java b/src/main/java/com/banesco/module/msg_response_header/domain/model/Status.java
new file mode 100644
index 0000000..6ab6ba7
--- /dev/null
+++ b/src/main/java/com/banesco/module/msg_response_header/domain/model/Status.java
@@ -0,0 +1,24 @@
+package com.banesco.module.msg_response_header.domain.model;
+
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RegisterForReflection
+public class Status {
+ private String statusType;
+ private String statusCode;
+ private String statusDesc;
+ private String applicationName;
+ private int lineNumber;
+ private List additionalStatus;
+ private String severity;
+ private String statusInd;
+ private String logId;
+}
diff --git a/src/main/java/com/banesco/module/payment_initiation_request/application/service/PaymentInitiationRequestService.java b/src/main/java/com/banesco/module/payment_initiation_request/application/service/PaymentInitiationRequestService.java
index 4ef2d3f..12febad 100644
--- a/src/main/java/com/banesco/module/payment_initiation_request/application/service/PaymentInitiationRequestService.java
+++ b/src/main/java/com/banesco/module/payment_initiation_request/application/service/PaymentInitiationRequestService.java
@@ -1,9 +1,15 @@
package com.banesco.module.payment_initiation_request.application.service;
import com.banesco.common.application.helper.MessageHelper;
+import com.banesco.common.application.helper.PartyValidateHelper;
import com.banesco.common.domain.exception.HttpStatusCodeException;
import com.banesco.common.domain.model.ApiResponse;
+import com.banesco.common.domain.model.Either;
import com.banesco.common.infrastructure.context.RequestContext;
+import com.banesco.module.black_list.application.usecase.BlackListUseCase;
+import com.banesco.module.black_list.domain.dto.response.BlackListResponse;
+import com.banesco.module.get_affiliation.application.usecase.GetAffiliationUseCase;
+import com.banesco.module.get_affiliation.domain.dto.response.GetAffiliationResponse;
import com.banesco.module.payment_initiation_request.application.usecase.DomainUseCase;
import com.banesco.module.payment_initiation_request.application.usecase.PaymentInitiationRequestUseCase;
import com.banesco.module.payment_initiation_request.domain.dto.request.PaymentInitiationRequestRequest;
@@ -26,6 +32,8 @@ public class PaymentInitiationRequestService implements PaymentInitiationRequest
private final MessageHelper messageHelper;
private final ServiceStatusUseCase serviceStatusUseCase;
+ private final BlackListUseCase blackListUseCase;
+ private final GetAffiliationUseCase getAffiliationUseCase;
private final SecurityTraceUseCase securityTraceUseCase;
private final DomainUseCase domainUseCase;
@@ -33,11 +41,15 @@ public class PaymentInitiationRequestService implements PaymentInitiationRequest
public PaymentInitiationRequestService(
MessageHelper messageHelper,
ServiceStatusUseCase serviceStatusUseCase,
+ BlackListUseCase blackListUseCase,
+ GetAffiliationUseCase getAffiliationUseCase,
SecurityTraceUseCase securityTraceUseCase,
DomainUseCase domainUseCase
) {
this.messageHelper = messageHelper;
this.serviceStatusUseCase = serviceStatusUseCase;
+ this.blackListUseCase = blackListUseCase;
+ this.getAffiliationUseCase = getAffiliationUseCase;
this.securityTraceUseCase = securityTraceUseCase;
this.domainUseCase = domainUseCase;
}
@@ -57,6 +69,9 @@ public class PaymentInitiationRequestService implements PaymentInitiationRequest
throw HttpStatusCodeException.serviceUnavailable("VRN04");
}
+ blackList(request);
+ getAffiliation(request);
+
ApiResponse apiResponse = domain(request);
response = messageHelper.handleSuccess(
@@ -117,6 +132,69 @@ public class PaymentInitiationRequestService implements PaymentInitiationRequest
return isServiceActive;
}
+ private void blackList(
+ PaymentInitiationRequestRequest request
+ ) {
+ log.info("Ejecutando llamada al api de la consulta de la lista negra");
+
+ try {
+ Either responseEither = blackListUseCase.execute(
+ request, BlackListResponse.class, BlackListResponse.class
+ );
+ BlackListResponse response = (responseEither.isLeft())
+ ? responseEither.getLeft()
+ : responseEither.getRight();
+
+ PartyValidateHelper.validateBlackListStatus(
+ response.getBlackList(),
+ response.getStatus()
+ );
+ } catch (HttpStatusCodeException e) {
+ log.info(
+ "Error HTTP al ejecutar la consulta de la lista negra: {} -> {}",
+ e.getStatusCode(),
+ e.getMessage()
+ );
+ throw e;
+ } catch (Exception e) {
+ log.info(
+ "Error al ejecutar la consulta de la lista negra: {}",
+ e.getMessage()
+ );
+ throw e;
+ }
+ }
+
+ private void getAffiliation(
+ PaymentInitiationRequestRequest request
+ ) {
+ log.info("Ejecutando llamada al api de la consulta de afiliacion");
+
+ try {
+ Either responseEither = getAffiliationUseCase.execute(
+ request, GetAffiliationResponse.class, GetAffiliationResponse.class
+ );
+ GetAffiliationResponse response = (responseEither.isLeft())
+ ? responseEither.getLeft()
+ : responseEither.getRight();
+
+ PartyValidateHelper.validateStatus(response.getStatus());
+ } catch (HttpStatusCodeException e) {
+ log.info(
+ "Error HTTP al ejecutar la consulta de afiliacion: {} -> {}",
+ e.getStatusCode(),
+ e.getMessage()
+ );
+ throw e;
+ } catch (Exception e) {
+ log.info(
+ "Error al ejecutar la consulta de afiliacion: {}",
+ e.getMessage()
+ );
+ throw e;
+ }
+ }
+
private void securityTrace(
PaymentInitiationRequestRequest request,
Response response,
diff --git a/src/main/java/com/banesco/module/payment_initiation_request/domain/dto/response/PaymentInitiationRequestResponse.java b/src/main/java/com/banesco/module/payment_initiation_request/domain/dto/response/PaymentInitiationRequestResponse.java
index ae22c0b..f31c6e5 100644
--- a/src/main/java/com/banesco/module/payment_initiation_request/domain/dto/response/PaymentInitiationRequestResponse.java
+++ b/src/main/java/com/banesco/module/payment_initiation_request/domain/dto/response/PaymentInitiationRequestResponse.java
@@ -11,8 +11,8 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema;
@NoArgsConstructor
@AllArgsConstructor
@RegisterForReflection
-@Schema(description = "Respuesta de la notificación del cliente")
+@Schema(description = "Respuesta de la solicitud de pago del cliente")
public class PaymentInitiationRequestResponse {
- @Schema(description = "Instancia de la notificación del cliente")
+ @Schema(description = "Instancia de la solicitud de pago del cliente")
private PaymentInitiationTransaction paymentInitiationTransaction;
}
diff --git a/src/main/java/com/banesco/module/payment_initiation_request/domain/model/PaymentInitiationTransactionInstanceRecord.java b/src/main/java/com/banesco/module/payment_initiation_request/domain/model/PaymentInitiationTransactionInstanceRecord.java
index 31677f1..4ce3268 100644
--- a/src/main/java/com/banesco/module/payment_initiation_request/domain/model/PaymentInitiationTransactionInstanceRecord.java
+++ b/src/main/java/com/banesco/module/payment_initiation_request/domain/model/PaymentInitiationTransactionInstanceRecord.java
@@ -14,10 +14,10 @@ import java.math.BigDecimal;
@AllArgsConstructor
@RegisterForReflection
public class PaymentInitiationTransactionInstanceRecord {
- private PaymentTransactionType paymentTransactionType;
- private Payer payerReference;
- private Payee payeeReference;
- private BigDecimal amount;
- private String currencyCode;
- private String paymentPurpose;
+ private PaymentTransactionType paymentTransactionType; // operationTypeCode
+ private Payer payerReference; // applicantId
+ private Payee payeeReference; // recipientId
+ private BigDecimal amount; // amount
+ private String currencyCode; // currency
+ private String paymentPurpose; // concept
}
diff --git a/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/client/DomPaymentInitiationRequestClient.java b/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/client/DomPaymentInitiationRequestClient.java
index d2c5ed6..c806c08 100644
--- a/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/client/DomPaymentInitiationRequestClient.java
+++ b/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/client/DomPaymentInitiationRequestClient.java
@@ -25,7 +25,7 @@ public class DomPaymentInitiationRequestClient implements DomainUseCase {
RestClientConfig restClientConfig
) {
this.httpClientUseCase = httpClientUseCase;
- this.domainConfig = restClientConfig.getDomDocserviceFileConfig();
+ this.domainConfig = restClientConfig.getDomPaymentRequestConfig();
log.info("Configuracion cargada para bus-payment-initiation-request: {}", domainConfig);
}
@@ -46,8 +46,6 @@ public class DomPaymentInitiationRequestClient implements DomainUseCase {
domainConfig.getTimeout().getResponse()
);
- log.debug("Request configurado: {}", request);
-
try {
ApiResponse response = httpClientUseCase.execute(request);
diff --git a/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/resource/PaymentInitiationRequestResource.java b/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/resource/PaymentInitiationRequestResource.java
index 8cdff4b..d8286a0 100644
--- a/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/resource/PaymentInitiationRequestResource.java
+++ b/src/main/java/com/banesco/module/payment_initiation_request/infrastructure/resource/PaymentInitiationRequestResource.java
@@ -37,8 +37,8 @@ public class PaymentInitiationRequestResource {
@POST
@Path("/initiate")
@Operation(
- summary = "Proveer informacion de la transaccion",
- description = "Envía la notificación del cliente"
+ summary = "Genera informacion de la solicitud de pago",
+ description = "Envía la solicitud del pago del cliente"
)
@APIResponses(value = {
@APIResponse(
@@ -64,7 +64,7 @@ public class PaymentInitiationRequestResource {
value = """
{
"data": {
- "documentService": {
+ "paymentInitiationTransaction": {
"transaction": {
"transactionIdentification": {
"identifierValue": "1"
@@ -216,8 +216,7 @@ public class PaymentInitiationRequestResource {
})
public Response initiate(
@RequestBody(
- description = "Request para la notificación del cliente",
- required = true,
+ description = "Request de la solicitud del pago del cliente",
content = @Content(
mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = PaymentInitiationRequestRequest.class),
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 fb7b1e3..5f59cda 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
@@ -59,8 +59,6 @@ public class SecurityTraceClient implements SecurityTraceUseCase {
securityTraceConfig.getTimeout().getResponse()
);
- log.debug("Request configurado: {}", request);
-
try {
T response = httpClientUseCase.execute(request);
diff --git a/src/main/java/com/banesco/module/service_status/infrastructure/client/ServiceStatusClient.java b/src/main/java/com/banesco/module/service_status/infrastructure/client/ServiceStatusClient.java
index f362237..b50513d 100644
--- a/src/main/java/com/banesco/module/service_status/infrastructure/client/ServiceStatusClient.java
+++ b/src/main/java/com/banesco/module/service_status/infrastructure/client/ServiceStatusClient.java
@@ -48,8 +48,6 @@ public class ServiceStatusClient implements ServiceStatusUseCase {
serviceStatusConfig.getTimeout().getResponse()
);
- log.debug("Request configurado: {}", request);
-
try {
T response = httpClientUseCase.execute(request);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ebf35dc..3741346 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -7,16 +7,16 @@ quarkus:
core-threads: 1
api:
- source-id: BDFAT
- allowed:
- app-id: '[{"appId":"DANIAPP","request":{"serviceType":"P2P","limitType":"REC","casheaIndicator":"NO"}}]'
+ source-id: BPIR
read-messages:
from-props: true
bus-payment-initiation-request:
messages:
key: 'bus-payment-initiation-request'
- 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":"001","httpCode":400,"statusCode":"001","description":"LN001 - Error en cabecera backend"},{"backendCode":"003","httpCode":409,"statusCode":"003","description":"Uso interno"},{"backendCode":"004","httpCode":400,"statusCode":"004","description":"Error en cabecera backend"},{"backendCode":"007","httpCode":400,"statusCode":"007","description":"Validar el No cta enviada"},{"backendCode":"010","httpCode":401,"statusCode":"010","description":"Uso interno"},{"backendCode":"011","httpCode":400,"statusCode":"011","description":"Validar montos"},{"backendCode":"012","httpCode":400,"statusCode":"012","description":"Uso interno"},{"backendCode":"013","httpCode":400,"statusCode":"013","description":"Validar el No cta enviada"},{"backendCode":"016","httpCode":400,"statusCode":"016","description":"Validar montos"},{"backendCode":"024","httpCode":403,"statusCode":"024","description":"Uso interno"},{"backendCode":"025","httpCode":403,"statusCode":"025","description":"Uso interno"},{"backendCode":"026","httpCode":401,"statusCode":"026","description":"Uso interno"},{"backendCode":"027","httpCode":401,"statusCode":"027","description":"Uso interno"},{"backendCode":"028","httpCode":401,"statusCode":"028","description":"Error en cabecera backend"},{"backendCode":"035","httpCode":400,"statusCode":"035","description":"Uso interno"},{"backendCode":"037","httpCode":400,"statusCode":"037","description":"LN037 - ID Cliente No Encontrada."},{"backendCode":"048","httpCode":401,"statusCode":"048","description":"Transaccion no puede ser ejecutada"},{"backendCode":"049","httpCode":400,"statusCode":"049","description":"El numero de telefono celular afiliado a la Banca digital es invalido. Le invitamos a realizar la actualizacion en la agencia de su preferencia"},{"backendCode":"072","httpCode":400,"statusCode":"072","description":"Validar parametros de entrada"},{"backendCode":"077","httpCode":400,"statusCode":"077","description":"Uso interno"},{"backendCode":"100","httpCode":400,"statusCode":"100","description":"Uso interno"},{"backendCode":"108","httpCode":400,"statusCode":"108","description":"Validar el No cta enviada"},{"backendCode":"109","httpCode":403,"statusCode":"109","description":"Uso interno"},{"backendCode":"199","httpCode":400,"statusCode":"199","description":"Uso interno"},{"backendCode":"240","httpCode":402,"statusCode":"240","description":"Uso interno"},{"backendCode":"249","httpCode":402,"statusCode":"249","description":"Error en cabecera backend"},{"backendCode":"257","httpCode":402,"statusCode":"257","description":"Validar configuracion montos y limites"},{"backendCode":"311","httpCode":403,"statusCode":"311","description":"Uso interno"},{"backendCode":"322","httpCode":403,"statusCode":"322","description":"Uso interno"},{"backendCode":"388","httpCode":403,"statusCode":"388","description":"AFPM388 - Registro no existente"},{"backendCode":"408","httpCode":403,"statusCode":"408","description":"Uso interno"},{"backendCode":"415","httpCode":400,"statusCode":"415","description":"Uso interno"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Uso interno"},{"backendCode":"451","httpCode":403,"statusCode":"451","description":"Uso interno"},{"backendCode":"569","httpCode":400,"statusCode":"569","description":"LN569 - Error en cabecera backend"},{"backendCode":"607","httpCode":403,"statusCode":"607","description":"Uso interno"},{"backendCode":"609","httpCode":403,"statusCode":"609","description":"Error interno backend"},{"backendCode":"622","httpCode":204,"statusCode":"622","description":"Uso interno"},{"backendCode":"655","httpCode":400,"statusCode":"655","description":"Uso interno"},{"backendCode":"667","httpCode":400,"statusCode":"667","description":"Uso interno"},{"backendCode":"670","httpCode":404,"statusCode":"670","description":"Uso interno"},{"backendCode":"715","httpCode":715,"statusCode":"715","description":"Error en cabecera backend"},{"backendCode":"725","httpCode":400,"statusCode":"725","description":"Uso interno"},{"backendCode":"744","httpCode":403,"statusCode":"744","description":"Uso interno"},{"backendCode":"758","httpCode":401,"statusCode":"758","description":"Uso interno"},{"backendCode":"762","httpCode":403,"statusCode":"762","description":"Validar el No cta enviada"},{"backendCode":"763","httpCode":403,"statusCode":"763","description":"Validar el No cta enviada"},{"backendCode":"764","httpCode":403,"statusCode":"764","description":"Validar el No cta enviada"},{"backendCode":"765","httpCode":403,"statusCode":"765","description":"Validar el No cta enviada"},{"backendCode":"766","httpCode":403,"statusCode":"766","description":"Validar el No cta enviada"},{"backendCode":"770","httpCode":400,"statusCode":"770","description":"Uso interno"},{"backendCode":"823","httpCode":400,"statusCode":"823","description":"Uso interno"},{"backendCode":"826","httpCode":400,"statusCode":"826","description":"Uso interno"},{"backendCode":"918","httpCode":403,"statusCode":"918","description":"Error en cabecera backend"},{"backendCode":"924","httpCode":924,"statusCode":"924","description":"Error interno backend"},{"backendCode":"963","httpCode":963,"statusCode":"963","description":"Error interno backend"},{"backendCode":"965","httpCode":402,"statusCode":"965","description":"Validar configuracion montos y limites"},{"backendCode":"991","httpCode":403,"statusCode":"991","description":"Error interno backend"},{"backendCode":"992","httpCode":402,"statusCode":"992","description":"Validar configuracion montos y limites"},{"backendCode":"999","httpCode":403,"statusCode":"999","description":"LN999 - Error interno backend"},{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"OK","httpCode":200,"statusCode":"OK","description":"Operacion exitosa"},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":503,"statusCode":"500","description":"Uso interno"},{"backendCode":"SERVICE_UNAVAILABLE","httpCode":500,"statusCode":"SERVICE_UNAVAILABLE","description":"Uso interno"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"OSB-382505","description":"Uso interno"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"OSB-380002","description":"Uso interno"},{"backendCode":"ERROR","httpCode":400,"statusCode":"ERROR","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":"429","httpCode":429,"statusCode":"429","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"default","description":"Conflicto"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"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"}]'
rest-client:
dom-payment-initiation-request: '{"url":"http://localhost:8083/payment-initiation-request/initiate","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":"P2PVUEL","codEve2":"P2PVUEL","codBan":"01","codMon":"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
+ 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"}}}'
+ black-list: '{"url":"http://api-validate-restriction-list-client-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/risk-rating/blacklist","timeout":{"connect":10000,"response":10000},"request":{"msgRqHdr":{"sourceChannelCode":"INT","operatorCode":"BAN1738M02","networkTrnInfo":[{"transactionCode":"8494","bankId":"01","channelUserId":"APIS"}],"applicantData":{"application":"APIMGMT"},"vbProtocol":{"transactionInd":false,"vbProtocolInd":true}},"domain":"osbp2p"}}'
+ get-affiliation: '{"url":"http://api-p2p-get-affiliation-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/p2p/get-affiliation","timeout":{"connect":10000,"response":10000},"request":{"msgRqHdr":{"sourceChannelCode":"APP","operatorCode":"BAN0591W01","networkTrnInfo":[{"transactionCode":"1799","bankId":"01","channelUserId":"API"}],"applicantData":{"application":"APIMGMT"},"vbProtocol":{"transactionInd":false,"vbProtocolInd":true}},"svcType":"P2P","affilType":"4","sourceChannelCode":"APP","domain":"osbp2p"}}'
\ No newline at end of file
diff --git a/src/main/resources/configmap.yaml b/src/main/resources/configmap.yaml
index 3aabbd8..b30a81d 100644
--- a/src/main/resources/configmap.yaml
+++ b/src/main/resources/configmap.yaml
@@ -8,7 +8,7 @@ metadata:
creationTimestamp: '2026-01-19T23:35:27Z'
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
- {"apiVersion":"v1","data":{"api.allowed.app-id":"[{\"appId\":\"DANIAPP\",\"request\":{\"serviceType\":\"P2P\",\"limitType\":\"REC\",\"casheaIndicator\":\"NO\"}}]","api.bus-payment-initiation-request.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-payment-initiation-request.messages.key":"bus-payment-initiation-request","api.read-messages.from-props":"true","api.rest-client.dom-payment-initiation-request":"{\"url\":\"http://dom-payment-initiation-request-route-proyecto-prueba-ja.apps.desplakur3.desintra.banesco.com/payment-initiation-request/provide\",\"timeout\":{\"connect\":10000,\"response\":10000}}","api.rest-client.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\":\"P2PVUEL\",\"codEve2\":\"P2PVUEL\",\"codBan\":\"01\",\"codMon\":\"BS\"}}","api.rest-client.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\"}}}","api.source-id":"BDFAT","quarkus.application.name":"bus-payment-initiation-request","quarkus.application.version":"1.0.0","quarkus.debug.print-startup-times":"true","quarkus.debug.reflection":"false","quarkus.http.non-application-root-path":"actuator","quarkus.http.port":"8080","quarkus.log.consol.enable":"true","quarkus.log.consol.format":"%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n","quarkus.log.console.enable":"true","quarkus.log.console.format":"%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n","quarkus.log.level":"INFO","quarkus.profile":"dev","quarkus.smallrye-health.liveness-path":"/actuator/health/live","quarkus.smallrye-health.readiness-path":"/actuator/health/ready","quarkus.smallrye-health.root-path":"/actuator/health","quarkus.smallrye-health.ui.enable":"false","quarkus.smallrye-openapi.enable":"true","quarkus.smallrye-openapi.path":"/openapi","quarkus.swagger-ui.always-include":"true","quarkus.swagger-ui.path":"/swagger-ui"},"kind":"ConfigMap","metadata":{"annotations":{},"app":"bus-payment-initiation-request","labels":null,"name":"configmap-bus-payment-initiation-request","namespace":"proyecto-prueba-ja"}}
+ {"apiVersion":"v1","data":{"api.allowed.app-id":"[{\"appId\":\"DANIAPP\",\"request\":{\"serviceType\":\"P2P\",\"limitType\":\"REC\",\"casheaIndicator\":\"NO\"}}]","api.bus-payment-initiation-request.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-payment-initiation-request.messages.key":"bus-payment-initiation-request","api.read-messages.from-props":"true","api.rest-client.dom-payment-initiation-request":"{\"url\":\"http://dom-payment-initiation-request-route-proyecto-prueba-ja.apps.desplakur3.desintra.banesco.com/payment-initiation-request/provide\",\"timeout\":{\"connect\":10000,\"response\":10000}}","api.rest-client.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\":\"P2PVUEL\",\"codEve2\":\"P2PVUEL\",\"codBan\":\"01\",\"codMon\":\"BS\"}}","api.rest-client.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\"}}}","api.source-id":"BPIR","quarkus.application.name":"bus-payment-initiation-request","quarkus.application.version":"1.0.0","quarkus.debug.print-startup-times":"true","quarkus.debug.reflection":"false","quarkus.http.non-application-root-path":"actuator","quarkus.http.port":"8080","quarkus.log.consol.enable":"true","quarkus.log.consol.format":"%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n","quarkus.log.console.enable":"true","quarkus.log.console.format":"%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n","quarkus.log.level":"INFO","quarkus.profile":"dev","quarkus.smallrye-health.liveness-path":"/actuator/health/live","quarkus.smallrye-health.readiness-path":"/actuator/health/ready","quarkus.smallrye-health.root-path":"/actuator/health","quarkus.smallrye-health.ui.enable":"false","quarkus.smallrye-openapi.enable":"true","quarkus.smallrye-openapi.path":"/openapi","quarkus.swagger-ui.always-include":"true","quarkus.swagger-ui.path":"/swagger-ui"},"kind":"ConfigMap","metadata":{"annotations":{},"app":"bus-payment-initiation-request","labels":null,"name":"configmap-bus-payment-initiation-request","namespace":"proyecto-prueba-ja"}}
managedFields:
- manager: kubectl-client-side-apply
operation: Update
@@ -54,7 +54,6 @@ data:
quarkus.application.version: 1.0.0
quarkus.log.level: INFO
quarkus.debug.reflection: 'false'
- api.allowed.app-id: '[{"appId":"DANIAPP","request":{"serviceType":"P2P","limitType":"REC","casheaIndicator":"NO"}}]'
quarkus.debug.print-startup-times: 'true'
quarkus.swagger-ui.path: /swagger-ui
quarkus.application.name: bus-payment-initiation-request
@@ -63,15 +62,17 @@ data:
quarkus.http.non-application-root-path: actuator
api.rest-client.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"}}}'
api.rest-client.dom-payment-initiation-request: '{"url":"http://dom-payment-initiation-request-route-proyecto-prueba-ja.apps.desplakur3.desintra.banesco.com/payment-initiation-request/initiate","timeout":{"connect":10000,"response":10000}}'
+ api.rest-client.black-list: '{"url":"http://api-validate-restriction-list-client-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/risk-rating/blacklist","timeout":{"connect":10000,"response":10000},"request":{"msgRqHdr":{"sourceChannelCode":"INT","operatorCode":"BAN1738M02","networkTrnInfo":[{"transactionCode":"8494","bankId":"01","channelUserId":"APIS"}],"applicantData":{"application":"APIMGMT"},"vbProtocol":{"transactionInd":false,"vbProtocolInd":true}},"domain":"osbp2p"}}'
+ api.rest-client.get-affiliation: '{"url":"http://api-p2p-get-affiliation-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/p2p/get-affiliation","timeout":{"connect":10000,"response":10000},"request":{"msgRqHdr":{"sourceChannelCode":"APP","operatorCode":"BAN0591W01","networkTrnInfo":[{"transactionCode":"1799","bankId":"01","channelUserId":"API"}],"applicantData":{"application":"APIMGMT"},"vbProtocol":{"transactionInd":false,"vbProtocolInd":true}},"svcType":"P2P","affilType":"4","sourceChannelCode":"APP","domain":"osbp2p"}}'
api.read-messages.from-props: 'true'
quarkus.http.port: '8080'
quarkus.profile: dev
quarkus.log.console.format: '%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n'
quarkus.log.consol.format: '%d{HH:mm:ss.SSS} %-5p [%t] [%X{requestId}] %c{1} - %s%e%n'
- api.bus-payment-initiation-request.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-payment-initiation-request.messages.content: '[{"backendCode":"001","httpCode":400,"statusCode":"001","description":"LN001 - Error en cabecera backend"},{"backendCode":"003","httpCode":409,"statusCode":"003","description":"Uso interno"},{"backendCode":"004","httpCode":400,"statusCode":"004","description":"Error en cabecera backend"},{"backendCode":"007","httpCode":400,"statusCode":"007","description":"Validar el No cta enviada"},{"backendCode":"010","httpCode":401,"statusCode":"010","description":"Uso interno"},{"backendCode":"011","httpCode":400,"statusCode":"011","description":"Validar montos"},{"backendCode":"012","httpCode":400,"statusCode":"012","description":"Uso interno"},{"backendCode":"013","httpCode":400,"statusCode":"013","description":"Validar el No cta enviada"},{"backendCode":"016","httpCode":400,"statusCode":"016","description":"Validar montos"},{"backendCode":"024","httpCode":403,"statusCode":"024","description":"Uso interno"},{"backendCode":"025","httpCode":403,"statusCode":"025","description":"Uso interno"},{"backendCode":"026","httpCode":401,"statusCode":"026","description":"Uso interno"},{"backendCode":"027","httpCode":401,"statusCode":"027","description":"Uso interno"},{"backendCode":"028","httpCode":401,"statusCode":"028","description":"Error en cabecera backend"},{"backendCode":"035","httpCode":400,"statusCode":"035","description":"Uso interno"},{"backendCode":"037","httpCode":400,"statusCode":"037","description":"LN037 - ID Cliente No Encontrada."},{"backendCode":"048","httpCode":401,"statusCode":"048","description":"Transaccion no puede ser ejecutada"},{"backendCode":"049","httpCode":400,"statusCode":"049","description":"El numero de telefono celular afiliado a la Banca digital es invalido. Le invitamos a realizar la actualizacion en la agencia de su preferencia"},{"backendCode":"072","httpCode":400,"statusCode":"072","description":"Validar parametros de entrada"},{"backendCode":"077","httpCode":400,"statusCode":"077","description":"Uso interno"},{"backendCode":"100","httpCode":400,"statusCode":"100","description":"Uso interno"},{"backendCode":"108","httpCode":400,"statusCode":"108","description":"Validar el No cta enviada"},{"backendCode":"109","httpCode":403,"statusCode":"109","description":"Uso interno"},{"backendCode":"199","httpCode":400,"statusCode":"199","description":"Uso interno"},{"backendCode":"240","httpCode":402,"statusCode":"240","description":"Uso interno"},{"backendCode":"249","httpCode":402,"statusCode":"249","description":"Error en cabecera backend"},{"backendCode":"257","httpCode":402,"statusCode":"257","description":"Validar configuracion montos y limites"},{"backendCode":"311","httpCode":403,"statusCode":"311","description":"Uso interno"},{"backendCode":"322","httpCode":403,"statusCode":"322","description":"Uso interno"},{"backendCode":"388","httpCode":403,"statusCode":"388","description":"AFPM388 - Registro no existente"},{"backendCode":"408","httpCode":403,"statusCode":"408","description":"Uso interno"},{"backendCode":"415","httpCode":400,"statusCode":"415","description":"Uso interno"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Uso interno"},{"backendCode":"451","httpCode":403,"statusCode":"451","description":"Uso interno"},{"backendCode":"569","httpCode":400,"statusCode":"569","description":"LN569 - Error en cabecera backend"},{"backendCode":"607","httpCode":403,"statusCode":"607","description":"Uso interno"},{"backendCode":"609","httpCode":403,"statusCode":"609","description":"Error interno backend"},{"backendCode":"622","httpCode":204,"statusCode":"622","description":"Uso interno"},{"backendCode":"655","httpCode":400,"statusCode":"655","description":"Uso interno"},{"backendCode":"667","httpCode":400,"statusCode":"667","description":"Uso interno"},{"backendCode":"670","httpCode":404,"statusCode":"670","description":"Uso interno"},{"backendCode":"715","httpCode":715,"statusCode":"715","description":"Error en cabecera backend"},{"backendCode":"725","httpCode":400,"statusCode":"725","description":"Uso interno"},{"backendCode":"744","httpCode":403,"statusCode":"744","description":"Uso interno"},{"backendCode":"758","httpCode":401,"statusCode":"758","description":"Uso interno"},{"backendCode":"762","httpCode":403,"statusCode":"762","description":"Validar el No cta enviada"},{"backendCode":"763","httpCode":403,"statusCode":"763","description":"Validar el No cta enviada"},{"backendCode":"764","httpCode":403,"statusCode":"764","description":"Validar el No cta enviada"},{"backendCode":"765","httpCode":403,"statusCode":"765","description":"Validar el No cta enviada"},{"backendCode":"766","httpCode":403,"statusCode":"766","description":"Validar el No cta enviada"},{"backendCode":"770","httpCode":400,"statusCode":"770","description":"Uso interno"},{"backendCode":"823","httpCode":400,"statusCode":"823","description":"Uso interno"},{"backendCode":"826","httpCode":400,"statusCode":"826","description":"Uso interno"},{"backendCode":"918","httpCode":403,"statusCode":"918","description":"Error en cabecera backend"},{"backendCode":"924","httpCode":924,"statusCode":"924","description":"Error interno backend"},{"backendCode":"963","httpCode":963,"statusCode":"963","description":"Error interno backend"},{"backendCode":"965","httpCode":402,"statusCode":"965","description":"Validar configuracion montos y limites"},{"backendCode":"991","httpCode":403,"statusCode":"991","description":"Error interno backend"},{"backendCode":"992","httpCode":402,"statusCode":"992","description":"Validar configuracion montos y limites"},{"backendCode":"999","httpCode":403,"statusCode":"999","description":"LN999 - Error interno backend"},{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"OK","httpCode":200,"statusCode":"OK","description":"Operacion exitosa"},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":503,"statusCode":"500","description":"Uso interno"},{"backendCode":"SERVICE_UNAVAILABLE","httpCode":500,"statusCode":"SERVICE_UNAVAILABLE","description":"Uso interno"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"OSB-382505","description":"Uso interno"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"OSB-380002","description":"Uso interno"},{"backendCode":"ERROR","httpCode":400,"statusCode":"ERROR","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":"429","httpCode":429,"statusCode":"429","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"default","description":"Conflicto"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"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"}]'
api.rest-client.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":"P2PVUEL","codEve2":"P2PVUEL","codBan":"01","codMon":"BS"}}'
quarkus.smallrye-health.liveness-path: /actuator/health/live
- api.source-id: BDFAT
+ api.source-id: BPIR
quarkus.smallrye-health.root-path: /actuator/health
api.bus-payment-initiation-request.messages.key: bus-payment-initiation-request
quarkus.smallrye-openapi.enable: 'true'