for the review
This commit is contained in:
@@ -16,9 +16,11 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.billpaymentservice.bbps.dto.MasterApiResponse;
|
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.BillerDetailRequest;
|
||||||
import com.billpaymentservice.bbps.dto.request.ContactMasterRequest;
|
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.request.MerchantRequestModel;
|
||||||
import com.billpaymentservice.bbps.dto.response.BillerDataResponse;
|
import com.billpaymentservice.bbps.dto.response.BillerDataResponse;
|
||||||
import com.billpaymentservice.bbps.dto.response.BillerResponse;
|
import com.billpaymentservice.bbps.dto.response.BillerResponse;
|
||||||
@@ -41,8 +43,7 @@ public class MasterDataController {
|
|||||||
}
|
}
|
||||||
/**Get Details of the biller by billId **/
|
/**Get Details of the biller by billId **/
|
||||||
@PostMapping(value = "/getBillerDetails", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = "/getBillerDetails", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
public ResponseEntity<BillerDataResponse> getBillerDetails(
|
public ResponseEntity<ResponseModel> getBillerDetails(@Validated @RequestBody BillerDetailRequest billerDetailRequest) {
|
||||||
@Validated @RequestBody BillerDetailRequest billerDetailRequest) {
|
|
||||||
|
|
||||||
log.info("Received biller details request for billerId: {}", billerDetailRequest.getBillerId());
|
log.info("Received biller details request for billerId: {}", billerDetailRequest.getBillerId());
|
||||||
|
|
||||||
@@ -50,7 +51,7 @@ public class MasterDataController {
|
|||||||
}
|
}
|
||||||
/**Get Master Contact**/
|
/**Get Master Contact**/
|
||||||
@PostMapping(value = "/getContactMasterResponse", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = "/getContactMasterResponse", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
public ResponseEntity<ContactMasterResponse> getContactMaster(
|
public ResponseEntity<ResponseModel> getContactMaster(
|
||||||
@Validated @RequestBody ContactMasterRequest contactMasterRequest ) {
|
@Validated @RequestBody ContactMasterRequest contactMasterRequest ) {
|
||||||
|
|
||||||
return ResponseEntity.ok(masterDataService.getContactMaster(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 **/
|
/** 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)
|
@PostMapping(value = "/getCustomerParamDetails", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
public ResponseEntity<CustomParamResp> getBillerDetails(
|
public ResponseEntity<ResponseModel> getBillerDetails(
|
||||||
@Validated @RequestBody CustomerParamRequest customerParamRequest) {
|
@Validated @RequestBody CustomParamRequest customerParamRequest) {
|
||||||
|
|
||||||
log.info("Received biller details request for billerId: {}",customerParamRequest.getBillerId() );
|
log.info("Received biller details request for billerId: {}",customerParamRequest.getBillerId() );
|
||||||
|
|
||||||
return ResponseEntity.ok(masterDataService.getCustomerParamByBillerId(customerParamRequest));
|
return ResponseEntity.ok(masterDataService.getCustomerParamByBillerId(customerParamRequest));
|
||||||
}
|
}
|
||||||
|
@PostMapping("/getAllMastersData")
|
||||||
/** Get All Masters API Fetch All Category from BBPS URL **/
|
public ResponseModel fetchMasterData(@Validated @RequestBody MasterRequest masterRequest) {
|
||||||
@GetMapping("/getAllMasters")
|
return masterDataService.getMasterData(masterRequest);
|
||||||
public ResponseEntity<List<MasterApiResponse>> fetchMasterData(
|
|
||||||
@Validated @RequestBody MerchantRequestModel requestModel, HttpServletRequest request) {
|
|
||||||
log.info("Fetching Master Data Registered URL");
|
|
||||||
return masterDataService.getMasterData(requestModel, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get Master Category Wise API Fetch Category Wise from BBPS URL **/
|
|
||||||
@GetMapping("/getMasterCategoryWise")
|
|
||||||
public ResponseEntity<BillerResponse> 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<Tag> tags;
|
||||||
|
}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
package com.billpaymentservice.bbps.dto;
|
package com.billpaymentservice.bbps.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class GeneralResp {
|
public class GeneralResp {
|
||||||
private String statusCode;
|
private String statusCode;
|
||||||
private String status;
|
private String status;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import lombok.ToString;
|
|||||||
@ToString
|
@ToString
|
||||||
public class MasterApiResponse {
|
public class MasterApiResponse {
|
||||||
|
|
||||||
private GeneralResponse generalResp;
|
private GeneralResp generalResp;
|
||||||
private List<CategoryResponse> categoryRespList;
|
private List<CategoryResponse> categoryRespList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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<T> {
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.billpaymentservice.bbps.dto.request;
|
package com.billpaymentservice.bbps.dto.request;
|
||||||
|
|
||||||
import com.billpaymentservice.bbps.entites.BaseClass;
|
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|||||||
+1
-3
@@ -1,7 +1,5 @@
|
|||||||
package com.billpaymentservice.bbps.dto.request;
|
package com.billpaymentservice.bbps.dto.request;
|
||||||
|
|
||||||
import com.billpaymentservice.bbps.entites.BaseClass;
|
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -12,7 +10,7 @@ import lombok.Setter;
|
|||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class CustomerParamRequest extends BaseClass {
|
public class CustomParamRequest extends BaseClass {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private String billerId;
|
private String billerId;
|
||||||
@@ -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<Tag> deviceBlockTags; // M
|
||||||
|
private CustomerParamsRequest customerParamsRequest; // M
|
||||||
|
private List<RemitterIdentity> remitterIdentity; // O
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import lombok.Setter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class MerchantRequestModel {
|
public class MerchantRequestModel {
|
||||||
|
|
||||||
private String mid;
|
private String mid;
|
||||||
private String secretKey;
|
private String secretKey;
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package com.billpaymentservice.bbps.dto.response;
|
|||||||
|
|
||||||
import com.billpaymentservice.bbps.dto.BillerDAO;
|
import com.billpaymentservice.bbps.dto.BillerDAO;
|
||||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -11,7 +13,7 @@ import lombok.Setter;
|
|||||||
@Setter
|
@Setter
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class BillerDataResponse {
|
public class BillerDataResponse {
|
||||||
private BillerDAO billerDAO;
|
private BillerDAO billerDAO;
|
||||||
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||||
private GeneralResp generalResp;
|
private GeneralResp generalResp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.billpaymentservice.bbps.dto.ContactMaster;
|
|||||||
import com.billpaymentservice.bbps.dto.CustomParam;
|
import com.billpaymentservice.bbps.dto.CustomParam;
|
||||||
import com.billpaymentservice.bbps.dto.CustomerParam;
|
import com.billpaymentservice.bbps.dto.CustomerParam;
|
||||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -17,6 +18,7 @@ import lombok.Setter;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CustomParamResp {
|
public class CustomParamResp {
|
||||||
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||||
private GeneralResp generalResp;
|
private GeneralResp generalResp;
|
||||||
private List<CustomParam> customParamResp;
|
private List<CustomParam> customParamResp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,29 +1,36 @@
|
|||||||
package com.billpaymentservice.bbps.exception;
|
package com.billpaymentservice.bbps.exception;
|
||||||
|
import com.billpaymentservice.bbps.dto.ResponseModel;
|
||||||
|
|
||||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
|
||||||
|
|
||||||
public class CustomException extends RuntimeException {
|
public class CustomException extends RuntimeException {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private final GeneralResp generalResp;
|
private final ResponseModel responseModel;
|
||||||
|
|
||||||
public CustomException(String statusCode, String status,String message,String remark) {
|
public CustomException(String message, String status, int statusCode, String remarks) {
|
||||||
super(message);
|
super(message);
|
||||||
this.generalResp = new GeneralResp();
|
this.responseModel = new ResponseModel();
|
||||||
this.generalResp.setStatusCode(statusCode);
|
this.responseModel.setMessage(message);
|
||||||
this.generalResp.setStatus(status);
|
this.responseModel.setStatus(status);
|
||||||
this.generalResp.setMessage(message);
|
this.responseModel.setStatusCode(statusCode);
|
||||||
this.generalResp.setRemarks(remark);
|
this.responseModel.setData(null);
|
||||||
|
this.responseModel.setDuplicateData(remarks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResponseModel getResponseModel() {
|
||||||
|
return responseModel;
|
||||||
}
|
}
|
||||||
public CustomException(String message) {
|
public CustomException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
this.generalResp = new GeneralResp();
|
this.responseModel = new ResponseModel();
|
||||||
this.generalResp.setStatusCode("500");
|
this.responseModel.setMessage(message);
|
||||||
this.generalResp.setStatus("Failure");
|
this.responseModel.setStatus("FAILED");
|
||||||
this.generalResp.setMessage(message);
|
this.responseModel.setStatusCode(400);
|
||||||
this.generalResp.setRemarks("");
|
this.responseModel.setData(null);
|
||||||
}
|
this.responseModel.setDuplicateData(null);
|
||||||
public GeneralResp getGeneralResp() {
|
|
||||||
return generalResp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||||
|
import com.billpaymentservice.bbps.dto.ResponseModel;
|
||||||
|
|
||||||
@ControllerAdvice
|
@ControllerAdvice
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
@ExceptionHandler(CustomException.class)
|
@ExceptionHandler(CustomException.class)
|
||||||
public ResponseEntity<GeneralResp> handleCustomException(CustomException ex) {
|
public ResponseEntity<ResponseModel> handleCustomException(CustomException ex) {
|
||||||
return new ResponseEntity<>(ex.getGeneralResp(), HttpStatus.INTERNAL_SERVER_ERROR);
|
return new ResponseEntity<>(ex.getResponseModel(), HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,32 +1,22 @@
|
|||||||
package com.billpaymentservice.bbps.service;
|
package com.billpaymentservice.bbps.service;
|
||||||
|
import com.billpaymentservice.bbps.dto.ResponseModel;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
|
|
||||||
import com.billpaymentservice.bbps.dto.MasterApiResponse;
|
|
||||||
import com.billpaymentservice.bbps.dto.request.BillerDetailRequest;
|
import com.billpaymentservice.bbps.dto.request.BillerDetailRequest;
|
||||||
import com.billpaymentservice.bbps.dto.request.ContactMasterRequest;
|
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.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;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
public interface MasterDataService {
|
public interface MasterDataService {
|
||||||
|
|
||||||
public BillerDataResponse getBillerByBillerId(BillerDetailRequest billerDetailRequest);
|
public ResponseModel getBillerByBillerId(BillerDetailRequest billerDetailRequest);
|
||||||
|
|
||||||
public ResponseEntity<List<MasterApiResponse>> getMasterData(MerchantRequestModel requestModel,
|
public ResponseModel getMasterData(MasterRequest masterRequest);
|
||||||
HttpServletRequest request);
|
|
||||||
|
|
||||||
public ResponseEntity<BillerResponse> 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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ public class HttpClientApi {
|
|||||||
LOGGER.info("Pesapal: Payment Status Response Body: {}", responseBody);
|
LOGGER.info("Pesapal: Payment Status Response Body: {}", responseBody);
|
||||||
|
|
||||||
// Set response values in map
|
// Set response values in map
|
||||||
responseMap.put("respCode", response.getStatusCode());
|
|
||||||
responseMap.put("data", responseBody);
|
responseMap.put("data", responseBody);
|
||||||
|
|
||||||
} catch (HttpClientErrorException | HttpServerErrorException httpEx) {
|
} catch (HttpClientErrorException | HttpServerErrorException httpEx) {
|
||||||
|
|||||||
@@ -13,13 +13,17 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||||
import com.billpaymentservice.bbps.dto.MasterApiResponse;
|
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.BillerDetailRequest;
|
||||||
import com.billpaymentservice.bbps.dto.request.ContactMasterRequest;
|
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.request.MerchantRequestModel;
|
||||||
import com.billpaymentservice.bbps.dto.response.BillerDataResponse;
|
import com.billpaymentservice.bbps.dto.response.BillerDataResponse;
|
||||||
import com.billpaymentservice.bbps.dto.response.BillerResponse;
|
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.ContactMasterResponse;
|
||||||
import com.billpaymentservice.bbps.dto.response.CustomParamResp;
|
import com.billpaymentservice.bbps.dto.response.CustomParamResp;
|
||||||
import com.billpaymentservice.bbps.entites.BBPSMerchantValidation;
|
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.service.MasterDataService;
|
||||||
import com.billpaymentservice.bbps.util.BBPSConstant;
|
import com.billpaymentservice.bbps.util.BBPSConstant;
|
||||||
import com.billpaymentservice.bbps.util.Helper;
|
import com.billpaymentservice.bbps.util.Helper;
|
||||||
import com.billpaymentservice.bbps.util.ResponseParser;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@@ -46,7 +49,6 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
|
|
||||||
private MerchantRepository merchantRegisterRepo;
|
private MerchantRepository merchantRegisterRepo;
|
||||||
private HttpClientApi httpClientApi;
|
private HttpClientApi httpClientApi;
|
||||||
private ResponseParser responseParser;
|
|
||||||
private Helper helper;
|
private Helper helper;
|
||||||
|
|
||||||
|
|
||||||
@@ -58,16 +60,17 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
public MasterDataServiceImpl(MerchantRepository merchantRegisterRepo,
|
public MasterDataServiceImpl(MerchantRepository merchantRegisterRepo,
|
||||||
HttpService httpService,
|
HttpService httpService,
|
||||||
HttpClientApi httpClientApi,
|
HttpClientApi httpClientApi,
|
||||||
Helper helper,
|
Helper helper
|
||||||
ResponseParser responseParser) {
|
) {
|
||||||
this.merchantRegisterRepo = merchantRegisterRepo;
|
this.merchantRegisterRepo = merchantRegisterRepo;
|
||||||
this.httpService = httpService;
|
this.httpService = httpService;
|
||||||
this.httpClientApi = httpClientApi;
|
this.httpClientApi = httpClientApi;
|
||||||
this.helper = helper;
|
this.helper = helper;
|
||||||
this.responseParser = responseParser;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public BillerDataResponse getBillerByBillerId(BillerDetailRequest billerDetailRequest) {
|
public ResponseModel getBillerByBillerId(BillerDetailRequest billerDetailRequest) {
|
||||||
|
|
||||||
String billerId = billerDetailRequest.getBillerId();
|
String billerId = billerDetailRequest.getBillerId();
|
||||||
String fullUrl = masterRegisterUrl + BBPSConstant.BILLER_DATA_FETCH_URL+billerId;
|
String fullUrl = masterRegisterUrl + BBPSConstant.BILLER_DATA_FETCH_URL+billerId;
|
||||||
@@ -84,12 +87,21 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
new TypeReference<Map<String, Object>>() {
|
new TypeReference<Map<String, Object>>() {
|
||||||
});
|
});
|
||||||
if (!dataMap.containsKey("generalResp")) {
|
if (!dataMap.containsKey("generalResp")) {
|
||||||
throw new CustomException(String.valueOf(dataMap.get("statusCode")),
|
throw new CustomException(String.valueOf(dataMap.get("message")), // message
|
||||||
String.valueOf(dataMap.get("status")), String.valueOf(dataMap.get("message")),
|
String.valueOf(dataMap.get("status")), // status
|
||||||
String.valueOf(dataMap.get("remarks")));
|
Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode (int)
|
||||||
|
String.valueOf(dataMap.get("remarks")) );
|
||||||
}
|
}
|
||||||
|
|
||||||
BillerDataResponse responseWrapper = objectMapper.convertValue(dataMap, BillerDataResponse.class);
|
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) {
|
} catch (JsonProcessingException e) {
|
||||||
log.error("Error parsing responseData JSON: {}", e.getMessage());
|
log.error("Error parsing responseData JSON: {}", e.getMessage());
|
||||||
@@ -99,54 +111,53 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<List<MasterApiResponse>> getMasterData(MerchantRequestModel requestModel,
|
public ResponseModel getMasterData(MasterRequest masterRequest) {
|
||||||
HttpServletRequest request) {
|
LOGGER.info("Request DTO: {}", masterRequest);
|
||||||
LOGGER.info("Request DTO" + request);
|
|
||||||
|
|
||||||
BBPSMerchantValidation merchantValidation = merchantRegisterRepo.findByMid(requestModel.getMid());
|
String fullUrl = masterRegisterUrl + BBPSConstant.MASTER_CATEGORY_URL + masterRequest.getTenantId();
|
||||||
List<MasterApiResponse> responseModel = new ArrayList<>();
|
LOGGER.info("Calling external API: {}", fullUrl);
|
||||||
// if Start merchant validations
|
|
||||||
if (Optional.ofNullable(merchantValidation).isPresent()) {
|
|
||||||
// if Start merchant active check
|
|
||||||
if (merchantValidation.isActive()) {
|
|
||||||
|
|
||||||
LOGGER.info("mid Value: " + requestModel.getMid() + " secret Value: " + requestModel.getSecretKey()
|
Map<String, String> responseMap = httpService.getRequest(fullUrl);
|
||||||
+ "txt Value: " + requestModel);
|
String responseData = responseMap.get("data");
|
||||||
String fullUrl = masterRegisterUrl + BBPSConstant.MASTER_CATEGORY_URL;
|
LOGGER.info("Response Data: {}", responseData);
|
||||||
HashMap<String, Object> response = httpClientApi.getRequestForPaymentStatus(fullUrl);
|
|
||||||
|
|
||||||
LOGGER.info("BBPS bank response data: " + response.get("data") + " code: " + response.get("respCode"));
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
// if Start merchant cehck response code
|
|
||||||
|
|
||||||
if (response.get("respCode") != null && response.get("respCode").toString().contains("200")) {
|
try {
|
||||||
LOGGER.info("Response -: " + response.get("data"));
|
Map<String, Object> dataMap = objectMapper.readValue(responseData, new TypeReference<Map<String, Object>>() {});
|
||||||
String jsonData = response.get("data").toString();
|
|
||||||
MasterApiResponse generalResponse = responseParser.parseResponse(jsonData);
|
|
||||||
|
|
||||||
LOGGER.info("kkk" + generalResponse.toString());
|
// ✅ Same check as in getBillerByBillerId()
|
||||||
// 5️⃣ Prepare API response model
|
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 {
|
ResponseModel responseModel = new ResponseModel(
|
||||||
LOGGER.warn("Unexpected response code: " + response.get("respCode"));
|
generalResp.getMessage(),
|
||||||
|
generalResp.getStatus(),
|
||||||
|
Integer.parseInt(generalResp.getStatusCode()),
|
||||||
|
responseWrapper
|
||||||
|
);
|
||||||
|
|
||||||
}
|
return responseModel;
|
||||||
|
|
||||||
} 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);
|
|
||||||
|
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
log.error("Error parsing responseData JSON: {}", e.getMessage());
|
||||||
|
throw new CustomException("Invalid JSON received from API");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<BillerResponse> fetchMasterDataCategoryWise(MerchantRequestModel requestModel,
|
public ResponseModel fetchMasterDataCategoryWise(MerchantRequestModel requestModel,
|
||||||
String category, int pageStart, int pageEnd) {
|
String category, int pageStart, int pageEnd) {
|
||||||
LOGGER.info("Fetching Master Data Category-wise for MID={}, Category={}, PageStart={}, PageEnd={}",
|
LOGGER.info("Fetching Master Data Category-wise for MID={}, Category={}, PageStart={}, PageEnd={}",
|
||||||
requestModel.getMid(), 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")) {
|
if (response.get("respCode") != null && response.get("respCode").toString().contains("200")) {
|
||||||
LOGGER.info("Response -: " + response.get("data"));
|
LOGGER.info("Response -: " + response.get("data"));
|
||||||
String jsonData = response.get("data").toString();
|
String jsonData = response.get("data").toString();
|
||||||
responseModel = responseParser.billerResponse(jsonData);
|
//responseModel = responseParser.billerResponse(jsonData);
|
||||||
|
|
||||||
LOGGER.info("kkk" + responseModel.toString());
|
LOGGER.info("kkk" + responseModel.toString());
|
||||||
// 5️⃣ Prepare API response model
|
// 5️⃣ Prepare API response model
|
||||||
@@ -191,12 +202,12 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
LOGGER.info("Merchant Not Valid for mid - " + requestModel.getMid());
|
LOGGER.info("Merchant Not Valid for mid - " + requestModel.getMid());
|
||||||
throw new AppException("Merchant Not Valid", BBPSConstant.CODE_MERCHANT_INVALID);
|
throw new AppException("Merchant Not Valid", BBPSConstant.CODE_MERCHANT_INVALID);
|
||||||
}
|
}
|
||||||
return ResponseEntity.ok(responseModel);
|
return new ResponseModel();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CustomParamResp getCustomerParamByBillerId(CustomerParamRequest customerParamRequest) {
|
public ResponseModel getCustomerParamByBillerId(CustomParamRequest customerParamRequest) {
|
||||||
String billerId = customerParamRequest.getBillerId();
|
String billerId = customerParamRequest.getBillerId();
|
||||||
String fullUrl = masterRegisterUrl + BBPSConstant.CUSTOMPARAM_URL+billerId;
|
String fullUrl = masterRegisterUrl + BBPSConstant.CUSTOMPARAM_URL+billerId;
|
||||||
|
|
||||||
@@ -212,12 +223,21 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
new TypeReference<Map<String, Object>>() {
|
new TypeReference<Map<String, Object>>() {
|
||||||
});
|
});
|
||||||
if (!dataMap.containsKey("generalResp")) {
|
if (!dataMap.containsKey("generalResp")) {
|
||||||
throw new CustomException(String.valueOf(dataMap.get("statusCode")),
|
throw new CustomException(String.valueOf(dataMap.get("message")), // message
|
||||||
String.valueOf(dataMap.get("status")), String.valueOf(dataMap.get("message")),
|
String.valueOf(dataMap.get("status")), // status
|
||||||
String.valueOf(dataMap.get("remarks")));
|
Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode (int)
|
||||||
|
String.valueOf(dataMap.get("remarks")) );
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomParamResp responseWrapper = objectMapper.convertValue(dataMap, CustomParamResp.class);
|
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) {
|
} catch (JsonProcessingException e) {
|
||||||
log.error("Error parsing responseData JSON: {}", e.getMessage());
|
log.error("Error parsing responseData JSON: {}", e.getMessage());
|
||||||
throw new CustomException("Invalid JSON received from API");
|
throw new CustomException("Invalid JSON received from API");
|
||||||
@@ -226,8 +246,8 @@ public class MasterDataServiceImpl implements MasterDataService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ContactMasterResponse getContactMaster(ContactMasterRequest contactMasterRequest) {
|
public ResponseModel getContactMaster(ContactMasterRequest contactMasterRequest) {
|
||||||
|
|
||||||
return null;
|
return new ResponseModel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class BBPSConstant {
|
|||||||
public static final String ENCRYPTION_FAILED = "Error in encrypting order request";
|
public static final String ENCRYPTION_FAILED = "Error in encrypting order request";
|
||||||
|
|
||||||
public static final String BILLER_URL = "/billers";
|
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 BILLER_DATA_FETCH_URL="/billersById?billerId=";
|
||||||
public static final String CUSTOMPARAM_URL="/customerParam?billerId=";
|
public static final String CUSTOMPARAM_URL="/customerParam?billerId=";
|
||||||
|
|||||||
@@ -48,4 +48,27 @@ public class Helper {
|
|||||||
LOGGER.info("Merchant is valid and active for MID: {}", requestModel.getMid());
|
LOGGER.info("Merchant is valid and active for MID: {}", requestModel.getMid());
|
||||||
return true;
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<CategoryResponse> 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<FaqDetailsResponse> 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<MasterCategoryBillerResponse> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user