Пример #1
0
        private StripeCustomer CreateStripeCustomer(string apiKey, tbl_Orders order, StripeCheckoutModel model)
        {
            var myCustomer = new StripeCustomerCreateOptions
            {
                Email               = order.CustomerEMail,
                Description         = order.BillingFullName,
                CardNumber          = model.CreditCardNumber,
                CardExpirationYear  = model.ExpiryYear.ToString(),
                CardExpirationMonth = model.ExpiryMonth.ToString()
            };

            var customerService = new StripeCustomerService(apiKey);
            var stripeCustomer  = customerService.Create(myCustomer);

            return(stripeCustomer);
        }
Пример #2
0
        public StripeResult ProcessPayment(StripeCheckoutModel model, string apiKey, int domainId)
        {
            var order = _ordersRepository.GetByID(model.OrderId);

            if (order == null)
            {
                return(new StripeResult {
                    IsError = true, Message = "No order has been found"
                });
            }

            try
            {
                var customerStripeId = "";

                var customer = _customerRepository.GetAll().Where(c => c.CU_DomainID == domainId && c.CU_Email == order.CustomerEMail && c.CU_StripeId != null).ToList().LastOrDefault();

                if (customer != null)
                {
                    customerStripeId = customer.CU_StripeId;
                }
                else
                {
                    var newStripeCustomer = CreateStripeCustomer(apiKey, order, model);

                    if (newStripeCustomer == null)
                    {
                        return(new StripeResult {
                            IsError = true, Message = "Problem with payment service"
                        });
                    }

                    customerStripeId = newStripeCustomer.Id;
                }
                order.tbl_Customer.CU_StripeId = customerStripeId;


                var stripeCharge = ChargeStripeCustomer(apiKey, order.Amount, customerStripeId);

                if (stripeCharge.FailureCode != null)
                {
                    order.Status     = stripeCharge.FailureMessage;
                    order.O_StatusID = (int)OrderStatus.PaymentFailed;
                    Context.SaveChanges();
                    return(new StripeResult {
                        IsError = true, Message = stripeCharge.FailureMessage
                    });
                }

                order.Status     = "ok";
                order.O_StatusID = (int)OrderStatus.Paid;
                Context.SaveChanges();

                return(new StripeResult {
                    IsError = false, Message = "Success"
                });
            }
            catch (StripeException ex)
            {
                return(new StripeResult {
                    IsError = true, Message = ex.Message
                });
            }
        }