using Stripe; using Stripe.Checkout; using Hutopy.Application.Common.Interfaces; using Microsoft.AspNetCore.Http; using Hutopy.Application.Common.Models; using Hutopy.Application.Stripe.Commands; namespace Hutopy.Infrastructure.Stripe; public class StripeService : IStripeService { const string EndpointSecret = ""; private readonly IHttpContextAccessor _httpContextAccessor; public StripeService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; StripeConfiguration.ApiKey = ""; } public async Task CreateCheckoutSession(int amount, string currency = "cad") { var options = new SessionCreateOptions { LineItems = [ new SessionLineItemOptions { PriceData = new SessionLineItemPriceDataOptions { UnitAmount = amount, Currency = currency, ProductData = new SessionLineItemPriceDataProductDataOptions { Name = "Tip", }, }, Quantity = 1, } ], Mode = "payment", UiMode = "embedded", ReturnUrl = "https://hutopy.ca/paymentcompleted", }; var service = new SessionService(); Session session = await service.CreateAsync(options); return session.ClientSecret; } public Result ValidateTransaction(ConfirmStripeTransactionCommand request) { try { if (request.Data.Object.Status is "succeeded") { return new Result(true, new List()); } return new Result(false, new List()); } catch (StripeException e) { Console.WriteLine("Error: {0}", e.Message); return new Result(false, new List{e.Message}); } catch (Exception e) { return new Result(false, new List{e.Message}); } } }