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 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<BillerDataResponse> getBillerDetails(
|
||||
@Validated @RequestBody BillerDetailRequest billerDetailRequest) {
|
||||
public ResponseEntity<ResponseModel> 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<ContactMasterResponse> getContactMaster(
|
||||
public ResponseEntity<ResponseModel> 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<CustomParamResp> getBillerDetails(
|
||||
@Validated @RequestBody CustomerParamRequest customerParamRequest) {
|
||||
public ResponseEntity<ResponseModel> 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<List<MasterApiResponse>> 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<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;
|
||||
|
||||
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;
|
||||
|
||||
@@ -17,7 +17,7 @@ import lombok.ToString;
|
||||
@ToString
|
||||
public class MasterApiResponse {
|
||||
|
||||
private GeneralResponse generalResp;
|
||||
private GeneralResp generalResp;
|
||||
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;
|
||||
|
||||
import com.billpaymentservice.bbps.entites.BaseClass;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
+1
-3
@@ -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;
|
||||
@@ -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
|
||||
@Setter
|
||||
public class MerchantRequestModel {
|
||||
public class MerchantRequestModel {
|
||||
|
||||
private String mid;
|
||||
private String secretKey;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<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;
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<GeneralResp> handleCustomException(CustomException ex) {
|
||||
return new ResponseEntity<>(ex.getGeneralResp(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
public ResponseEntity<ResponseModel> handleCustomException(CustomException ex) {
|
||||
return new ResponseEntity<>(ex.getResponseModel(), HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<List<MasterApiResponse>> getMasterData(MerchantRequestModel requestModel,
|
||||
HttpServletRequest request);
|
||||
public ResponseModel getMasterData(MasterRequest masterRequest);
|
||||
|
||||
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);
|
||||
|
||||
// Set response values in map
|
||||
responseMap.put("respCode", response.getStatusCode());
|
||||
responseMap.put("data", responseBody);
|
||||
|
||||
} catch (HttpClientErrorException | HttpServerErrorException httpEx) {
|
||||
|
||||
@@ -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<Map<String, Object>>() {
|
||||
});
|
||||
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<List<MasterApiResponse>> 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<MasterApiResponse> 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<String, Object> response = httpClientApi.getRequestForPaymentStatus(fullUrl);
|
||||
Map<String, String> 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<String, Object> dataMap = objectMapper.readValue(responseData, new TypeReference<Map<String, Object>>() {});
|
||||
|
||||
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<BillerResponse> 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<Map<String, Object>>() {
|
||||
});
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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