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