135 lines
7.6 KiB
Java
135 lines
7.6 KiB
Java
package com.billpaymentservice.bbps.controller;
|
|
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.CrossOrigin;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import com.billpaymentservice.bbps.dto.ResponseModel;
|
|
import com.billpaymentservice.bbps.dto.request.BillFetchByBillIdRequest;
|
|
import com.billpaymentservice.bbps.dto.request.BillFetchByClientIdRequest;
|
|
import com.billpaymentservice.bbps.dto.request.BillValidateByClientIdRequest;
|
|
import com.billpaymentservice.bbps.dto.request.FetchBillRequest;
|
|
import com.billpaymentservice.bbps.dto.request.FetchBillValidatestRequest;
|
|
import com.billpaymentservice.bbps.dto.response.BillDataResponse;
|
|
import com.billpaymentservice.bbps.dto.response.FetchBillValidateResponse;
|
|
import com.billpaymentservice.bbps.service.AgentService;
|
|
import com.billpaymentservice.bbps.util.ApiDocCommonResponses;
|
|
import com.billpaymentservice.bbps.util.BBPSConstant;
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.media.Content;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
|
|
|
@RestController
|
|
@RequestMapping("/agent")
|
|
@CrossOrigin(origins = "*")
|
|
public class AgentController {
|
|
|
|
private final AgentService agentService;
|
|
|
|
public AgentController(AgentService agentService) {
|
|
this.agentService = agentService;
|
|
}
|
|
|
|
@PostMapping(value = "/requestBillFetch")
|
|
@Operation(summary = "Initiate bill fetch request", description = "This API initiates a bill fetch request for the given customer/biller details.")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill fetch request initiated successfully", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> requestBillFetch(@Validated @RequestBody FetchBillRequest fetchBillRequest) {
|
|
|
|
ResponseModel response = agentService.initiateBillFetch(fetchBillRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/fetchBillById")
|
|
@Operation(summary = "Fetch bill details by bill ID", description = "This API retrieves bill details from the BBPS system using the provided bill ID.")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill details fetched successfully by bill ID", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> fetchBillById(
|
|
@Validated @RequestBody BillFetchByBillIdRequest billFetchByBillIdRequest) {
|
|
|
|
ResponseModel response = agentService.fetchBillById(billFetchByBillIdRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/requestBillValidate")
|
|
@Operation(summary = "Initiate bill validation request", description = "This API validates customer input and bill details .")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill validation initiated successfully", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> requestBillValidate(
|
|
@Validated @RequestBody FetchBillValidatestRequest fetchBillValidateRequest) {
|
|
|
|
ResponseModel response = agentService.initiateBillValidate(fetchBillValidateRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/requestBillValidateByBillId")
|
|
@Operation(summary = "Bill validate by details by bill ID", description = "This API retrieves bill details from BBPS using the provided bill ID.")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill details fetched successfully by bill ID", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> requestBillByBillId(
|
|
@Validated @RequestBody BillFetchByBillIdRequest billRequest) {
|
|
|
|
ResponseModel response = agentService.initiateBillValidateByBillId(billRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/fetchBillByClientReqId")
|
|
@Operation(summary = "Fetch bill details by client request ID", description = "This API fetches bill details using the client-generated request ID (clientReqId).")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill details fetched successfully using client request ID", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> fetchBillByClientReqId(
|
|
@Validated @RequestBody BillFetchByClientIdRequest billFetchByClientIdRequest) {
|
|
|
|
ResponseModel response = agentService.fetchBillByClientReqId(billFetchByClientIdRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/fetchBillValidateByClientReqId")
|
|
@Operation(summary = "Fetch bill details by client request ID", description = "This API retrieves bill details using the client's request ID (clientReqId).")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Bill details fetched successfully using client request ID", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> fetchBillValidateByClientReqId(
|
|
@Validated @RequestBody BillValidateByClientIdRequest billValidateByClientIdRequest) {
|
|
|
|
ResponseModel response = agentService.fetchBillValidateByClientReqId(billValidateByClientIdRequest);
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@PostMapping(value = "/callback/billFetch")
|
|
@Operation(summary = "Handle bill fetch callback", description = "This callback API is invoked by BBPS/Biller to send bill fetch response.")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Callback received and processed successfully", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> handleBillFetchCallback(@RequestBody BillDataResponse billDataResponse) {
|
|
ResponseModel genralResp = agentService.processBillFetchCallback(billDataResponse);
|
|
// Return a response indicating successful receipt
|
|
return ResponseEntity.ok(genralResp);
|
|
}
|
|
|
|
@PostMapping(value = "/callback/billValidate")
|
|
@Operation(summary = "Handle bill validate callback", description = "This callback API is triggered by BBPS/Biller to send bill validation response.")
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = BBPSConstant.OK_STR, description = "Callback received and processed successfully", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ResponseModel.class))) })
|
|
@ApiDocCommonResponses
|
|
public ResponseEntity<ResponseModel> handleBillValidateCallback(
|
|
@RequestBody FetchBillValidateResponse fetchBillValidateResponse) {
|
|
ResponseModel genralResp = agentService.processBillValidateCallback(fetchBillValidateResponse);
|
|
// Return a response indicating successful receipt
|
|
return ResponseEntity.ok(genralResp);
|
|
}
|
|
}
|