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)); } }
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); } }