| Line 71... |
Line 71... |
| 71 |
private UpsellRazorpayPaymentStatusRepository upsellRazorpayPaymentStatusRepository;
|
71 |
private UpsellRazorpayPaymentStatusRepository upsellRazorpayPaymentStatusRepository;
|
| 72 |
|
72 |
|
| 73 |
@RequestMapping(value = "/upsellPayment/callback", method = RequestMethod.GET)
|
73 |
@RequestMapping(value = "/upsellPayment/callback", method = RequestMethod.GET)
|
| 74 |
public ResponseEntity<String> handleCallback(HttpServletRequest request) {
|
74 |
public ResponseEntity<String> handleCallback(HttpServletRequest request) {
|
| 75 |
try {
|
75 |
try {
|
| 76 |
LOGGER.info("Webhook called with query parameters");
|
- |
|
| 77 |
|
76 |
|
| 78 |
// Retrieve the Razorpay parameters from the query string
|
77 |
// Retrieve the Razorpay parameters from the query string
|
| 79 |
String paymentId = request.getParameter("razorpay_payment_id");
|
78 |
String paymentId = request.getParameter("razorpay_payment_id");
|
| 80 |
String razorpaySignature = request.getParameter("razorpay_signature");
|
79 |
String razorpaySignature = request.getParameter("razorpay_signature");
|
| - |
|
80 |
String paymentLinkId = request.getParameter("razorpay_payment_link_id");
|
| - |
|
81 |
String paymentLinkStatus = request.getParameter("payment_link_status");
|
| - |
|
82 |
String paymentLinkReferenceId = request.getParameter("payment_link_reference_id");
|
| - |
|
83 |
|
| 81 |
String orderId = request.getParameter("orderId");
|
84 |
String orderId = request.getParameter("orderId");
|
| 82 |
String insuranceAmount = request.getParameter("insuranceAmount");
|
85 |
String insuranceAmount = request.getParameter("insuranceAmount");
|
| 83 |
|
86 |
|
| 84 |
// Check for required parameters
|
87 |
// Check for required parameters
|
| 85 |
if (paymentId == null || razorpaySignature == null || orderId == null || insuranceAmount == null) {
|
88 |
if (paymentId == null || razorpaySignature == null || orderId == null || insuranceAmount == null) {
|
| 86 |
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Missing required parameters");
|
89 |
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Missing required parameters");
|
| 87 |
}
|
90 |
}
|
| 88 |
|
91 |
|
| 89 |
// Construct payload for signature verification
|
- |
|
| 90 |
String payload = orderId + "|" + paymentId;
|
- |
|
| 91 |
String generated_signature = RazorpayPaymentService
|
92 |
String generated_signature = RazorpayPaymentService
|
| 92 |
.calculateRFC2104HMAC(payload, razorpaySecret);
|
93 |
.calculateRFC2104HMAC(paymentLinkId + "|" + paymentId, razorpaySecret);
|
| - |
|
94 |
LOGGER.info("generated_signature {}", generated_signature);
|
| - |
|
95 |
if (generated_signature.equals(razorpaySignature)) {
|
| - |
|
96 |
// Handle the payment status (you may need to add more logic depending on the status)
|
| - |
|
97 |
updatePaymentStatus(paymentId, "captured", orderId, insuranceAmount);
|
| 93 |
|
98 |
|
| 94 |
if (!generated_signature.equals(razorpaySignature)) {
|
- |
|
| 95 |
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid signature");
|
99 |
return ResponseEntity.ok("Payment successful for ID: " + paymentId);
|
| 96 |
|
100 |
|
| - |
|
101 |
} else {
|
| - |
|
102 |
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid signature");
|
| 97 |
}
|
103 |
}
|
| 98 |
|
104 |
|
| 99 |
|
105 |
|
| 100 |
// Handle the payment status (you may need to add more logic depending on the status)
|
- |
|
| 101 |
updatePaymentStatus(paymentId, "captured", orderId, insuranceAmount);
|
- |
|
| 102 |
|
- |
|
| 103 |
return ResponseEntity.ok("Payment successful for ID: " + paymentId);
|
- |
|
| 104 |
|
- |
|
| 105 |
} catch (Exception e) {
|
106 |
} catch (Exception e) {
|
| 106 |
e.printStackTrace();
|
107 |
e.printStackTrace();
|
| 107 |
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing callback");
|
108 |
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing callback");
|
| 108 |
}
|
109 |
}
|
| 109 |
}
|
110 |
}
|