public IActionResult Callback() { try { PaystackPaymentSettings standardPaymentSettings = _settingService.LoadSetting <PaystackPaymentSettings>(_storeContext.ActiveStoreScopeConfiguration); string str = Request.QueryString.ToString(); NameValueCollection queryString = HttpUtility.ParseQueryString(str); TransactionVerifyResponse transactionVerifyResponse = new PayStackApi(standardPaymentSettings.SecretKey).Transactions.Verify(queryString.Get("reference")); if (transactionVerifyResponse.Status && transactionVerifyResponse.Data.Status == "success") { Metadata metadata = transactionVerifyResponse.Data.Metadata; string empty1 = string.Empty; string empty2 = string.Empty; foreach (KeyValuePair <string, object> keyValuePair in (Dictionary <string, object>)metadata) { string key = keyValuePair.Key; if (keyValuePair.Key == "customOrderNumber") { empty2 = keyValuePair.Value.ToString(); } if (keyValuePair.Key == "orderGuid") { empty1 = keyValuePair.Value.ToString(); } } Order orderByGuid = _orderService.GetOrderByGuid(Guid.Parse(empty1)); if (this._orderProcessingService.CanMarkOrderAsPaid(orderByGuid)) { orderByGuid.AuthorizationTransactionId = transactionVerifyResponse.Data.Reference; this._orderService.UpdateOrder(orderByGuid); this._orderProcessingService.MarkOrderAsPaid(orderByGuid); } return((IActionResult)((ControllerBase)this).RedirectToRoute("CheckoutCompleted", (object)new { orderId = ((BaseEntity)orderByGuid).Id })); } else if (transactionVerifyResponse.Status && transactionVerifyResponse.Data.Status == "failed" || (!transactionVerifyResponse.Status || !(transactionVerifyResponse.Data.Status == "abandoned"))) { var order = _orderService.SearchOrders(_storeContext.CurrentStore.Id, customerId: _workContext.CurrentCustomer.Id, pageSize: 1).FirstOrDefault(); return(RedirectToRoute("OrderDetails", new { orderId = order.Id })); } return((IActionResult)((ControllerBase)this).Content(string.Empty)); } catch (Exception ex) { return((IActionResult)((ControllerBase)this).Content(string.Empty)); } }
public PaystackPaymentController(ISettingService settingService, IPaymentService paymentService, IOrderService orderService, IOrderProcessingService orderProcessingService, PaystackPaymentSettings ccAvenuePaymentSettings, PaymentSettings paymentSettings) { this._settingService = settingService; this._paymentService = paymentService; this._orderService = orderService; this._orderProcessingService = orderProcessingService; this._ccAvenuePaymentSettings = ccAvenuePaymentSettings; this._paymentSettings = paymentSettings; }