public MPESAValidationResponse ValidateMPESAPayment(MPESAValidation validation)
        {
            var validationResult = _paymentAccessor.ValidateMPESAPayment(validation.MerchantRequestID, validation.CheckoutRequestID, validation.ResultCode);

            if (validationResult.IsSuccess)
            {
                var donationID = validationResult.Payload.Item1;
                var userID     = validationResult.Payload.Item2;
                if (validation.ResultCode == "0")
                {
                    _donateAccessor.UpdateDonationStatus(donationID, 6);
                    _donateAccessor.ClearUserCart(userID);
                    SendPaymentConfirmationEmail(userID, donationID);
                }
                else
                {
                    _donateAccessor.UpdateDonationStatus(donationID, 4);
                }
                return(new MPESAValidationResponse
                {
                    ResponseCode = "00000000",
                    ResponseDesc = "Success"
                });
            }
            else
            {
                return(new MPESAValidationResponse
                {
                    ResponseCode = "99999999",
                    ResponseDesc = "Failure"
                });
            }
        }
        public IActionResult ValidateMPESA()
        {
            var bodyStream = new StreamReader(HttpContext.Request.Body);
            var bodyText   = bodyStream.ReadToEnd();

            var obj      = JsonConvert.DeserializeObject <JObject>(bodyText);
            var callback = obj["Body"]["stkCallback"] as JObject;

            var validation = new MPESAValidation
            {
                MerchantRequestID = callback["MerchantRequestID"].ToString(),
                CheckoutRequestID = callback["CheckoutRequestID"].ToString(),
                ResultDesc        = callback["ResultDesc"].ToString(),
                ResultCode        = callback["ResultCode"].ToString()
            };

            var result = _paymentService.ValidateMPESAPayment(validation);

            return(Json(result));
        }