public ActionResult StripePay(string tokenid, string orderid) { var order = orderRepository.GetOrder(orderid); var amount = Utils.OrderUtils.GetToals(orderid); var service = db.ServiceSettings.FirstOrDefault(ln => ln.Owner.ID == order.StoreUser.Id); var stripesettings = service.StripeSettings.FirstOrDefault(); var orderProcessFactory = Factories.OrderProcessFactory.GetOrderProcessImplementation(service.ServiceType); if (StripeCharge(order.CustomerUser.Name, tokenid, amount, "eur", order.OrderIdentifier, stripesettings.SecretKey)) { order.PaymentState = Enums.EnumPaymentState.IsPaid; order.OrderState = Enums.EnumOrderState.ServerOrderFinished; } else { order.PaymentState = Enums.EnumPaymentState.FailedPaiment; } orderRepository.UpdateOrderState(order.OrderIdentifier, order.OrderState); orderRepository.UpdatePaymentState(order.OrderIdentifier, order.PaymentState); orderProcessFactory.ProcessOrder(order, true); //get process implementation - set paystate ... return(Json("tadaaa...", JsonRequestBehavior.AllowGet)); }
private ViewModels.OrderViewModel _processOrderRequest(OrderDataDTO orderDTO, string group) { IOrderProcess orderProcessFactory = null; if (Utils.ValidationUtils.IsDangerousString(orderDTO.OrderIdentifier, out int badidx)) { return new ViewModels.OrderViewModel() { ErrorMessage = "Invalid orderIdentifier" } } ; var orderViewModel = orderRepository.GetOrder(orderDTO.OrderIdentifier); var service = db.ServiceSettings.FirstOrDefault(ln => ln.ServiceUrl == group); if (service == null) { return new ViewModels.OrderViewModel() { ErrorMessage = "could not get service..." } } ; orderProcessFactory = Factories.OrderProcessFactory.GetOrderProcessImplementation(service.ServiceType); if (orderViewModel == null) { if (orderDTO.Items.Count == 0) { return new ViewModels.OrderViewModel() { ErrorMessage = BaseResource.Get("NoItemsForOrder") } } ; orderViewModel = orderProcessFactory.CheckOrder(orderDTO); if (!string.IsNullOrEmpty(orderViewModel.ErrorMessage)) { return(orderViewModel); } var orderItems = orderRepository.CheckProducts(orderDTO.Items); var productOwnerId = orderItems.FirstOrDefault().OwnerId; // --! var storeUser = userRepository.GetUser(productOwnerId); var customerUser = userRepository.GetUserFromSignalR(Context.ConnectionId); if (storeUser == null || customerUser == null || productOwnerId == -1 || orderItems.Count == 0) { return(new ViewModels.OrderViewModel() { ErrorMessage = "Invalid Order-Data...", }); } orderViewModel.Items = orderItems; orderViewModel.CustomerUser = customerUser; orderViewModel.StoreUser = storeUser; } bool isStoreUser = false; if (Context.User.Identity.Name == orderViewModel.StoreUser.Name) { isStoreUser = true; } orderProcessFactory = Factories.OrderProcessFactory.GetOrderProcessImplementation(Enums.EnumServiceType.OrderService); var orderVMResult = orderProcessFactory.ProcessOrder(orderViewModel, isStoreUser); orderViewModel = orderVMResult; return(orderViewModel); }