示例#1
0
        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));
        }
示例#2
0
        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)));
            }
        }