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
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";
|
|
}
|
|
}
|
|
}
|