You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

723 lines
37 KiB

package com.gcc.communityHall.paymentService.controller;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.security.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gcc.communityHall.configuration.EncryptionUtil;
import com.gcc.communityHall.entity.*;
import com.gcc.communityHall.others.AppConfig;
//import com.gcc.communityHall.repository.ErpPostDataRepository;
import com.gcc.communityHall.service.PaymentsService;
import org.apache.tomcat.util.json.JSONParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigurationPackage;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.gcc.communityHall.entity.BookingDetails.BookingStatus;
import com.gcc.communityHall.entity.BookingDetails.RefundStatus;
import com.gcc.communityHall.paymentService.config.PaymentConfig;
import com.gcc.communityHall.paymentService.entity.TransactionResponse;
import com.gcc.communityHall.paymentService.repository.TransactionResponseRepository;
import com.gcc.communityHall.paymentService.service.PaymentGatewayService;
import com.gcc.communityHall.repository.BookingDetailsRepository;
import com.gcc.communityHall.repository.ExtraPaymentsRepository;
import com.gcc.communityHall.repository.PaymentsRepository;
import com.gcc.communityHall.service.Impl.BookingServiceImpl;
import com.gcc.communityHall.service.UserService;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@Controller
@RequestMapping("/communityhall/payment")
public class PaymentController {
// ak
@Autowired
private EncryptionUtil encryptionUtil;
@Autowired
PaymentGatewayService paymentService;
@Autowired
private PaymentConfig paymentConfig;
@Autowired
private BookingServiceImpl bookser;
@Autowired
private TransactionResponseRepository transactionResRepo;
@Autowired
private PaymentsRepository paymentRepo;
@Autowired
private ExtraPaymentsRepository extraPaymentsRepository;
@Autowired
private BookingDetailsRepository bookingDetailsRepository;
@Autowired
private AppConfig appConfig;
// @Autowired
// private ErpPostDataRepository erpPostDataRepository;
@Autowired
private PaymentsService paymentsService;
// ak
@PostMapping(value = "/response")
public String response(Model model, @RequestParam(required = false) String msg) throws NoSuchAlgorithmException {
System.out.println("Payment Response receiving from Payment Gateway...");
String salt = this.paymentConfig.getEncryptionKey();
String confirmToken = "";
String status = this.paymentConfig.getTransactionSuccessCode();
String refId = "";
String[] res = msg.split("\\|");
String c = "";
TransactionResponse response = this.paymentService.getTransactionResponseByTxansactionId(res[3], "temp");
Payments payment = new Payments();
payment.setTransactionId(response.getTxansactionId());
double amount = 0;
// ------------------ PAYMENT STRING PROCESSING ------------------
for (int i = 0; i < res.length; i++) {
if (i == res.length - 1) {
c = c + salt;
confirmToken = res[i];
} else if (res[i].isEmpty()) {
c = c + "|";
} else if (res[i].equals("NA")) {
c = c + "NA|";
} else {
c = c + res[i] + "|";
}
if (i == 5) {
response.setTpslTxnId(res[i]);
response.setAmount(res[6]);
response.setTxansactionId(res[3]);
response.setDate(res[8]);
}
}
int bookingId = response.getBookingId();
try {
amount = Double.parseDouble(response.getAmount());
} catch (Exception e) {
}
payment.setAmountReceived(amount);
payment.setPaymentStatus("Not Completed");
BookingDetails bookingsDetails = bookser.getBookingsById(bookingId); // JPA fetch
payment.setBookingDetails(bookingsDetails);
response.setResponse(msg);
response.setStatusCode(res[0]);
bookingsDetails.setPayments(payment);
payment.setCdate(new Date());
// save transaction response
transactionResRepo.save(response);
// =============================================================
// CASE 1: FAILURE - AMOUNT MISMATCH
// =============================================================
if (bookingsDetails.getAmountReceived() != amount) {
if (paymentService.generateToken(c).equals(confirmToken) && status.equals(res[0])) {
payment.setPaymentStatus("Success");
bookingsDetails.setPayments(payment);
paymentRepo.save(payment);
// booking failure logic
bookser.bookingFailure(bookingsDetails, 1);
}
// Fetch OR Generate booking_ref_id
refId = bookser.getBookingRefIdByBookingId(bookingId);
// encrypt bookingId (coworkspace logic)
String encryptedId = encryptionUtil.encrypt(String.valueOf(bookingId));
model.addAttribute("ref_id", refId);
model.addAttribute("encryptedId", encryptedId);
return "redirect:/communityhall/user/acknowledgement?ref_id=" + refId;
}
// =============================================================
// CASE 2: SUCCESS FLOW
// =============================================================
if (paymentService.generateToken(c).equals(confirmToken) && status.equals(res[0])) {
payment.setPaymentStatus("Success");
bookingsDetails.setPayments(payment);
paymentRepo.save(payment);
// 🔥 Fetch OR Generate booking_ref_id
refId = bookser.getBookingRefIdByBookingId(bookingId);
try {
bookser.confirmBooking(bookingId);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception Occured inside /response end point : " + e.getMessage());
// ignore
}
}
// 🔐 Encrypt bookingId
String encryptedId = encryptionUtil.encrypt(String.valueOf(bookingId));
model.addAttribute("ref_id", refId);
model.addAttribute("encryptedId", encryptedId);
return "redirect:/communityhall/user/acknowledgement?ref_id=" + refId;
}
/*
* @PostMapping(value = "/response")
* public String response(Model model, @RequestParam(required = false) String
* msg) throws NoSuchAlgorithmException {
*
* String salt = this.paymentConfig.getEncryptionKey();
*
* String confirmToken = "";
* String status = this.paymentConfig.getTransactionSuccessCode();
* String s = new String(msg);
* String c = new String();
* String res[] = s.split("\\|");
*
* TransactionResponse response =
* this.paymentService.getTransactionResponseByTxansactionId(res[3], "temp");
* Payments payment = new Payments();
* payment.setTransactionId(response.getTxansactionId());
* double amount = 0;
*
*
* for (int i = 0; i < res.length; i++) {
* if (i == res.length - 1) {
* c = c + salt;
* confirmToken = res[i];
* } else if (res[i].isEmpty()) {
* c = c + "|";
* } else if (res[i].equals("NA")) {
* c = c + "NA|";
* } else {
* c = c + res[i] + "|";
* }
*
* if (i == 5) {
* response.setTpslTxnId(res[i]);
* response.setAmount(res[6]);
* response.setTxansactionId(res[3]);
* //String[] tDate = res[8].split(" ");
* response.setDate(res[8]);
* }
* }
* int bookingId = response.getBookingId();
* try {
* amount = Double.parseDouble(response.getAmount());
* } catch (Exception e) {
* // TODO: handle exception
* //System.out.println("payment Controller lineNo-67");
* }
* payment.setAmountReceived(amount);
* payment.setPaymentStatus("Not Completed");
*
* BookingDetails bookingsDetails = bookser.getBookingsById(bookingId);
* payment.setBookingDetails(bookingsDetails);
* response.setResponse(msg);
* response.setStatusCode(res[0]);
* bookingsDetails.setPayments(payment);
* payment.setCdate(new Date());
*
* System.out.println("bookingsDetails.getAmountReceived().." +
* bookingsDetails.getAmountReceived());
* System.out.println("amount: " + amount);
*
* TransactionResponse save = transactionResRepo.save(response);
*
* if (bookingsDetails.getAmountReceived() != amount) { // Reject booking if the
* amount is incorrect
* if(paymentService.generateToken(c).equals(confirmToken) &&
* status.equals(res[0])){
* payment.setPaymentStatus("Success");
* bookingsDetails.setPayments(payment);
* paymentRepo.save(payment);
* bookser.bookingFailure(bookingsDetails, 1);
* }
* //ak
*
*
*
* model.addAttribute("bookingsDetails", bookingsDetails);
* return "redirect:/communityhall/user/acknowledgement?bookingId=" +
* bookingsDetails.getBookingId();
* }
*
*
* if (paymentService.generateToken(c).equals(confirmToken) &&
* status.equals(res[0])) {
* payment.setPaymentStatus("Success");
* bookingsDetails.setPayments(payment);
* try {
* String confirmBooking = bookser.confirmBooking(response.getBookingId());
* }catch (Exception e){
* // return "redirect:/communityhall/user/acknowledgement?bookingId=" +
* bookingsDetails.getBookingId();
*
* }
* // postDataToERP(payment, response); // post payment details to ERP
* //
* System.out.println("\n confirmBooking:- paymentController 111"+confirmBooking
* +"\n");
* // if(confirmBooking.equals("Booking confirmed successfully")) {
* // //bookser.updateBookingStatusById(bookingsDetails.getBookingId(),
* BookingDetails.BookingStatus.APPROVED, "confirm");
* // // String bookingconfimationsms =
* "Your booking with ID "+bookingsDetails.getBookingId()+" on"
* +bookingsDetails.getBookingId()
* +" has been successfully confirmed. Thanks for using GCC Community Hall Booking System."
* ;
* // }else if(confirmBooking.equals("Slot occupied")) {
* //// System.out.println("Slot occupied line 115");
* //// BookingDetails crrSts =
* bookser.updateBookingStatusById(bookingsDetails.getBookingId(),
* BookingDetails.BookingStatus.REFUNDED,
* "slot occupied Refund will happen shortly");
* //// System.out.println("BookingDetails:-"+crrSts.getBookingStatus());
* // }
* // else if(confirmBooking.equals("Error confirming booking")) {
* // bookser.updateBookingStatusById(bookingsDetails.getBookingId(),
* BookingDetails.BookingStatus.PENDING, "Error");
* //
* // }
*
* }
*
* // System.out.println(response.toString());
* model.addAttribute("bookingsDetails", bookingsDetails); // Add single
* BookingDetails object
* //System.out.println(save.toString());
* paymentRepo.save(payment);
* return "redirect:/communityhall/user/acknowledgement?bookingId=" +
* bookingsDetails.getBookingId();
* }
*/
/*
* public void postDataToERP(Payments payment, TransactionResponse res) {
* RestTemplate restTemplate = new RestTemplate();
* erpPostData erpData = new erpPostData();
*
* SimpleDateFormat outputFormat = new SimpleDateFormat("dd/MM/yyyy");
* String txDate = outputFormat.format(payment.getCdate());
* String assesNo = LocalDate.now().getYear() + "/COMM/" + res.getBookingId();
*
* Map<String, Object> data = new TreeMap<>();
*//* static mandatory input to be sent *//*
* data.put("serviceId", "getOtherCollection");
* data.put("COLLECTION_TYPE", "Community Hall");
* data.put("TOTALTRANSACTIONCODE", "450310000");
* // /end of static/
* // /unique data to be send/
* data.put("ASSESSMENTNO", assesNo);
* data.put("UNIQUERECEIPTID", res.getBookingId());
* data.put("TRANSACTIONNO", payment.getTransactionId());
* data.put("TRANSACTIONREFNO", res.getTpslTxnId());
* data.put("TRANSACTIONDATE", txDate); //payment date format dd/mm/yyyy
* -> 19/02/2025
* data.put("TOTALTRANSACTIONAMOUNT",
* payment.getBookingDetails().getAmountReceived());
*
* data.put("MSTRCODEONE", "061");
* data.put("SPLITAMOUNTONE",
* payment.getBookingDetails().getHallAmount());
* data.put("MSTRCODETWO", "062");
* data.put("SPLITAMOUNTTWO",
* payment.getBookingDetails().getDepositAmount());
* data.put("MSTRCODETHREE", "063");
* data.put("SPLITAMOUNTTHREE", payment.getBookingDetails().getGst());
* // /Amount Collected from party/
* data.put("PARTYNAME",
* payment.getBookingDetails().getUsers().getName());
* data.put("PARTYADDRESS",
* payment.getBookingDetails().getUsers().getStreet() + "," +
* payment.getBookingDetails().getUsers().getArea() + "," +
* payment.getBookingDetails().getUsers().getLocation() + "," +
* payment.getBookingDetails().getUsers().getPinCode());
* data.put("PARTYMOBILE",
* payment.getBookingDetails().getUsers().getMobileNo());
*//* end *//*
* System.out.println(data);
* System.out.println(appConfig.getCommErpUrl());
* // ResponseEntity<String> stringResponseEntity =
* restTemplate.postForEntity(appConfig.getErpUrl(), data,
* String.class);
* // System.out.println(stringResponseEntity.getBody());
*
* erpData.setTx_id(payment.getTransactionId());
* erpData.setBooking_det_booking_id(res.getBookingId());
* erpData.setStatus(true);
* erpData.setCdate(LocalDate.now());
* erpData.setPay_status(1);
* erpPostDataRepository.save(erpData);
*
* UriComponentsBuilder builder =
* UriComponentsBuilder.fromHttpUrl(appConfig.getCommErpUrl())
* ;
* for (Map.Entry<String, Object> entry : data.entrySet()) {
* builder.queryParam(entry.getKey(), entry.getValue());
* }
*
* String urlMsg = builder.toUriString();
* System.out.println(urlMsg);
*
* try {
* HttpURLConnection connection = null;
*
* URL url = new URL(urlMsg);
* connection = (HttpURLConnection) url.openConnection();
* connection.setRequestMethod("GET");
*
* int responseCode = connection.getResponseCode();
* // response=responseCode+"";
* System.out.println("Response Code: " + responseCode);
*
* if (responseCode == HttpURLConnection.HTTP_OK) { // 200 OK
* BufferedReader in = new BufferedReader(new
* InputStreamReader(connection.getInputStream()));
* String inputLine;
* StringBuilder response = new StringBuilder();
* while ((inputLine = in.readLine()) != null) {
* response.append(inputLine);
* }
* in.close();
* System.out.println("Response: " + response.toString());
*
* ObjectMapper objectMapper = new ObjectMapper();
* JsonNode jsonNode =
* objectMapper.readTree(response.toString());
*
* String resultStatus =
* jsonNode.get("ResultStatus").asText();
*
* if (!resultStatus.isEmpty() &&
* resultStatus.equals("false")) {
* erpData.setStatus(false);
* erpPostDataRepository.save(erpData);
* }
*
* } else {
* System.out.println("GET request failed.");
* }
*
* } catch (Exception e) {
* e.printStackTrace();
* }
* }
*/
@PostMapping(value = "/additionaldamage-response")
public String additionaldamagePaymentresponse(Model model, @RequestParam(required = false) String msg)
throws NoSuchAlgorithmException {
String salt = this.paymentConfig.getEncryptionKey();
String confirmToken = "";
String status = this.paymentConfig.getTransactionSuccessCode();
String s = new String(msg);
String c = new String();
String res[] = s.split("\\|");
TransactionResponse response = this.paymentService.getTransactionResponseByTxansactionId(res[3], "temp");
ExtraPayments payment = new ExtraPayments();
payment.setTransactionId(response.getTxansactionId());
double amount = 0;
for (int i = 0; i < res.length; i++) {
if (i == res.length - 1) {
c = c + salt;
confirmToken = res[i];
} else if (res[i].isEmpty()) {
c = c + "|";
} else if (res[i].equals("NA")) {
c = c + "NA|";
} else {
c = c + res[i] + "|";
}
if (i == 5) {
response.setTpslTxnId(res[i]);
response.setAmount(res[6]);
response.setTxansactionId(res[3]);
// String[] tDate = res[8].split(" ");
response.setDate(res[8]);
}
}
int bookingId = response.getBookingId();
try {
amount = Double.parseDouble(response.getAmount());
} catch (Exception e) {
// TODO: handle exception
// System.out.println("payment Controller lineNo-67");
}
payment.setAmountReceived(amount);
payment.setPaymentStatus("Not Completed");
BookingDetails bookingsDetails = bookser.getBookingsById(bookingId);
payment.setBookingDetails(bookingsDetails);
response.setResponse(msg);
response.setStatusCode(res[0]);
bookingsDetails.setExtrapayments(payment);
payment.setCdate(new Date());
TransactionResponse save = transactionResRepo.save(response);
if (paymentService.generateToken(c).equals(confirmToken) && status.equals(res[0])) {
payment.setPaymentStatus("Success");
bookingsDetails.setExtrapayments(payment);
bookingsDetails.getSettlement().setCollectionStatus("Paid");
bookingsDetails.setBookingStatus(BookingStatus.COMPLETED);
bookingsDetails.setRefundStatus(RefundStatus.CLOSED);
bookingsDetails.setComments("Collection Amount Paid Successfully");
bookingDetailsRepository.save(bookingsDetails);
}
model.addAttribute("bookingsDetails", bookingsDetails);
extraPaymentsRepository.save(payment);
// postEPDataToERP(payment, response); //post extra payments details to ERP
// return
// "redirect:/communityhall/user/collectionpendingacknowledgement?bookingId=" +
// bookingsDetails.getBookingId();
return "redirect:/communityhall/user/collectionpendingacknowledgement?bookingId="
+ bookingsDetails.getBookingId();
}
/*
* public void postEPDataToERP(ExtraPayments payment, TransactionResponse res) {
* RestTemplate restTemplate = new RestTemplate();
* erpPostData erpData = new erpPostData();
*
* SimpleDateFormat outputFormat = new SimpleDateFormat("dd/MM/yyyy");
* String txDate = outputFormat.format(payment.getCdate());
* String assesNo = LocalDate.now().getYear() + "/COMM/ED/" +
* res.getBookingId();
*
* Map<String, Object> data = new TreeMap<>();
*//* static mandatory input to be sent *//*
* data.put("serviceId", "getOtherCollection");
* data.put("COLLECTION_TYPE", "Community Hall");
* data.put("TOTALTRANSACTIONCODE", "450310000");
* // /end of static/
* // /unique data to be send/
* data.put("ASSESSMENTNO", assesNo);
* data.put("UNIQUERECEIPTID", res.getBookingId());
* data.put("TRANSACTIONNO", payment.getTransactionId());
* data.put("TRANSACTIONREFNO", res.getTpslTxnId());
* data.put("TRANSACTIONDATE", txDate); //payment date format dd/mm/yyyy
* -> 19/02/2025
* data.put("TOTALTRANSACTIONAMOUNT", payment.getAmountReceived());
*
* data.put("MSTRCODEONE", "061");
* data.put("SPLITAMOUNTONE", 0);
* data.put("MSTRCODETWO", "062");
* data.put("SPLITAMOUNTTWO", payment.getAmountReceived());
* data.put("MSTRCODETHREE", "063");
* data.put("SPLITAMOUNTTHREE", 0);
* // /Amount Collected from party/
* data.put("PARTYNAME",
* payment.getBookingDetails().getUsers().getName());
* data.put("PARTYADDRESS",
* payment.getBookingDetails().getUsers().getStreet() + "," +
* payment.getBookingDetails().getUsers().getArea() + "," +
* payment.getBookingDetails().getUsers().getLocation() + "," +
* payment.getBookingDetails().getUsers().getPinCode());
* data.put("PARTYMOBILE",
* payment.getBookingDetails().getUsers().getMobileNo());
*//* end *//*
* System.out.println(data);
* System.out.println(appConfig.getCommErpUrl());
* // ResponseEntity<String> stringResponseEntity =
* restTemplate.postForEntity(appConfig.getErpUrl(), data,
* String.class);
* // System.out.println(stringResponseEntity.getBody());
*
* erpData.setTx_id(payment.getTransactionId());
* erpData.setBooking_det_booking_id(res.getBookingId());
* erpData.setStatus(true);
* erpData.setCdate(LocalDate.now());
* erpData.setPay_status(2);
* erpPostDataRepository.save(erpData);
*
* UriComponentsBuilder builder =
* UriComponentsBuilder.fromHttpUrl(appConfig.getCommErpUrl())
* ;
* for (Map.Entry<String, Object> entry : data.entrySet()) {
* builder.queryParam(entry.getKey(), entry.getValue());
* }
*
* String urlMsg = builder.toUriString();
* System.out.println(urlMsg);
*
* try {
* HttpURLConnection connection = null;
*
* URL url = new URL(urlMsg);
* connection = (HttpURLConnection) url.openConnection();
* connection.setRequestMethod("GET");
*
* int responseCode = connection.getResponseCode();
* // response=responseCode+"";
* System.out.println("Response Code: " + responseCode);
*
* if (responseCode == HttpURLConnection.HTTP_OK) { // 200 OK
* BufferedReader in = new BufferedReader(new
* InputStreamReader(connection.getInputStream()));
* String inputLine;
* StringBuilder response = new StringBuilder();
* while ((inputLine = in.readLine()) != null) {
* response.append(inputLine);
* }
* in.close();
* System.out.println("Response: " + response.toString());
*
* ObjectMapper objectMapper = new ObjectMapper();
* JsonNode jsonNode =
* objectMapper.readTree(response.toString());
*
* String resultStatus =
* jsonNode.get("ResultStatus").asText();
*
* if (!resultStatus.isEmpty() &&
* resultStatus.equals("false")) {
* erpData.setStatus(false);
* erpPostDataRepository.save(erpData);
* }
*
* } else {
* System.out.println("GET request failed.");
* }
*
* } catch (Exception e) {
* e.printStackTrace();
* }
* }
*/
@PostMapping(value = "/updatetransaction")
public String updatetransaction(Model model, @RequestParam(required = false) String txansactionId,
@RequestParam(required = false) String msg) throws NoSuchAlgorithmException {
Optional<TransactionResponse> transactionresponse = transactionResRepo.findByTxansactionId(txansactionId);
TransactionResponse transactionres = transactionresponse.get();
if ("temp".equals(transactionres.getStatusCode()) && !"0300".equals(transactionres.getStatusCode())) {
String salt = this.paymentConfig.getEncryptionKey();
String confirmToken = "";
String status = this.paymentConfig.getTransactionSuccessCode();
String s = new String(msg);
String c = new String();
String res[] = s.split("\\|");
TransactionResponse response = this.paymentService.getTransactionResponseByTxansactionId(res[3], "temp");
Payments payment = new Payments();
payment.setTransactionId(response.getTxansactionId());
double amount = 0;
for (int i = 0; i < res.length; i++) {
if (i == res.length - 1) {
c = c + salt;
confirmToken = res[i];
} else if (res[i].isEmpty()) {
c = c + "|";
} else if (res[i].equals("NA")) {
c = c + "NA|";
} else {
c = c + res[i] + "|";
}
if (i == 5) {
response.setTpslTxnId(res[i]);
response.setAmount(res[6]);
response.setTxansactionId(res[3]);
// String[] tDate = res[8].split(" ");
response.setDate(res[8]);
}
}
int bookingId = response.getBookingId();
try {
amount = Double.parseDouble(response.getAmount());
} catch (Exception e) {
// TODO: handle exception
// System.out.println("payment Controller lineNo-67");
}
payment.setAmountReceived(amount);
payment.setPaymentStatus("Not Completed");
BookingDetails bookingsDetails = bookser.getBookingsById(bookingId);
payment.setBookingDetails(bookingsDetails);
response.setResponse(msg);
response.setStatusCode(res[0]);
bookingsDetails.setPayments(payment);
payment.setCdate(new Date());
TransactionResponse save = transactionResRepo.save(response);
if (paymentService.generateToken(c).equals(confirmToken) && status.equals(res[0])) {
payment.setPaymentStatus("Success");
bookingsDetails.setPayments(payment);
String confirmBooking = bookser.confirmBooking(response.getBookingId());
}
// System.out.println(response.toString());
model.addAttribute("bookingsDetails", bookingsDetails); // Add single BookingDetails object
// System.out.println(save.toString());
paymentRepo.save(payment);
return "success";
} else {
return "already exists";
}
}
@PostMapping(value = "/refundcompleted")
public String refundCompleted(Model model, @RequestParam String txansactionId,
@RequestParam(required = false) String msg) throws NoSuchAlgorithmException {
Optional<TransactionResponse> transactionresponse = transactionResRepo.findByTxansactionId(txansactionId);
if (transactionresponse.isPresent()) {
TransactionResponse transactionres = transactionresponse.get();
Optional<BookingDetails> bookings = bookingDetailsRepository.findById(transactionres.getBookingId());
if (bookings.isPresent()) {
BookingDetails bookingDetails = bookings.get();
bookingDetails.setRefundStatus(RefundStatus.CLOSED);
bookingDetailsRepository.save(bookingDetails);
return "success";
} else {
return "failure";
}
} else {
return "failure";
}
}
}