public async Task <IActionResult> SampleCheckout([FromBody] SampleCheckoutCommand command)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(base.BadRequest(ModelState));
                }

                var result = await _mediator.Send <SampleCheckoutCommandResult>(command);

                return(base.Ok(result));
            }

            catch (InvalidOperationException ex)
            {
                return(base.Conflict(ex.Message));
            }
        }
Exemple #2
0
        public async Task CheckoutSample(SampleCheckoutCommand command)
        {
            try
            {
                _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await _authHandler.GetAuthAccessToken());
                var response = await _httpClient.PostAsJsonAsync <SampleCheckoutCommand>("api/Stripe/SampleCheckout", command);

                if (response.IsSuccessStatusCode)
                {
                    var commandResult = await response.Content.ReadFromJsonAsync <SampleCheckoutCommandResult>();

                    _apiCallResultSubject.OnNext(new ApiCallResult <string>()
                    {
                        IsSucceed = true,
                        Operation = "CreateSampleCheckoutSession",
                        Data      = commandResult.SessionId
                    });
                }

                else
                {
                    _apiCallResultSubject.OnNext(new ApiCallResult <string>()
                    {
                        IsSucceed    = false,
                        Operation    = "CreateSampleCheckoutSession",
                        ErrorMessage = "Response is not succeeded from server."
                    });
                }
            }

            catch (Exception ex)
            {
                _apiCallResultSubject.OnNext(new ApiCallResult <string>()
                {
                    IsSucceed    = false,
                    Operation    = "CreateSampleCheckoutSession",
                    ErrorMessage = ex.Message
                });
            }
        }
        public async Task <string> SampleCheckout(SampleCheckoutCommand command)
        {
            try
            {
                //var domain = "https://localhost:5200";
                var domain = _masterConfig.StripeConfig.Domain;

                var options = new SessionCreateOptions
                {
                    CustomerEmail      = command.Email,
                    PaymentMethodTypes = new List <string>
                    {
                        "card",
                    },
                    LineItems = new List <SessionLineItemOptions>
                    {
                        new SessionLineItemOptions
                        {
                            PriceData = new SessionLineItemPriceDataOptions
                            {
                                UnitAmount  = command.Amount,
                                Currency    = "usd",
                                ProductData = new SessionLineItemPriceDataProductDataOptions
                                {
                                    Name = command.ProductName,
                                },
                            },
                            Quantity = 1,
                        },
                    },
                    Mode       = "payment",
                    SuccessUrl = _masterConfig.StripeConfig.SuccessUrl,
                    CancelUrl  = _masterConfig.StripeConfig.CancelUrl,
                    //SuccessUrl = domain + "/checkoutSampleSuccess",
                    //CancelUrl = domain + "/checkoutSampleCancel",
                };

                var     service = new SessionService();
                Session session = service.Create(options);

                return(session.Id);
            }

            catch (StripeException e)
            {
                string errorMessage = "";
                switch (e.StripeError.Error)
                {
                case "card_error":
                    errorMessage = $"Card Error occurred on {e.StripeError.PaymentIntent.Id}, Error: {e.StripeError.Error}, Error Code: {e.StripeError.Code}, Error Description: {e.StripeError.ErrorDescription}";
                    break;

                case "api_error":
                    errorMessage = $"API Error occurred: {e.StripeError.Error}, Error Code: {e.StripeError.Code}, Error Description: {e.StripeError.ErrorDescription}";
                    break;

                case "api_connection_error":
                    errorMessage = $"API Connection Error occurred: {e.StripeError.Error}, Error Code: {e.StripeError.Code}, Error Description: {e.StripeError.ErrorDescription}";
                    break;

                case "invalid_request_error	":
                    errorMessage = $"Invalid request Error occurred: {e.StripeError.Error}, Error Code: {e.StripeError.Code}, Error Description: {e.StripeError.ErrorDescription}";
                    break;

                default:
                    errorMessage = $"Some Error occurred: {e.StripeError.Error}, Error Code: {e.StripeError.Code}, Error Description: {e.StripeError.ErrorDescription}";
                    break;
                }

                throw new InvalidOperationException(errorMessage);
            }
        }