private async Task<string> ProcessPayment(IStripeTransaction transaction, string currency, string privateKey)
        {
            var paymentService = new PaymentServiceAsync();
            var transResult = await paymentService.ProcessPayment(transaction, currency, privateKey);

            //if the payment was successful, return 
            return transResult;
        }
        public ActionResult Charge(IStripeTransaction transaction)
        {
            if (ModelState.IsValid)
            {

                const string currency = "gbp";
                const string privateKey = "sk_test_XOm61wdTAAisD2FgrPrcTCtZ";

                var chargeID = ProcessPayment(transaction, currency, privateKey);



            }

            return View();
        }
        public async Task<string> ProcessPayment(IStripeTransaction transaction, string currency, string privateKey)
        {
            return await Task.Run(() =>
            {
                var myCharge = new StripeChargeCreateOptions
                {
                    Amount = (int)(transaction.Amount * 100),
                    Currency = currency,
                    Description = "",
                    Source = new StripeSourceOptions
                    {
                        TokenId = transaction.Token
                    }
                };

                var chargeService = new StripeChargeService(privateKey);
                var stripeCharge = chargeService.Create(myCharge);

                return stripeCharge.Id;

            });

        }