From 92e71695a56d071376789c6365f91b092a19d786 Mon Sep 17 00:00:00 2001 From: himanshu Date: Tue, 28 Oct 2025 15:46:31 +0530 Subject: [PATCH] for the review --- .../bbps/controller/MasterDataController.java | 32 ++--- .../bbps/dto/CustomerParamsRequest.java | 16 +++ .../bbps/dto/GeneralResp.java | 4 + .../bbps/dto/MasterApiResponse.java | 2 +- .../bbps/dto/RemitterIdentity.java | 15 ++ .../bbps/dto/ResponseModel.java | 46 ++++++ .../com/billpaymentservice/bbps/dto/Tag.java | 15 ++ .../bbps/dto/request/BillerDetailRequest.java | 2 - ...amRequest.java => CustomParamRequest.java} | 4 +- .../bbps/dto/request/FetchBillRequest.java | 31 ++++ .../bbps/dto/request/MasterRequest.java | 15 ++ .../dto/request/MerchantRequestModel.java | 2 +- .../bbps/dto/response/BillerDataResponse.java | 8 +- .../bbps/dto/response/CustomParamResp.java | 2 + .../bbps/dto/response/FetchBillResponse.java | 33 +++++ .../bbps/entites/BaseClass.java | 22 --- .../bbps/exception/CustomException.java | 41 +++--- .../exception/GlobalExceptionHandler.java | 7 +- .../bbps/service/MasterDataService.java | 26 ++-- .../bbps/serviceImpl/HttpClientApi.java | 1 - .../serviceImpl/MasterDataServiceImpl.java | 132 +++++++++-------- .../bbps/util/BBPSConstant.java | 2 +- .../billpaymentservice/bbps/util/Helper.java | 23 +++ .../bbps/util/ResponseParser.java | 134 ------------------ 24 files changed, 331 insertions(+), 284 deletions(-) create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/CustomerParamsRequest.java create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/RemitterIdentity.java create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/ResponseModel.java create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/Tag.java rename src/main/java/com/billpaymentservice/bbps/dto/request/{CustomerParamRequest.java => CustomParamRequest.java} (73%) create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/request/FetchBillRequest.java create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/request/MasterRequest.java create mode 100644 src/main/java/com/billpaymentservice/bbps/dto/response/FetchBillResponse.java delete mode 100644 src/main/java/com/billpaymentservice/bbps/entites/BaseClass.java delete mode 100644 src/main/java/com/billpaymentservice/bbps/util/ResponseParser.java diff --git a/src/main/java/com/billpaymentservice/bbps/controller/MasterDataController.java b/src/main/java/com/billpaymentservice/bbps/controller/MasterDataController.java index 2813406..828a1a2 100644 --- a/src/main/java/com/billpaymentservice/bbps/controller/MasterDataController.java +++ b/src/main/java/com/billpaymentservice/bbps/controller/MasterDataController.java @@ -16,9 +16,11 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.billpaymentservice.bbps.dto.MasterApiResponse; +import com.billpaymentservice.bbps.dto.ResponseModel; import com.billpaymentservice.bbps.dto.request.BillerDetailRequest; import com.billpaymentservice.bbps.dto.request.ContactMasterRequest; -import com.billpaymentservice.bbps.dto.request.CustomerParamRequest; +import com.billpaymentservice.bbps.dto.request.CustomParamRequest; +import com.billpaymentservice.bbps.dto.request.MasterRequest; import com.billpaymentservice.bbps.dto.request.MerchantRequestModel; import com.billpaymentservice.bbps.dto.response.BillerDataResponse; import com.billpaymentservice.bbps.dto.response.BillerResponse; @@ -41,8 +43,7 @@ public class MasterDataController { } /**Get Details of the biller by billId **/ @PostMapping(value = "/getBillerDetails", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getBillerDetails( - @Validated @RequestBody BillerDetailRequest billerDetailRequest) { + public ResponseEntity getBillerDetails(@Validated @RequestBody BillerDetailRequest billerDetailRequest) { log.info("Received biller details request for billerId: {}", billerDetailRequest.getBillerId()); @@ -50,7 +51,7 @@ public class MasterDataController { } /**Get Master Contact**/ @PostMapping(value = "/getContactMasterResponse", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getContactMaster( + public ResponseEntity getContactMaster( @Validated @RequestBody ContactMasterRequest contactMasterRequest ) { return ResponseEntity.ok(masterDataService.getContactMaster(contactMasterRequest)); @@ -58,29 +59,16 @@ public class MasterDataController { /** Get CustomerParam by billerId.The parameter is different from the data we are getting in the billerDetail **/ @PostMapping(value = "/getCustomerParamDetails", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getBillerDetails( - @Validated @RequestBody CustomerParamRequest customerParamRequest) { + public ResponseEntity getBillerDetails( + @Validated @RequestBody CustomParamRequest customerParamRequest) { log.info("Received biller details request for billerId: {}",customerParamRequest.getBillerId() ); return ResponseEntity.ok(masterDataService.getCustomerParamByBillerId(customerParamRequest)); } - - /** Get All Masters API Fetch All Category from BBPS URL **/ - @GetMapping("/getAllMasters") - public ResponseEntity> fetchMasterData( - @Validated @RequestBody MerchantRequestModel requestModel, HttpServletRequest request) { - log.info("Fetching Master Data Registered URL"); - return masterDataService.getMasterData(requestModel, request); + @PostMapping("/getAllMastersData") + public ResponseModel fetchMasterData(@Validated @RequestBody MasterRequest masterRequest) { + return masterDataService.getMasterData(masterRequest); } - /** Get Master Category Wise API Fetch Category Wise from BBPS URL **/ - @GetMapping("/getMasterCategoryWise") - public ResponseEntity getMasterDataCategoryWise( - @Validated @RequestBody MerchantRequestModel requestModel, HttpServletRequest request, - @RequestParam String category, @RequestParam(defaultValue = "0") int pageStart, @RequestParam int pageEnd) { - - log.info("Request received: category=" + category + ", pageNumber=" + pageStart + ", pageSize=" + pageEnd); - return masterDataService.fetchMasterDataCategoryWise(requestModel, category, pageStart, pageEnd); - } } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamsRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamsRequest.java new file mode 100644 index 0000000..b65eb09 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamsRequest.java @@ -0,0 +1,16 @@ +package com.billpaymentservice.bbps.dto; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class CustomerParamsRequest { + private List tags; +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/GeneralResp.java b/src/main/java/com/billpaymentservice/bbps/dto/GeneralResp.java index 53d351f..495c3a0 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/GeneralResp.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/GeneralResp.java @@ -1,10 +1,14 @@ package com.billpaymentservice.bbps.dto; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter +@AllArgsConstructor +@NoArgsConstructor public class GeneralResp { private String statusCode; private String status; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/MasterApiResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/MasterApiResponse.java index 877a89f..5e280b1 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/MasterApiResponse.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/MasterApiResponse.java @@ -17,7 +17,7 @@ import lombok.ToString; @ToString public class MasterApiResponse { - private GeneralResponse generalResp; + private GeneralResp generalResp; private List categoryRespList; } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/RemitterIdentity.java b/src/main/java/com/billpaymentservice/bbps/dto/RemitterIdentity.java new file mode 100644 index 0000000..aecb551 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/RemitterIdentity.java @@ -0,0 +1,15 @@ +package com.billpaymentservice.bbps.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class RemitterIdentity { + private String name; + private String value; +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/ResponseModel.java b/src/main/java/com/billpaymentservice/bbps/dto/ResponseModel.java new file mode 100644 index 0000000..c96ab11 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/ResponseModel.java @@ -0,0 +1,46 @@ +package com.billpaymentservice.bbps.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ResponseModel { + + private String message; + private String status; + private int statusCode; + private Object data; + private Object duplicateData; + private int size; + + public ResponseModel(String message, String status, int statusCode, Object data) { + super(); + this.message = message; + this.status = status; + this.statusCode = statusCode; + this.data = data; + + } + public ResponseModel(String message, String status, int statusCode, Object data,Object data1) { + this.message = message; + this.status = status; + this.statusCode = statusCode; + this.data = data; + this.duplicateData=data1; + } + + public ResponseModel(String message, String status, int statusCode, Object data, int size) { + super(); + this.message = message; + this.status = status; + this.statusCode = statusCode; + this.data = data; + this.size = size; + } + +} \ No newline at end of file diff --git a/src/main/java/com/billpaymentservice/bbps/dto/Tag.java b/src/main/java/com/billpaymentservice/bbps/dto/Tag.java new file mode 100644 index 0000000..0e152b7 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/Tag.java @@ -0,0 +1,15 @@ +package com.billpaymentservice.bbps.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class Tag { + private String name; + private String value; +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/BillerDetailRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/BillerDetailRequest.java index dad5f62..7f4a81d 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/request/BillerDetailRequest.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/BillerDetailRequest.java @@ -1,7 +1,5 @@ package com.billpaymentservice.bbps.dto.request; -import com.billpaymentservice.bbps.entites.BaseClass; - import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/CustomerParamRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/CustomParamRequest.java similarity index 73% rename from src/main/java/com/billpaymentservice/bbps/dto/request/CustomerParamRequest.java rename to src/main/java/com/billpaymentservice/bbps/dto/request/CustomParamRequest.java index 2189f1c..64010f5 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/request/CustomerParamRequest.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/CustomParamRequest.java @@ -1,7 +1,5 @@ package com.billpaymentservice.bbps.dto.request; -import com.billpaymentservice.bbps.entites.BaseClass; - import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; @@ -12,7 +10,7 @@ import lombok.Setter; @Setter @NoArgsConstructor @AllArgsConstructor -public class CustomerParamRequest extends BaseClass { +public class CustomParamRequest extends BaseClass { @NotNull private String billerId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/FetchBillRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/FetchBillRequest.java new file mode 100644 index 0000000..764ded4 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/FetchBillRequest.java @@ -0,0 +1,31 @@ +package com.billpaymentservice.bbps.dto.request; + +import java.util.List; + +import com.billpaymentservice.bbps.dto.CustomerParamsRequest; +import com.billpaymentservice.bbps.dto.RemitterIdentity; +import com.billpaymentservice.bbps.dto.Tag; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class FetchBillRequest extends BaseClass { + + private String tenantId; // M + private String billerId; // M + private String billerName; // M + private String billerCategory; // M + private String clientReqId; // C + private String macAdress; // C + private String customerMobNo; // M + private String remitterName; // O + private String paymentChannel; // M + private List deviceBlockTags; // M + private CustomerParamsRequest customerParamsRequest; // M + private List remitterIdentity; // O +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/MasterRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/MasterRequest.java new file mode 100644 index 0000000..ec1430f --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/MasterRequest.java @@ -0,0 +1,15 @@ +package com.billpaymentservice.bbps.dto.request; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class MasterRequest extends BaseClass { + @NotNull + private String tenantId; +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/MerchantRequestModel.java b/src/main/java/com/billpaymentservice/bbps/dto/request/MerchantRequestModel.java index 1447ec6..7349dfc 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/request/MerchantRequestModel.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/MerchantRequestModel.java @@ -5,7 +5,7 @@ import lombok.Setter; @Getter @Setter -public class MerchantRequestModel { +public class MerchantRequestModel { private String mid; private String secretKey; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/BillerDataResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/response/BillerDataResponse.java index 47ff89b..ccd6f8b 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/response/BillerDataResponse.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/BillerDataResponse.java @@ -2,7 +2,9 @@ package com.billpaymentservice.bbps.dto.response; import com.billpaymentservice.bbps.dto.BillerDAO; import com.billpaymentservice.bbps.dto.GeneralResp; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; import lombok.Setter; @@ -11,7 +13,7 @@ import lombok.Setter; @Setter @JsonIgnoreProperties(ignoreUnknown = true) public class BillerDataResponse { - private BillerDAO billerDAO; - - private GeneralResp generalResp; + private BillerDAO billerDAO; + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private GeneralResp generalResp; } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/CustomParamResp.java b/src/main/java/com/billpaymentservice/bbps/dto/response/CustomParamResp.java index c4b6287..f3f7dca 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/response/CustomParamResp.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/CustomParamResp.java @@ -6,6 +6,7 @@ import com.billpaymentservice.bbps.dto.ContactMaster; import com.billpaymentservice.bbps.dto.CustomParam; import com.billpaymentservice.bbps.dto.CustomerParam; import com.billpaymentservice.bbps.dto.GeneralResp; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Getter; @@ -17,6 +18,7 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class CustomParamResp { + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private GeneralResp generalResp; private List customParamResp; } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/FetchBillResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/response/FetchBillResponse.java new file mode 100644 index 0000000..9c4ab56 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/FetchBillResponse.java @@ -0,0 +1,33 @@ +package com.billpaymentservice.bbps.dto.response; + +import com.billpaymentservice.bbps.dto.GeneralResponse; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class FetchBillResponse { + + private GeneralResponse genericResponse; + private String billId; + private String refId; + private String billerId; + private String status; + private String actionType; + private String userId; + private String billerResponse; + private String additionalInfo; + private String customerParams; + private String creationDate; + private String modifiedDate; + private long createdEpochDate; + private long modifiedEpochDate; + + +} diff --git a/src/main/java/com/billpaymentservice/bbps/entites/BaseClass.java b/src/main/java/com/billpaymentservice/bbps/entites/BaseClass.java deleted file mode 100644 index 7d0bb8e..0000000 --- a/src/main/java/com/billpaymentservice/bbps/entites/BaseClass.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.billpaymentservice.bbps.entites; - -import com.billpaymentservice.bbps.dto.DeviceDetail; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BaseClass { - - - private String mid; - private String secretKey; - private String txnId; - private DeviceDetail deviceDetial; - -} diff --git a/src/main/java/com/billpaymentservice/bbps/exception/CustomException.java b/src/main/java/com/billpaymentservice/bbps/exception/CustomException.java index d8a34c6..15eb0b7 100644 --- a/src/main/java/com/billpaymentservice/bbps/exception/CustomException.java +++ b/src/main/java/com/billpaymentservice/bbps/exception/CustomException.java @@ -1,29 +1,36 @@ package com.billpaymentservice.bbps.exception; +import com.billpaymentservice.bbps.dto.ResponseModel; -import com.billpaymentservice.bbps.dto.GeneralResp; public class CustomException extends RuntimeException { private static final long serialVersionUID = 1L; - private final GeneralResp generalResp; - - public CustomException(String statusCode, String status,String message,String remark) { + private final ResponseModel responseModel; + + public CustomException(String message, String status, int statusCode, String remarks) { super(message); - this.generalResp = new GeneralResp(); - this.generalResp.setStatusCode(statusCode); - this.generalResp.setStatus(status); - this.generalResp.setMessage(message); - this.generalResp.setRemarks(remark); + this.responseModel = new ResponseModel(); + this.responseModel.setMessage(message); + this.responseModel.setStatus(status); + this.responseModel.setStatusCode(statusCode); + this.responseModel.setData(null); + this.responseModel.setDuplicateData(remarks); + } + + public ResponseModel getResponseModel() { + return responseModel; } public CustomException(String message) { super(message); - this.generalResp = new GeneralResp(); - this.generalResp.setStatusCode("500"); - this.generalResp.setStatus("Failure"); - this.generalResp.setMessage(message); - this.generalResp.setRemarks(""); - } - public GeneralResp getGeneralResp() { - return generalResp; + this.responseModel = new ResponseModel(); + this.responseModel.setMessage(message); + this.responseModel.setStatus("FAILED"); + this.responseModel.setStatusCode(400); + this.responseModel.setData(null); + this.responseModel.setDuplicateData(null); } + + + + } diff --git a/src/main/java/com/billpaymentservice/bbps/exception/GlobalExceptionHandler.java b/src/main/java/com/billpaymentservice/bbps/exception/GlobalExceptionHandler.java index 2c80cee..6dcd370 100644 --- a/src/main/java/com/billpaymentservice/bbps/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/billpaymentservice/bbps/exception/GlobalExceptionHandler.java @@ -5,12 +5,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import com.billpaymentservice.bbps.dto.GeneralResp; +import com.billpaymentservice.bbps.dto.ResponseModel; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(CustomException.class) - public ResponseEntity handleCustomException(CustomException ex) { - return new ResponseEntity<>(ex.getGeneralResp(), HttpStatus.INTERNAL_SERVER_ERROR); + public ResponseEntity handleCustomException(CustomException ex) { + return new ResponseEntity<>(ex.getResponseModel(), HttpStatus.BAD_REQUEST); } -} +} \ No newline at end of file diff --git a/src/main/java/com/billpaymentservice/bbps/service/MasterDataService.java b/src/main/java/com/billpaymentservice/bbps/service/MasterDataService.java index 08dacde..2e3f3e6 100644 --- a/src/main/java/com/billpaymentservice/bbps/service/MasterDataService.java +++ b/src/main/java/com/billpaymentservice/bbps/service/MasterDataService.java @@ -1,32 +1,22 @@ package com.billpaymentservice.bbps.service; - -import java.util.List; - -import org.springframework.http.ResponseEntity; - -import com.billpaymentservice.bbps.dto.MasterApiResponse; +import com.billpaymentservice.bbps.dto.ResponseModel; import com.billpaymentservice.bbps.dto.request.BillerDetailRequest; import com.billpaymentservice.bbps.dto.request.ContactMasterRequest; -import com.billpaymentservice.bbps.dto.request.CustomerParamRequest; +import com.billpaymentservice.bbps.dto.request.CustomParamRequest; +import com.billpaymentservice.bbps.dto.request.MasterRequest; import com.billpaymentservice.bbps.dto.request.MerchantRequestModel; -import com.billpaymentservice.bbps.dto.response.BillerDataResponse; -import com.billpaymentservice.bbps.dto.response.BillerResponse; -import com.billpaymentservice.bbps.dto.response.ContactMasterResponse; -import com.billpaymentservice.bbps.dto.response.CustomParamResp; - import jakarta.servlet.http.HttpServletRequest; public interface MasterDataService { - public BillerDataResponse getBillerByBillerId(BillerDetailRequest billerDetailRequest); + public ResponseModel getBillerByBillerId(BillerDetailRequest billerDetailRequest); - public ResponseEntity> getMasterData(MerchantRequestModel requestModel, - HttpServletRequest request); + public ResponseModel getMasterData(MasterRequest masterRequest); - public ResponseEntity fetchMasterDataCategoryWise(MerchantRequestModel requestModel, String category, int pageStart, int pageEnd); + public ResponseModel fetchMasterDataCategoryWise(MerchantRequestModel requestModel, String category, int pageStart, int pageEnd); - public CustomParamResp getCustomerParamByBillerId(CustomerParamRequest customerParamRequest); + public ResponseModel getCustomerParamByBillerId(CustomParamRequest customerParamRequest); - public ContactMasterResponse getContactMaster(ContactMasterRequest contactMasterRequest); + public ResponseModel getContactMaster(ContactMasterRequest contactMasterRequest); } diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/HttpClientApi.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/HttpClientApi.java index 1b4c9be..e5d1dc9 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/HttpClientApi.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/HttpClientApi.java @@ -41,7 +41,6 @@ public class HttpClientApi { LOGGER.info("Pesapal: Payment Status Response Body: {}", responseBody); // Set response values in map - responseMap.put("respCode", response.getStatusCode()); responseMap.put("data", responseBody); } catch (HttpClientErrorException | HttpServerErrorException httpEx) { diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java index 02c6620..07c8b4c 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java @@ -13,13 +13,17 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import com.billpaymentservice.bbps.dto.GeneralResp; import com.billpaymentservice.bbps.dto.MasterApiResponse; +import com.billpaymentservice.bbps.dto.ResponseModel; import com.billpaymentservice.bbps.dto.request.BillerDetailRequest; import com.billpaymentservice.bbps.dto.request.ContactMasterRequest; -import com.billpaymentservice.bbps.dto.request.CustomerParamRequest; +import com.billpaymentservice.bbps.dto.request.CustomParamRequest; +import com.billpaymentservice.bbps.dto.request.MasterRequest; import com.billpaymentservice.bbps.dto.request.MerchantRequestModel; import com.billpaymentservice.bbps.dto.response.BillerDataResponse; import com.billpaymentservice.bbps.dto.response.BillerResponse; +import com.billpaymentservice.bbps.dto.response.CategoryResponse; import com.billpaymentservice.bbps.dto.response.ContactMasterResponse; import com.billpaymentservice.bbps.dto.response.CustomParamResp; import com.billpaymentservice.bbps.entites.BBPSMerchantValidation; @@ -29,7 +33,6 @@ import com.billpaymentservice.bbps.repository.MerchantRepository; import com.billpaymentservice.bbps.service.MasterDataService; import com.billpaymentservice.bbps.util.BBPSConstant; import com.billpaymentservice.bbps.util.Helper; -import com.billpaymentservice.bbps.util.ResponseParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -46,7 +49,6 @@ public class MasterDataServiceImpl implements MasterDataService { private MerchantRepository merchantRegisterRepo; private HttpClientApi httpClientApi; - private ResponseParser responseParser; private Helper helper; @@ -58,16 +60,17 @@ public class MasterDataServiceImpl implements MasterDataService { public MasterDataServiceImpl(MerchantRepository merchantRegisterRepo, HttpService httpService, HttpClientApi httpClientApi, - Helper helper, - ResponseParser responseParser) { + Helper helper + ) { this.merchantRegisterRepo = merchantRegisterRepo; this.httpService = httpService; this.httpClientApi = httpClientApi; this.helper = helper; - this.responseParser = responseParser; + + } @Override - public BillerDataResponse getBillerByBillerId(BillerDetailRequest billerDetailRequest) { + public ResponseModel getBillerByBillerId(BillerDetailRequest billerDetailRequest) { String billerId = billerDetailRequest.getBillerId(); String fullUrl = masterRegisterUrl + BBPSConstant.BILLER_DATA_FETCH_URL+billerId; @@ -84,12 +87,21 @@ public class MasterDataServiceImpl implements MasterDataService { new TypeReference>() { }); if (!dataMap.containsKey("generalResp")) { - throw new CustomException(String.valueOf(dataMap.get("statusCode")), - String.valueOf(dataMap.get("status")), String.valueOf(dataMap.get("message")), - String.valueOf(dataMap.get("remarks"))); + throw new CustomException(String.valueOf(dataMap.get("message")), // message + String.valueOf(dataMap.get("status")), // status + Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode (int) + String.valueOf(dataMap.get("remarks")) ); } + BillerDataResponse responseWrapper = objectMapper.convertValue(dataMap, BillerDataResponse.class); - return responseWrapper; + GeneralResp generalResp = responseWrapper.getGeneralResp(); + + ResponseModel responseModel=new ResponseModel( generalResp.getMessage(), + generalResp.getStatus(), + Integer.parseInt(generalResp.getStatusCode()), + responseWrapper); + + return responseModel; } catch (JsonProcessingException e) { log.error("Error parsing responseData JSON: {}", e.getMessage()); @@ -99,54 +111,53 @@ public class MasterDataServiceImpl implements MasterDataService { } @Override - public ResponseEntity> getMasterData(MerchantRequestModel requestModel, - HttpServletRequest request) { - LOGGER.info("Request DTO" + request); + public ResponseModel getMasterData(MasterRequest masterRequest) { + LOGGER.info("Request DTO: {}", masterRequest); - BBPSMerchantValidation merchantValidation = merchantRegisterRepo.findByMid(requestModel.getMid()); - List responseModel = new ArrayList<>(); - // if Start merchant validations - if (Optional.ofNullable(merchantValidation).isPresent()) { - // if Start merchant active check - if (merchantValidation.isActive()) { + String fullUrl = masterRegisterUrl + BBPSConstant.MASTER_CATEGORY_URL + masterRequest.getTenantId(); + LOGGER.info("Calling external API: {}", fullUrl); - LOGGER.info("mid Value: " + requestModel.getMid() + " secret Value: " + requestModel.getSecretKey() - + "txt Value: " + requestModel); - String fullUrl = masterRegisterUrl + BBPSConstant.MASTER_CATEGORY_URL; - HashMap response = httpClientApi.getRequestForPaymentStatus(fullUrl); + Map responseMap = httpService.getRequest(fullUrl); + String responseData = responseMap.get("data"); + LOGGER.info("Response Data: {}", responseData); - LOGGER.info("BBPS bank response data: " + response.get("data") + " code: " + response.get("respCode")); - // if Start merchant cehck response code + ObjectMapper objectMapper = new ObjectMapper(); - if (response.get("respCode") != null && response.get("respCode").toString().contains("200")) { - LOGGER.info("Response -: " + response.get("data")); - String jsonData = response.get("data").toString(); - MasterApiResponse generalResponse = responseParser.parseResponse(jsonData); + try { + Map dataMap = objectMapper.readValue(responseData, new TypeReference>() {}); - LOGGER.info("kkk" + generalResponse.toString()); - // 5️⃣ Prepare API response model + // ✅ Same check as in getBillerByBillerId() + if (!dataMap.containsKey("generalResp")) { + throw new CustomException( + String.valueOf(dataMap.get("message")), // message + String.valueOf(dataMap.get("status")), // status + Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode + String.valueOf(dataMap.get("remarks")) // remarks + ); + } - responseModel.add(generalResponse); + MasterApiResponse responseWrapper = objectMapper.convertValue(dataMap, MasterApiResponse.class); + GeneralResp generalResp = responseWrapper.getGeneralResp(); - } else { - LOGGER.warn("Unexpected response code: " + response.get("respCode")); + ResponseModel responseModel = new ResponseModel( + generalResp.getMessage(), + generalResp.getStatus(), + Integer.parseInt(generalResp.getStatusCode()), + responseWrapper + ); - } - - } else { - LOGGER.info("Merchant Not Active for mid - " + requestModel.getMid()); - throw new AppException("Merchant Not Active", BBPSConstant.CODE_MERCHANT_INACTIVE); - } - } else { - LOGGER.info("Merchant Not Valid for mid - " + requestModel.getMid()); - throw new AppException("Merchant Not Valid", BBPSConstant.CODE_MERCHANT_INVALID); - } - return ResponseEntity.ok(responseModel); + return responseModel; + } catch (JsonProcessingException e) { + log.error("Error parsing responseData JSON: {}", e.getMessage()); + throw new CustomException("Invalid JSON received from API"); + } } + + @Override - public ResponseEntity fetchMasterDataCategoryWise(MerchantRequestModel requestModel, + public ResponseModel fetchMasterDataCategoryWise(MerchantRequestModel requestModel, String category, int pageStart, int pageEnd) { LOGGER.info("Fetching Master Data Category-wise for MID={}, Category={}, PageStart={}, PageEnd={}", requestModel.getMid(), category, pageStart, pageEnd); @@ -173,7 +184,7 @@ public class MasterDataServiceImpl implements MasterDataService { if (response.get("respCode") != null && response.get("respCode").toString().contains("200")) { LOGGER.info("Response -: " + response.get("data")); String jsonData = response.get("data").toString(); - responseModel = responseParser.billerResponse(jsonData); + //responseModel = responseParser.billerResponse(jsonData); LOGGER.info("kkk" + responseModel.toString()); // 5️⃣ Prepare API response model @@ -191,12 +202,12 @@ public class MasterDataServiceImpl implements MasterDataService { LOGGER.info("Merchant Not Valid for mid - " + requestModel.getMid()); throw new AppException("Merchant Not Valid", BBPSConstant.CODE_MERCHANT_INVALID); } - return ResponseEntity.ok(responseModel); + return new ResponseModel(); } @Override - public CustomParamResp getCustomerParamByBillerId(CustomerParamRequest customerParamRequest) { + public ResponseModel getCustomerParamByBillerId(CustomParamRequest customerParamRequest) { String billerId = customerParamRequest.getBillerId(); String fullUrl = masterRegisterUrl + BBPSConstant.CUSTOMPARAM_URL+billerId; @@ -212,12 +223,21 @@ public class MasterDataServiceImpl implements MasterDataService { new TypeReference>() { }); if (!dataMap.containsKey("generalResp")) { - throw new CustomException(String.valueOf(dataMap.get("statusCode")), - String.valueOf(dataMap.get("status")), String.valueOf(dataMap.get("message")), - String.valueOf(dataMap.get("remarks"))); + throw new CustomException(String.valueOf(dataMap.get("message")), // message + String.valueOf(dataMap.get("status")), // status + Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode (int) + String.valueOf(dataMap.get("remarks")) ); } + CustomParamResp responseWrapper = objectMapper.convertValue(dataMap, CustomParamResp.class); - return responseWrapper; + GeneralResp generalResp = responseWrapper.getGeneralResp(); + + ResponseModel responseModel=new ResponseModel( generalResp.getMessage(), + generalResp.getStatus(), + Integer.parseInt(generalResp.getStatusCode()), + responseWrapper); + + return responseModel; } catch (JsonProcessingException e) { log.error("Error parsing responseData JSON: {}", e.getMessage()); throw new CustomException("Invalid JSON received from API"); @@ -226,8 +246,8 @@ public class MasterDataServiceImpl implements MasterDataService { } @Override - public ContactMasterResponse getContactMaster(ContactMasterRequest contactMasterRequest) { + public ResponseModel getContactMaster(ContactMasterRequest contactMasterRequest) { - return null; + return new ResponseModel(); } } diff --git a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java index 89b6dfe..91fefa8 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java +++ b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java @@ -24,7 +24,7 @@ public class BBPSConstant { public static final String ENCRYPTION_FAILED = "Error in encrypting order request"; public static final String BILLER_URL = "/billers"; - public static final String MASTER_CATEGORY_URL = "/categories-master?tenantId=FE41"; + public static final String MASTER_CATEGORY_URL = "/categories-master?tenantId="; public static final String BILLER_DATA_FETCH_URL="/billersById?billerId="; public static final String CUSTOMPARAM_URL="/customerParam?billerId="; diff --git a/src/main/java/com/billpaymentservice/bbps/util/Helper.java b/src/main/java/com/billpaymentservice/bbps/util/Helper.java index f4fce2e..0580122 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/Helper.java +++ b/src/main/java/com/billpaymentservice/bbps/util/Helper.java @@ -48,4 +48,27 @@ public class Helper { LOGGER.info("Merchant is valid and active for MID: {}", requestModel.getMid()); return true; } + public String validateMerchant(Object requestModel) { + +// if (requestModel == null || requestModel.getMid() == null) { +// LOGGER.warn("MerchantRequestModel or MID is null"); +// return "Invalid request: MID is required"; +// } +// +// // Fetch merchant details +// BBPSMerchantValidation merchant = merchantRegisterRepo.findByMid(requestModel.getMid()); +// +// if (merchant == null) { +// LOGGER.warn("Merchant not found for MID: {}", requestModel.getMid()); +// return "Merchant not found"; +// } +// +// if (!Boolean.TRUE.equals(merchant.isActive())) { +// LOGGER.warn("Merchant inactive for MID: {}", requestModel.getMid()); +// return "Merchant inactive"; +// } +// +// LOGGER.info("Merchant is valid and active for MID: {}", requestModel.getMid()); + return "Valid"; // Success message + } } diff --git a/src/main/java/com/billpaymentservice/bbps/util/ResponseParser.java b/src/main/java/com/billpaymentservice/bbps/util/ResponseParser.java deleted file mode 100644 index daa78ad..0000000 --- a/src/main/java/com/billpaymentservice/bbps/util/ResponseParser.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.billpaymentservice.bbps.util; - -import java.util.ArrayList; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import com.billpaymentservice.bbps.dto.FaqDetailsResponse; -import com.billpaymentservice.bbps.dto.GeneralResponse; -import com.billpaymentservice.bbps.dto.MasterApiResponse; -import com.billpaymentservice.bbps.dto.MasterCategoryBillerResponse; -import com.billpaymentservice.bbps.dto.response.BillerResponse; -import com.billpaymentservice.bbps.dto.response.CategoryResponse; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -@Component -public class ResponseParser { - - private static final Logger LOGGER = LoggerFactory.getLogger(ResponseParser.class); - - private final ObjectMapper mapper = new ObjectMapper(); - - public MasterApiResponse parseResponse(String jsonResponse) { - MasterApiResponse finalResponse = new MasterApiResponse(); - ObjectMapper mapper = new ObjectMapper(); - - try { - JsonNode root = mapper.readTree(jsonResponse); - - // ✅ Parse generalResp correctly - JsonNode generalRespNode = root.path("generalResp"); - GeneralResponse generalResp = new GeneralResponse(); - generalResp.setStatusCode(generalRespNode.path("statusCode").asText()); - generalResp.setStatus(generalRespNode.path("status").asText()); - generalResp.setMessage(generalRespNode.path("message").asText()); - generalResp.setRemarks(generalRespNode.path("remarks").asText()); - finalResponse.setGeneralResp(generalResp); - - // ✅ Parse categoryRespList - List categoryList = new ArrayList<>(); - JsonNode categoryArray = root.path("categoryRespList"); - - if (categoryArray.isArray()) { - for (JsonNode node : categoryArray) { - CategoryResponse data = new CategoryResponse(); - data.setCategoryId(node.path("categoryId").asText()); - data.setCategoryName(node.path("categoryName").asText()); - data.setCategoryIcon(node.path("categoryIcon").asText()); - data.setCategoryDomain(node.path("categoryDomain").asText("")); - data.setButtonName(node.path("buttonName").asText("")); - data.setTextArea(node.path("textArea").asText("")); - - // Parse faqDetailsList - List faqList = new ArrayList<>(); - JsonNode faqArray = node.path("faqDetailsList"); - if (faqArray.isArray()) { - for (JsonNode faqNode : faqArray) { - FaqDetailsResponse faq = new FaqDetailsResponse(); - faq.setName(faqNode.path("name").asText()); - faq.setValue(faqNode.path("value").asText()); - faqList.add(faq); - } - } - data.setFaqDetailsList(faqList); - categoryList.add(data); - } - } - - finalResponse.setCategoryRespList(categoryList); - - } catch (Exception e) { - throw new RuntimeException("Failed to parse BBPS master API response", e); - } - - return finalResponse; - } - - public BillerResponse billerResponse(String jsonResponse) { - BillerResponse billerResponse = new BillerResponse(); - - try { - JsonNode root = mapper.readTree(jsonResponse); - - // ✅ Pagination info - billerResponse.setPageNo(root.path("pageNo").asInt()); - billerResponse.setPageSize(root.path("pageSize").asInt()); - billerResponse.setTotalElements(root.path("totalElements").asLong()); - billerResponse.setTotalPages(root.path("totalPages").asInt()); - - // ✅ General Response Info - JsonNode generalNode = root.path("generalResp"); - GeneralResponse generalResp = new GeneralResponse(); - generalResp.setStatusCode(generalNode.path("statusCode").asText()); - generalResp.setStatus(generalNode.path("status").asText()); - generalResp.setMessage(generalNode.path("message").asText()); - generalResp.setRemarks(generalNode.path("remarks").asText()); - billerResponse.setGeneralResp(generalResp); - - // ✅ Parse biller list - List billerList = new ArrayList<>(); - JsonNode billerArray = root.path("billerResp"); - - if (billerArray.isArray()) { - for (JsonNode billerNode : billerArray) { - MasterCategoryBillerResponse biller = new MasterCategoryBillerResponse(); - biller.setBillerId(billerNode.path("billerId").asText()); - biller.setBillerName(billerNode.path("billerName").asText()); - biller.setBillerType(billerNode.path("billerType").asText()); - biller.setBillerCategory(billerNode.path("billerCategory").asText()); - biller.setBillerCoverage(billerNode.path("billerCoverage").asText()); - biller.setBillerResponseType(billerNode.path("billerResponseType").asText()); - biller.setBillerDescription(billerNode.path("billerDescription").asText()); - biller.setPlanMDMRequirement(billerNode.path("planMDMRequirement").asText()); - biller.setAdhocBiller(billerNode.path("adhocBiller").asText()); - biller.setPaymentAmountExactness(billerNode.path("paymentAmountExactness").asText()); - billerList.add(biller); - } - } - - billerResponse.setBillerResp(billerList); - - LOGGER.info("✅ Successfully parsed BillerResponse with {} billers", billerList.size()); - - } catch (Exception e) { - LOGGER.error("❌ Error parsing BillerResponse: {}", e.getMessage(), e); - throw new RuntimeException("Failed to parse BBPS Biller API response", e); - } - - return billerResponse; - } -}