public async Task <ActionResult> PaymentCallBack() { var tranxRef = HttpContext.Request.QueryString["reference"]; if (!string.IsNullOrWhiteSpace(tranxRef)) { var paystackSec_Key = ConfigurationManager.AppSettings["PayStackKey"].ToString(); var payStackAPI = new PaystackTransaction(paystackSec_Key); var response = await payStackAPI.VerifyTransaction(tranxRef); if (response.status) { var subscriberInfo = repo.GetSubscription(tranxRef); var planId = subscriberInfo.PlanId; var subscriptionStartDate = DateTime.Now.AddMonths(1); var payStckSubscription = new Paystack.Net.SDK.Subscription.PaystackSubscription(paystackSec_Key); var subscriptionResponse = await payStckSubscription.CreateSubscription(response.data.customer.email, planId, response.data.authorization.authorization_code, subscriptionStartDate.ToString("s")); var customer = repo.GetCustomerByEmail(response.data.customer.email); if (subscriptionResponse.status) { var data = subscriptionResponse.data; repo.CreateSubscriberAccount(response.data.customer.email, "password", planId, data.subscription_code, data.email_token, subscriptionStartDate); repo.UpdateSubscription(tranxRef); } return(RedirectToAction("Success")); } else { return(RedirectToAction("error")); } } return(RedirectToAction("error")); }