diff --git a/src/Orbit.Api/Controllers/SubscriptionController.cs b/src/Orbit.Api/Controllers/SubscriptionController.cs index 9e7c964a..39bbfb60 100644 --- a/src/Orbit.Api/Controllers/SubscriptionController.cs +++ b/src/Orbit.Api/Controllers/SubscriptionController.cs @@ -98,7 +98,7 @@ public async Task CreateCheckout( // Apply referral discount coupon if user has one, otherwise allow manual promo codes if (!string.IsNullOrEmpty(user.ReferralCouponId)) { - sessionOptions.Discounts = [new SessionDiscountOptions { PromotionCode = user.ReferralCouponId }]; + sessionOptions.Discounts = [new SessionDiscountOptions { Coupon = user.ReferralCouponId }]; logger.LogInformation("Applying referral coupon {CouponId} to checkout for user {UserId}", user.ReferralCouponId, userId); } else diff --git a/src/Orbit.Infrastructure/Services/StripeCouponRewardService.cs b/src/Orbit.Infrastructure/Services/StripeCouponRewardService.cs index 5e31597a..b824d82e 100644 --- a/src/Orbit.Infrastructure/Services/StripeCouponRewardService.cs +++ b/src/Orbit.Infrastructure/Services/StripeCouponRewardService.cs @@ -22,20 +22,6 @@ public async Task CreateReferralCouponAsync(Guid userId, CancellationTok if (user is null) throw new InvalidOperationException($"User {userId} not found for coupon creation"); - // Ensure user has a Stripe customer - if (string.IsNullOrEmpty(user.StripeCustomerId)) - { - var customerService = new CustomerService(); - var customer = await customerService.CreateAsync(new CustomerCreateOptions - { - Email = user.Email, - Name = user.Name, - Metadata = new Dictionary { { "userId", userId.ToString() } } - }, cancellationToken: cancellationToken); - user.SetStripeCustomerId(customer.Id); - await unitOfWork.SaveChangesAsync(cancellationToken); - } - var couponService = new CouponService(); var coupon = await couponService.CreateAsync(new CouponCreateOptions { @@ -49,19 +35,11 @@ public async Task CreateReferralCouponAsync(Guid userId, CancellationTok } }, cancellationToken: cancellationToken); - var promoCodeService = new PromotionCodeService(); - var promoCode = await promoCodeService.CreateAsync(new PromotionCodeCreateOptions - { - Promotion = new PromotionCodePromotionOptions { Coupon = coupon.Id }, - Customer = user.StripeCustomerId, - MaxRedemptions = 1 - }, cancellationToken: cancellationToken); - logger.LogInformation( - "Created referral coupon for user {UserId}: coupon={CouponId}, promoCode={PromoCodeId}", - userId, coupon.Id, promoCode.Id); + "Created referral coupon for user {UserId}: couponId={CouponId}", + userId, coupon.Id); - return promoCode.Id; + return coupon.Id; } public async Task GetUserPromotionCodeAsync(Guid userId, CancellationToken cancellationToken = default)