mirror of
https://github.com/bitwarden/server.git
synced 2025-07-04 17:42:49 -05:00
add support for passing payment method type
This commit is contained in:
@ -71,7 +71,8 @@ namespace Bit.Core.Services
|
||||
_globalSettings = globalSettings;
|
||||
}
|
||||
|
||||
public async Task ReplacePaymentMethodAsync(Guid organizationId, string paymentToken)
|
||||
public async Task ReplacePaymentMethodAsync(Guid organizationId, string paymentToken,
|
||||
PaymentMethodType? paymentMethodType)
|
||||
{
|
||||
var organization = await GetOrgById(organizationId);
|
||||
if(organization == null)
|
||||
@ -79,22 +80,24 @@ namespace Bit.Core.Services
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
PaymentMethodType paymentMethodType;
|
||||
if(paymentToken.StartsWith("btok_"))
|
||||
if(!paymentMethodType.HasValue)
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else if(paymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
if(paymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else if(paymentToken.StartsWith("btok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
}
|
||||
}
|
||||
|
||||
var updated = await _paymentService.UpdatePaymentMethodAsync(organization,
|
||||
paymentMethodType, paymentToken);
|
||||
paymentMethodType.Value, paymentToken);
|
||||
if(updated)
|
||||
{
|
||||
await ReplaceAndUpdateCache(organization);
|
||||
@ -547,21 +550,23 @@ namespace Bit.Core.Services
|
||||
}
|
||||
else
|
||||
{
|
||||
PaymentMethodType paymentMethodType;
|
||||
if(signup.PaymentToken.StartsWith("btok_"))
|
||||
if(!signup.PaymentMethodType.HasValue)
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else if(signup.PaymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
if(signup.PaymentToken.StartsWith("btok_"))
|
||||
{
|
||||
signup.PaymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else if(signup.PaymentToken.StartsWith("tok_"))
|
||||
{
|
||||
signup.PaymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else
|
||||
{
|
||||
signup.PaymentMethodType = PaymentMethodType.PayPal;
|
||||
}
|
||||
}
|
||||
|
||||
await _paymentService.PurchaseOrganizationAsync(organization, paymentMethodType,
|
||||
await _paymentService.PurchaseOrganizationAsync(organization, signup.PaymentMethodType.Value,
|
||||
signup.PaymentToken, plan, signup.AdditionalStorageGb, signup.AdditionalSeats,
|
||||
signup.PremiumAccessAddon);
|
||||
}
|
||||
@ -1205,7 +1210,7 @@ namespace Bit.Core.Services
|
||||
{
|
||||
throw new BadRequestException("Invalid installation id");
|
||||
}
|
||||
|
||||
|
||||
var subInfo = await _paymentService.GetSubscriptionAsync(organization);
|
||||
return new OrganizationLicense(organization, subInfo, installationId, _licensingService);
|
||||
}
|
||||
|
@ -171,6 +171,11 @@ namespace Bit.Core.Services
|
||||
var stripePaymentMethod = paymentMethodType == PaymentMethodType.Card ||
|
||||
paymentMethodType == PaymentMethodType.BankAccount;
|
||||
|
||||
if(paymentMethodType == PaymentMethodType.BankAccount)
|
||||
{
|
||||
throw new GatewayException("Bank account payment method is not supported at this time.");
|
||||
}
|
||||
|
||||
if(user.Gateway == GatewayType.Stripe && !string.IsNullOrWhiteSpace(user.GatewayCustomerId))
|
||||
{
|
||||
try
|
||||
|
@ -678,7 +678,8 @@ namespace Bit.Core.Services
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task SignUpPremiumAsync(User user, string paymentToken, short additionalStorageGb, UserLicense license)
|
||||
public async Task SignUpPremiumAsync(User user, string paymentToken, PaymentMethodType? paymentMethodType,
|
||||
short additionalStorageGb, UserLicense license)
|
||||
{
|
||||
if(user.Premium)
|
||||
{
|
||||
@ -709,18 +710,23 @@ namespace Bit.Core.Services
|
||||
}
|
||||
else if(!string.IsNullOrWhiteSpace(paymentToken))
|
||||
{
|
||||
if(paymentToken.StartsWith("btok_"))
|
||||
if(!paymentMethodType.HasValue)
|
||||
{
|
||||
throw new BadRequestException("Invalid token.");
|
||||
if(paymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else if(paymentToken.StartsWith("btok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
}
|
||||
}
|
||||
|
||||
var paymentMethodType = PaymentMethodType.Card;
|
||||
if(!paymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
}
|
||||
|
||||
await _paymentService.PurchasePremiumAsync(user, paymentMethodType,
|
||||
await _paymentService.PurchasePremiumAsync(user, paymentMethodType.Value,
|
||||
paymentToken, additionalStorageGb);
|
||||
}
|
||||
else
|
||||
@ -795,29 +801,36 @@ namespace Bit.Core.Services
|
||||
{
|
||||
throw new BadRequestException("Not a premium user.");
|
||||
}
|
||||
|
||||
|
||||
await BillingHelpers.AdjustStorageAsync(_paymentService, user, storageAdjustmentGb, StoragePlanId);
|
||||
await SaveUserAsync(user);
|
||||
}
|
||||
|
||||
public async Task ReplacePaymentMethodAsync(User user, string paymentToken)
|
||||
public async Task ReplacePaymentMethodAsync(User user, string paymentToken,
|
||||
PaymentMethodType? paymentMethodType)
|
||||
{
|
||||
if(paymentToken.StartsWith("btok_"))
|
||||
{
|
||||
throw new BadRequestException("Invalid token.");
|
||||
}
|
||||
|
||||
PaymentMethodType paymentMethodType;
|
||||
if(paymentToken.StartsWith("tok_"))
|
||||
if(!paymentMethodType.HasValue)
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
if(paymentToken.StartsWith("tok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.Card;
|
||||
}
|
||||
else if(paymentToken.StartsWith("btok_"))
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.BankAccount;
|
||||
}
|
||||
else
|
||||
{
|
||||
paymentMethodType = PaymentMethodType.PayPal;
|
||||
}
|
||||
}
|
||||
|
||||
var updated = await _paymentService.UpdatePaymentMethodAsync(user, paymentMethodType, paymentToken);
|
||||
var updated = await _paymentService.UpdatePaymentMethodAsync(user, paymentMethodType.Value, paymentToken);
|
||||
if(updated)
|
||||
{
|
||||
await SaveUserAsync(user);
|
||||
|
Reference in New Issue
Block a user