public IActionResult ConfirmPayment([FromBody] ConfirmPaymentPayload confirmPayment) { var attributes = new Dictionary <string, string> { { "razorpay_payment_id", confirmPayment.razorpay_payment_id }, { "razorpay_order_id", confirmPayment.razorpay_order_id }, { "razorpay_signature", confirmPayment.razorpay_signature } }; try { Razorpay.Api.Utils.ValidatePaymentSignature(attributes); // utils.verifyPaymentSignature(attributes); // OR var isValid = Utils.ValidatePaymentSignature(attributes); if (isValid) { var order = _razorpayClient.Order.Fetch(confirmPayment.razorpay_order_id); var payment = _razorpayClient.Payment.Fetch(confirmPayment.razorpay_payment_id); if (payment["status"] == "captured") { return(Ok("Payment Successful")); } } } catch (Exception ex) { var s = ex; return(StatusCode(StatusCodes.Status500InternalServerError)); } return(StatusCode(StatusCodes.Status500InternalServerError)); }
public async Task <ActionResult <Order> > ConfirmPayment([FromBody] ConfirmPaymentPayload confirmPayment) { var attributes = new Dictionary <string, string> { { "razorpay_order_id", confirmPayment.razorpay_order_id }, { "razorpay_payment_id", confirmPayment.razorpay_payment_id }, { "razorpay_signature", confirmPayment.razorpay_signature } }; try { // Razorpay.Api.Utils.ValidatePaymentSignature(attributes); var cobinedValues = confirmPayment.cart_order_id + "|" + confirmPayment.razorpay_payment_id; string hashHMACHex = cobinedValues.HmacSha256Digest(rzrKey); //if (hashHMACHex == confirmPayment.razorpay_signature) //{ _razorpayClient = new Razorpay.Api.RazorpayClient(rzrKey, rzrSecret); /*Later this will be on PRod*/ // utils.verifyPaymentSignature(attributes); // OR //var payload =confirmPayment.razorpay_order_id + '|' + confirmPayment.razorpay_payment_id; //Razorpay.Api.Utils.verifyWebhookSignature(payload, confirmPayment.razorpay_signature, rzrKey); var order = _razorpayClient.Order.Fetch(confirmPayment.razorpay_order_id); var payment = _razorpayClient.Payment.Fetch(confirmPayment.razorpay_payment_id); var currentOrder = _repository.FindSingle <Order>(x => x.OrderUNId == confirmPayment.cart_order_id, new string[] { "VesselCharge" }); if (payment["status"] == "captured" && order["status"] == "paid") { if (currentOrder != null) { currentOrder.RzPaymentId = confirmPayment.razorpay_payment_id; currentOrder.RzSignature = confirmPayment.razorpay_signature; currentOrder.TransactionStatus = "Sucesss"; } // return Ok("Payment Successful"); } else { if (currentOrder != null) { currentOrder.RzPaymentId = null; currentOrder.RzSignature = null; currentOrder.TransactionStatus = "Failed"; } await _repository.UpdateAsync <Order>(currentOrder); } return(GetOrder(currentOrder.Id)); //} } catch (Exception ex) { return(NotFound(new ApiResponse(500, ex.Message))); } }