1
0
mirror of https://github.com/bitwarden/server synced 2025-12-31 23:53:17 +00:00

[PM-18221] Update credited user's billing location when purchasing premium subscription (#5393)

* Moved user crediting to PremiumUserBillingService

* Fix tests
This commit is contained in:
Alex Morask
2025-02-12 09:00:52 -05:00
committed by Alex Morask
parent e4d862fe6e
commit 858506b021
5 changed files with 102 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
using System.Globalization;
using Bit.Billing.Models;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Services;
using Bit.Core.Entities;
using Bit.Core.Enums;
using Bit.Core.Repositories;
@@ -25,6 +26,7 @@ public class BitPayController : Controller
private readonly IMailService _mailService;
private readonly IPaymentService _paymentService;
private readonly ILogger<BitPayController> _logger;
private readonly IPremiumUserBillingService _premiumUserBillingService;
public BitPayController(
IOptions<BillingSettings> billingSettings,
@@ -35,7 +37,8 @@ public class BitPayController : Controller
IProviderRepository providerRepository,
IMailService mailService,
IPaymentService paymentService,
ILogger<BitPayController> logger)
ILogger<BitPayController> logger,
IPremiumUserBillingService premiumUserBillingService)
{
_billingSettings = billingSettings?.Value;
_bitPayClient = bitPayClient;
@@ -46,6 +49,7 @@ public class BitPayController : Controller
_mailService = mailService;
_paymentService = paymentService;
_logger = logger;
_premiumUserBillingService = premiumUserBillingService;
}
[HttpPost("ipn")]
@@ -145,10 +149,7 @@ public class BitPayController : Controller
if (user != null)
{
billingEmail = user.BillingEmailAddress();
if (await _paymentService.CreditAccountAsync(user, tx.Amount))
{
await _userRepository.ReplaceAsync(user);
}
await _premiumUserBillingService.Credit(user, tx.Amount);
}
}
else if (tx.ProviderId.HasValue)