mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-12 10:30:47 +01:00
wip
This commit is contained in:
parent
6366d2c053
commit
1258c46bf9
13 changed files with 84 additions and 63 deletions
|
@ -9,6 +9,7 @@ using BTCPayServer.Abstractions.Constants;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
using BTCPayServer.Filters;
|
using BTCPayServer.Filters;
|
||||||
using BTCPayServer.Models;
|
using BTCPayServer.Models;
|
||||||
|
using BTCPayServer.Payments;
|
||||||
using BTCPayServer.Rating;
|
using BTCPayServer.Rating;
|
||||||
using BTCPayServer.Security;
|
using BTCPayServer.Security;
|
||||||
using BTCPayServer.Security.Bitpay;
|
using BTCPayServer.Security.Bitpay;
|
||||||
|
@ -30,6 +31,7 @@ namespace BTCPayServer.Controllers
|
||||||
readonly BTCPayNetworkProvider _networkProvider;
|
readonly BTCPayNetworkProvider _networkProvider;
|
||||||
readonly CurrencyNameTable _currencyNameTable;
|
readonly CurrencyNameTable _currencyNameTable;
|
||||||
readonly StoreRepository _storeRepo;
|
readonly StoreRepository _storeRepo;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
private StoreData CurrentStore => HttpContext.GetStoreData();
|
private StoreData CurrentStore => HttpContext.GetStoreData();
|
||||||
|
|
||||||
|
@ -37,12 +39,13 @@ namespace BTCPayServer.Controllers
|
||||||
RateFetcher rateProviderFactory,
|
RateFetcher rateProviderFactory,
|
||||||
BTCPayNetworkProvider networkProvider,
|
BTCPayNetworkProvider networkProvider,
|
||||||
StoreRepository storeRepo,
|
StoreRepository storeRepo,
|
||||||
CurrencyNameTable currencyNameTable)
|
CurrencyNameTable currencyNameTable, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_rateProviderFactory = rateProviderFactory ?? throw new ArgumentNullException(nameof(rateProviderFactory));
|
_rateProviderFactory = rateProviderFactory ?? throw new ArgumentNullException(nameof(rateProviderFactory));
|
||||||
_networkProvider = networkProvider;
|
_networkProvider = networkProvider;
|
||||||
_storeRepo = storeRepo;
|
_storeRepo = storeRepo;
|
||||||
_currencyNameTable = currencyNameTable ?? throw new ArgumentNullException(nameof(currencyNameTable));
|
_currencyNameTable = currencyNameTable ?? throw new ArgumentNullException(nameof(currencyNameTable));
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Route("rates/{baseCurrency}")]
|
[Route("rates/{baseCurrency}")]
|
||||||
|
@ -50,7 +53,7 @@ namespace BTCPayServer.Controllers
|
||||||
[BitpayAPIConstraint]
|
[BitpayAPIConstraint]
|
||||||
public async Task<IActionResult> GetBaseCurrencyRates(string baseCurrency, CancellationToken cancellationToken)
|
public async Task<IActionResult> GetBaseCurrencyRates(string baseCurrency, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var supportedMethods = CurrentStore.GetSupportedPaymentMethods(_networkProvider);
|
var supportedMethods = CurrentStore.GetSupportedPaymentMethods(_networkProvider, _paymentTypeRegistry);
|
||||||
|
|
||||||
var currencyCodes = supportedMethods.Where(method => !string.IsNullOrEmpty(method.PaymentId.CryptoCode))
|
var currencyCodes = supportedMethods.Where(method => !string.IsNullOrEmpty(method.PaymentId.CryptoCode))
|
||||||
.Select(method => method.PaymentId.CryptoCode).Distinct();
|
.Select(method => method.PaymentId.CryptoCode).Distinct();
|
||||||
|
|
|
@ -28,17 +28,19 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private readonly IOptions<LightningNetworkOptions> _lightningNetworkOptions;
|
private readonly IOptions<LightningNetworkOptions> _lightningNetworkOptions;
|
||||||
private readonly LightningClientFactoryService _lightningClientFactory;
|
private readonly LightningClientFactoryService _lightningClientFactory;
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStoreLightningNodeApiController(
|
public GreenfieldStoreLightningNodeApiController(
|
||||||
IOptions<LightningNetworkOptions> lightningNetworkOptions,
|
IOptions<LightningNetworkOptions> lightningNetworkOptions,
|
||||||
LightningClientFactoryService lightningClientFactory, BTCPayNetworkProvider btcPayNetworkProvider,
|
LightningClientFactoryService lightningClientFactory, BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
PoliciesSettings policiesSettings,
|
PoliciesSettings policiesSettings,
|
||||||
IAuthorizationService authorizationService) : base(
|
IAuthorizationService authorizationService, PaymentTypeRegistry paymentTypeRegistry) : base(
|
||||||
btcPayNetworkProvider, policiesSettings, authorizationService)
|
btcPayNetworkProvider, policiesSettings, authorizationService)
|
||||||
{
|
{
|
||||||
_lightningNetworkOptions = lightningNetworkOptions;
|
_lightningNetworkOptions = lightningNetworkOptions;
|
||||||
_lightningClientFactory = lightningClientFactory;
|
_lightningClientFactory = lightningClientFactory;
|
||||||
_btcPayNetworkProvider = btcPayNetworkProvider;
|
_btcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanUseLightningNodeInStore,
|
[Authorize(Policy = Policies.CanUseLightningNodeInStore,
|
||||||
|
@ -151,7 +153,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
}
|
}
|
||||||
|
|
||||||
var id = new PaymentMethodId(cryptoCode, LightningPaymentType.Instance);
|
var id = new PaymentMethodId(cryptoCode, LightningPaymentType.Instance);
|
||||||
var existing = store.GetSupportedPaymentMethods(_btcPayNetworkProvider)
|
var existing = store.GetSupportedPaymentMethods(_btcPayNetworkProvider, _paymentTypeRegistry)
|
||||||
.OfType<LightningSupportedPaymentMethod>()
|
.OfType<LightningSupportedPaymentMethod>()
|
||||||
.FirstOrDefault(d => d.PaymentId == id);
|
.FirstOrDefault(d => d.PaymentId == id);
|
||||||
if (existing == null)
|
if (existing == null)
|
||||||
|
|
|
@ -32,22 +32,25 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private StoreData Store => HttpContext.GetStoreData();
|
private StoreData Store => HttpContext.GetStoreData();
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly StoreRepository _storeRepository;
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStoreLNURLPayPaymentMethodsController(
|
public GreenfieldStoreLNURLPayPaymentMethodsController(
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
BTCPayNetworkProvider btcPayNetworkProvider)
|
BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
|
PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_storeRepository = storeRepository;
|
_storeRepository = storeRepository;
|
||||||
_btcPayNetworkProvider = btcPayNetworkProvider;
|
_btcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<LNURLPayPaymentMethodData> GetLNURLPayPaymentMethods(StoreData store,
|
public static IEnumerable<LNURLPayPaymentMethodData> GetLNURLPayPaymentMethods(StoreData store,
|
||||||
BTCPayNetworkProvider networkProvider, bool? enabled)
|
BTCPayNetworkProvider networkProvider, bool? enabled, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var blob = store.GetStoreBlob();
|
var blob = store.GetStoreBlob();
|
||||||
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
||||||
|
|
||||||
return store.GetSupportedPaymentMethods(networkProvider)
|
return store.GetSupportedPaymentMethods(networkProvider, paymentTypeRegistry)
|
||||||
.Where((method) => method.PaymentId.PaymentType == LNURLPayPaymentType.Instance)
|
.Where((method) => method.PaymentId.PaymentType == LNURLPayPaymentType.Instance)
|
||||||
.OfType<LNURLPaySupportedPaymentMethod>()
|
.OfType<LNURLPaySupportedPaymentMethod>()
|
||||||
.Select(paymentMethod =>
|
.Select(paymentMethod =>
|
||||||
|
@ -67,7 +70,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
string storeId,
|
string storeId,
|
||||||
[FromQuery] bool? enabled)
|
[FromQuery] bool? enabled)
|
||||||
{
|
{
|
||||||
return Ok(GetLNURLPayPaymentMethods(Store, _btcPayNetworkProvider, enabled));
|
return Ok(GetLNURLPayPaymentMethods(Store, _btcPayNetworkProvider, enabled, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -110,7 +113,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
AssertCryptoCodeWallet(cryptoCode, out _);
|
AssertCryptoCodeWallet(cryptoCode, out _);
|
||||||
|
|
||||||
var lnMethod = GreenfieldStoreLightningNetworkPaymentMethodsController.GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider,
|
var lnMethod = GreenfieldStoreLightningNetworkPaymentMethodsController.GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider,
|
||||||
cryptoCode, Store);
|
cryptoCode, Store, _paymentTypeRegistry);
|
||||||
|
|
||||||
if ((lnMethod is null || lnMethod.Enabled is false) && paymentMethodData.Enabled)
|
if ((lnMethod is null || lnMethod.Enabled is false) && paymentMethodData.Enabled)
|
||||||
{
|
{
|
||||||
|
@ -143,7 +146,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
var id = new PaymentMethodId(cryptoCode, LNURLPayPaymentType.Instance);
|
var id = new PaymentMethodId(cryptoCode, LNURLPayPaymentType.Instance);
|
||||||
var paymentMethod = store
|
var paymentMethod = store
|
||||||
.GetSupportedPaymentMethods(_btcPayNetworkProvider)
|
.GetSupportedPaymentMethods(_btcPayNetworkProvider, _paymentTypeRegistry)
|
||||||
.OfType<LNURLPaySupportedPaymentMethod>()
|
.OfType<LNURLPaySupportedPaymentMethod>()
|
||||||
.FirstOrDefault(method => method.PaymentId == id);
|
.FirstOrDefault(method => method.PaymentId == id);
|
||||||
|
|
||||||
|
|
|
@ -37,27 +37,30 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly StoreRepository _storeRepository;
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStoreLightningNetworkPaymentMethodsController(
|
public GreenfieldStoreLightningNetworkPaymentMethodsController(
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
BTCPayNetworkProvider btcPayNetworkProvider,
|
BTCPayNetworkProvider btcPayNetworkProvider,
|
||||||
IAuthorizationService authorizationService,
|
IAuthorizationService authorizationService,
|
||||||
ISettingsRepository settingsRepository,
|
ISettingsRepository settingsRepository,
|
||||||
PoliciesSettings policiesSettings)
|
PoliciesSettings policiesSettings,
|
||||||
|
PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_storeRepository = storeRepository;
|
_storeRepository = storeRepository;
|
||||||
_btcPayNetworkProvider = btcPayNetworkProvider;
|
_btcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
PoliciesSettings = policiesSettings;
|
PoliciesSettings = policiesSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<LightningNetworkPaymentMethodData> GetLightningPaymentMethods(StoreData store,
|
public static IEnumerable<LightningNetworkPaymentMethodData> GetLightningPaymentMethods(StoreData store,
|
||||||
BTCPayNetworkProvider networkProvider, bool? enabled)
|
BTCPayNetworkProvider networkProvider, bool? enabled, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var blob = store.GetStoreBlob();
|
var blob = store.GetStoreBlob();
|
||||||
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
||||||
|
|
||||||
return store.GetSupportedPaymentMethods(networkProvider)
|
return store.GetSupportedPaymentMethods(networkProvider, paymentTypeRegistry )
|
||||||
.Where((method) => method.PaymentId.PaymentType == LightningPaymentType.Instance)
|
.Where((method) => method.PaymentId.PaymentType == LightningPaymentType.Instance)
|
||||||
.OfType<LightningSupportedPaymentMethod>()
|
.OfType<LightningSupportedPaymentMethod>()
|
||||||
.Select(paymentMethod =>
|
.Select(paymentMethod =>
|
||||||
|
@ -79,7 +82,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
string storeId,
|
string storeId,
|
||||||
[FromQuery] bool? enabled)
|
[FromQuery] bool? enabled)
|
||||||
{
|
{
|
||||||
return Ok(GetLightningPaymentMethods(Store, _btcPayNetworkProvider, enabled));
|
return Ok(GetLightningPaymentMethods(Store, _btcPayNetworkProvider, enabled, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -88,7 +91,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
{
|
{
|
||||||
AssertSupportLightning(cryptoCode);
|
AssertSupportLightning(cryptoCode);
|
||||||
|
|
||||||
var method = GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, Store);
|
var method = GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, Store, _paymentTypeRegistry);
|
||||||
if (method is null)
|
if (method is null)
|
||||||
{
|
{
|
||||||
throw ErrorPaymentMethodNotConfigured();
|
throw ErrorPaymentMethodNotConfigured();
|
||||||
|
@ -137,7 +140,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
LightningSupportedPaymentMethod? paymentMethod = null;
|
LightningSupportedPaymentMethod? paymentMethod = null;
|
||||||
var store = Store;
|
var store = Store;
|
||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
var existing = GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, store);
|
var existing = GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, store, _paymentTypeRegistry);
|
||||||
if (existing == null || existing.ConnectionString != request.ConnectionString)
|
if (existing == null || existing.ConnectionString != request.ConnectionString)
|
||||||
{
|
{
|
||||||
if (request.ConnectionString == LightningSupportedPaymentMethod.InternalNode)
|
if (request.ConnectionString == LightningSupportedPaymentMethod.InternalNode)
|
||||||
|
@ -187,17 +190,17 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
storeBlob.SetExcluded(paymentMethodId, !request.Enabled);
|
storeBlob.SetExcluded(paymentMethodId, !request.Enabled);
|
||||||
store.SetStoreBlob(storeBlob);
|
store.SetStoreBlob(storeBlob);
|
||||||
await _storeRepository.UpdateStore(store);
|
await _storeRepository.UpdateStore(store);
|
||||||
return Ok(GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, store));
|
return Ok(GetExistingLightningLikePaymentMethod(_btcPayNetworkProvider, cryptoCode, store, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LightningNetworkPaymentMethodData? GetExistingLightningLikePaymentMethod(BTCPayNetworkProvider btcPayNetworkProvider, string cryptoCode,
|
public static LightningNetworkPaymentMethodData? GetExistingLightningLikePaymentMethod(BTCPayNetworkProvider btcPayNetworkProvider, string cryptoCode,
|
||||||
StoreData store)
|
StoreData store, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
|
|
||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
var id = new PaymentMethodId(cryptoCode, LightningPaymentType.Instance);
|
var id = new PaymentMethodId(cryptoCode, LightningPaymentType.Instance);
|
||||||
var paymentMethod = store
|
var paymentMethod = store
|
||||||
.GetSupportedPaymentMethods(btcPayNetworkProvider)
|
.GetSupportedPaymentMethods(btcPayNetworkProvider, paymentTypeRegistry)
|
||||||
.OfType<LightningSupportedPaymentMethod>()
|
.OfType<LightningSupportedPaymentMethod>()
|
||||||
.FirstOrDefault(method => method.PaymentId == id);
|
.FirstOrDefault(method => method.PaymentId == id);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
private readonly ExplorerClientProvider _explorerClientProvider;
|
private readonly ExplorerClientProvider _explorerClientProvider;
|
||||||
private readonly EventAggregator _eventAggregator;
|
private readonly EventAggregator _eventAggregator;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStoreOnChainPaymentMethodsController(
|
public GreenfieldStoreOnChainPaymentMethodsController(
|
||||||
StoreRepository storeRepository,
|
StoreRepository storeRepository,
|
||||||
|
@ -46,7 +47,8 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
IAuthorizationService authorizationService,
|
IAuthorizationService authorizationService,
|
||||||
ExplorerClientProvider explorerClientProvider,
|
ExplorerClientProvider explorerClientProvider,
|
||||||
PoliciesSettings policiesSettings,
|
PoliciesSettings policiesSettings,
|
||||||
EventAggregator eventAggregator)
|
EventAggregator eventAggregator,
|
||||||
|
PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_storeRepository = storeRepository;
|
_storeRepository = storeRepository;
|
||||||
_btcPayNetworkProvider = btcPayNetworkProvider;
|
_btcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
|
@ -54,16 +56,17 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
_explorerClientProvider = explorerClientProvider;
|
_explorerClientProvider = explorerClientProvider;
|
||||||
_eventAggregator = eventAggregator;
|
_eventAggregator = eventAggregator;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
PoliciesSettings = policiesSettings;
|
PoliciesSettings = policiesSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<OnChainPaymentMethodData> GetOnChainPaymentMethods(StoreData store,
|
public static IEnumerable<OnChainPaymentMethodData> GetOnChainPaymentMethods(StoreData store,
|
||||||
BTCPayNetworkProvider networkProvider, bool? enabled)
|
BTCPayNetworkProvider networkProvider, bool? enabled, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var blob = store.GetStoreBlob();
|
var blob = store.GetStoreBlob();
|
||||||
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
var excludedPaymentMethods = blob.GetExcludedPaymentMethods();
|
||||||
|
|
||||||
return store.GetSupportedPaymentMethods(networkProvider)
|
return store.GetSupportedPaymentMethods(networkProvider, paymentTypeRegistry)
|
||||||
.Where((method) => method.PaymentId.PaymentType == BitcoinPaymentType.Instance)
|
.Where((method) => method.PaymentId.PaymentType == BitcoinPaymentType.Instance)
|
||||||
.OfType<DerivationSchemeSettings>()
|
.OfType<DerivationSchemeSettings>()
|
||||||
.Select(strategy =>
|
.Select(strategy =>
|
||||||
|
@ -81,7 +84,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
string storeId,
|
string storeId,
|
||||||
[FromQuery] bool? enabled)
|
[FromQuery] bool? enabled)
|
||||||
{
|
{
|
||||||
return Ok(GetOnChainPaymentMethods(Store, _btcPayNetworkProvider, enabled));
|
return Ok(GetOnChainPaymentMethods(Store, _btcPayNetworkProvider, enabled, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -295,7 +298,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
var id = new PaymentMethodId(cryptoCode, BitcoinPaymentType.Instance);
|
var id = new PaymentMethodId(cryptoCode, BitcoinPaymentType.Instance);
|
||||||
var paymentMethod = store
|
var paymentMethod = store
|
||||||
.GetSupportedPaymentMethods(_btcPayNetworkProvider)
|
.GetSupportedPaymentMethods(_btcPayNetworkProvider, _paymentTypeRegistry)
|
||||||
.OfType<DerivationSchemeSettings>()
|
.OfType<DerivationSchemeSettings>()
|
||||||
.FirstOrDefault(method => method.PaymentId == id);
|
.FirstOrDefault(method => method.PaymentId == id);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ using BTCPayServer.Client.Models;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
using BTCPayServer.HostedServices;
|
using BTCPayServer.HostedServices;
|
||||||
using BTCPayServer.Models.WalletViewModels;
|
using BTCPayServer.Models.WalletViewModels;
|
||||||
|
using BTCPayServer.Payments;
|
||||||
using BTCPayServer.Payments.PayJoin;
|
using BTCPayServer.Payments.PayJoin;
|
||||||
using BTCPayServer.Payments.PayJoin.Sender;
|
using BTCPayServer.Payments.PayJoin.Sender;
|
||||||
using BTCPayServer.Services;
|
using BTCPayServer.Services;
|
||||||
|
@ -54,6 +55,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private readonly WalletReceiveService _walletReceiveService;
|
private readonly WalletReceiveService _walletReceiveService;
|
||||||
private readonly IFeeProviderFactory _feeProviderFactory;
|
private readonly IFeeProviderFactory _feeProviderFactory;
|
||||||
private readonly UTXOLocker _utxoLocker;
|
private readonly UTXOLocker _utxoLocker;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStoreOnChainWalletsController(
|
public GreenfieldStoreOnChainWalletsController(
|
||||||
IAuthorizationService authorizationService,
|
IAuthorizationService authorizationService,
|
||||||
|
@ -69,7 +71,8 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
EventAggregator eventAggregator,
|
EventAggregator eventAggregator,
|
||||||
WalletReceiveService walletReceiveService,
|
WalletReceiveService walletReceiveService,
|
||||||
IFeeProviderFactory feeProviderFactory,
|
IFeeProviderFactory feeProviderFactory,
|
||||||
UTXOLocker utxoLocker
|
UTXOLocker utxoLocker,
|
||||||
|
PaymentTypeRegistry paymentTypeRegistry
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
|
@ -86,6 +89,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
_walletReceiveService = walletReceiveService;
|
_walletReceiveService = walletReceiveService;
|
||||||
_feeProviderFactory = feeProviderFactory;
|
_feeProviderFactory = feeProviderFactory;
|
||||||
_utxoLocker = utxoLocker;
|
_utxoLocker = utxoLocker;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -801,7 +805,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private DerivationSchemeSettings? GetDerivationSchemeSettings(string cryptoCode)
|
private DerivationSchemeSettings? GetDerivationSchemeSettings(string cryptoCode)
|
||||||
{
|
{
|
||||||
var paymentMethod = Store
|
var paymentMethod = Store
|
||||||
.GetSupportedPaymentMethods(_btcPayNetworkProvider)
|
.GetSupportedPaymentMethods(_btcPayNetworkProvider, _paymentTypeRegistry)
|
||||||
.OfType<DerivationSchemeSettings>()
|
.OfType<DerivationSchemeSettings>()
|
||||||
.FirstOrDefault(p =>
|
.FirstOrDefault(p =>
|
||||||
p.PaymentId.PaymentType == Payments.BitcoinPaymentType.Instance &&
|
p.PaymentId.PaymentType == Payments.BitcoinPaymentType.Instance &&
|
||||||
|
|
|
@ -6,6 +6,7 @@ using BTCPayServer.Abstractions.Constants;
|
||||||
using BTCPayServer.Client;
|
using BTCPayServer.Client;
|
||||||
using BTCPayServer.Client.Models;
|
using BTCPayServer.Client.Models;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
|
using BTCPayServer.Payments;
|
||||||
using BTCPayServer.Security;
|
using BTCPayServer.Security;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Cors;
|
using Microsoft.AspNetCore.Cors;
|
||||||
|
@ -22,11 +23,13 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
private StoreData Store => HttpContext.GetStoreData();
|
private StoreData Store => HttpContext.GetStoreData();
|
||||||
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
private readonly BTCPayNetworkProvider _btcPayNetworkProvider;
|
||||||
private readonly IAuthorizationService _authorizationService;
|
private readonly IAuthorizationService _authorizationService;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
|
|
||||||
public GreenfieldStorePaymentMethodsController(BTCPayNetworkProvider btcPayNetworkProvider, IAuthorizationService authorizationService)
|
public GreenfieldStorePaymentMethodsController(BTCPayNetworkProvider btcPayNetworkProvider, IAuthorizationService authorizationService, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_btcPayNetworkProvider = btcPayNetworkProvider;
|
_btcPayNetworkProvider = btcPayNetworkProvider;
|
||||||
_authorizationService = authorizationService;
|
_authorizationService = authorizationService;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -40,7 +43,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
var canModifyStore = (await _authorizationService.AuthorizeAsync(User, null,
|
var canModifyStore = (await _authorizationService.AuthorizeAsync(User, null,
|
||||||
new PolicyRequirement(Policies.CanModifyStoreSettings))).Succeeded;
|
new PolicyRequirement(Policies.CanModifyStoreSettings))).Succeeded;
|
||||||
;
|
;
|
||||||
return Ok(Store.GetSupportedPaymentMethods(_btcPayNetworkProvider)
|
return Ok(Store.GetSupportedPaymentMethods(_btcPayNetworkProvider, _paymentTypeRegistry)
|
||||||
.Where(method =>
|
.Where(method =>
|
||||||
enabled is null || (enabled is false && excludedPaymentMethods.Match(method.PaymentId)))
|
enabled is null || (enabled is false && excludedPaymentMethods.Match(method.PaymentId)))
|
||||||
.ToDictionary(
|
.ToDictionary(
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
public Task<ActionResult<IEnumerable<Client.Models.StoreData>>> GetStores()
|
public Task<ActionResult<IEnumerable<Client.Models.StoreData>>> GetStores()
|
||||||
{
|
{
|
||||||
var stores = HttpContext.GetStoresData();
|
var stores = HttpContext.GetStoresData();
|
||||||
return Task.FromResult<ActionResult<IEnumerable<Client.Models.StoreData>>>(Ok(stores.Select(FromModel)));
|
return Task.FromResult<ActionResult<IEnumerable<Client.Models.StoreData>>>(Ok(stores.Select(data => FromModel(data, _paymentTypeRegistry))));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -52,7 +52,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
{
|
{
|
||||||
return StoreNotFound();
|
return StoreNotFound();
|
||||||
}
|
}
|
||||||
return Ok(FromModel(store));
|
return Ok(FromModel(store, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -89,7 +89,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
_paymentTypeRegistry.TryParsePaymentMethod(request.DefaultPaymentMethod, out var defaultPaymentMethodId);
|
_paymentTypeRegistry.TryParsePaymentMethod(request.DefaultPaymentMethod, out var defaultPaymentMethodId);
|
||||||
ToModel(request, store, defaultPaymentMethodId);
|
ToModel(request, store, defaultPaymentMethodId);
|
||||||
await _storeRepository.CreateStore(_userManager.GetUserId(User), store);
|
await _storeRepository.CreateStore(_userManager.GetUserId(User), store);
|
||||||
return Ok(FromModel(store));
|
return Ok(FromModel(store, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
|
@ -111,10 +111,10 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
|
|
||||||
ToModel(request, store, defaultPaymentMethodId);
|
ToModel(request, store, defaultPaymentMethodId);
|
||||||
await _storeRepository.UpdateStore(store);
|
await _storeRepository.UpdateStore(store);
|
||||||
return Ok(FromModel(store));
|
return Ok(FromModel(store, _paymentTypeRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static Client.Models.StoreData FromModel(Data.StoreData data)
|
internal static Client.Models.StoreData FromModel(StoreData data, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var storeBlob = data.GetStoreBlob();
|
var storeBlob = data.GetStoreBlob();
|
||||||
return new Client.Models.StoreData
|
return new Client.Models.StoreData
|
||||||
|
@ -124,7 +124,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
Website = data.StoreWebsite,
|
Website = data.StoreWebsite,
|
||||||
SupportUrl = storeBlob.StoreSupportUrl,
|
SupportUrl = storeBlob.StoreSupportUrl,
|
||||||
SpeedPolicy = data.SpeedPolicy,
|
SpeedPolicy = data.SpeedPolicy,
|
||||||
DefaultPaymentMethod = data.GetDefaultPaymentId()?.ToStringNormalized(),
|
DefaultPaymentMethod = data.GetDefaultPaymentId(paymentTypeRegistry)?.ToStringNormalized(),
|
||||||
//blob
|
//blob
|
||||||
//we do not include DefaultCurrencyPairs,Spread, PreferredExchange, RateScripting, RateScript in this model and instead opt to set it in stores/storeid/rates endpoints
|
//we do not include DefaultCurrencyPairs,Spread, PreferredExchange, RateScripting, RateScript in this model and instead opt to set it in stores/storeid/rates endpoints
|
||||||
//we do not include ExcludedPaymentMethods in this model and instead opt to set it in stores/storeid/payment-methods endpoints
|
//we do not include ExcludedPaymentMethods in this model and instead opt to set it in stores/storeid/payment-methods endpoints
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Threading.Tasks;
|
||||||
using BTCPayServer.Abstractions.Constants;
|
using BTCPayServer.Abstractions.Constants;
|
||||||
using BTCPayServer.Client;
|
using BTCPayServer.Client;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
|
using BTCPayServer.Payments;
|
||||||
using BTCPayServer.Security;
|
using BTCPayServer.Security;
|
||||||
using BTCPayServer.Services.Stores;
|
using BTCPayServer.Services.Stores;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
@ -22,14 +23,12 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
public class GreenfieldTestApiKeyController : ControllerBase
|
public class GreenfieldTestApiKeyController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
private readonly StoreRepository _storeRepository;
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
private readonly BTCPayServerClient _localBTCPayServerClient;
|
|
||||||
|
|
||||||
public GreenfieldTestApiKeyController(UserManager<ApplicationUser> userManager, StoreRepository storeRepository, BTCPayServerClient localBTCPayServerClient)
|
public GreenfieldTestApiKeyController(UserManager<ApplicationUser> userManager, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_storeRepository = storeRepository;
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
_localBTCPayServerClient = localBTCPayServerClient;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("me/id")]
|
[HttpGet("me/id")]
|
||||||
|
@ -57,7 +56,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
[Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
|
||||||
public BTCPayServer.Client.Models.StoreData[] GetCurrentUserStores()
|
public BTCPayServer.Client.Models.StoreData[] GetCurrentUserStores()
|
||||||
{
|
{
|
||||||
return this.HttpContext.GetStoresData().Select(Greenfield.GreenfieldStoresController.FromModel).ToArray();
|
return this.HttpContext.GetStoresData().Select(data => Greenfield.GreenfieldStoresController.FromModel(data, _paymentTypeRegistry)).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("me/stores/{storeId}/can-view")]
|
[HttpGet("me/stores/{storeId}/can-view")]
|
||||||
|
|
|
@ -66,6 +66,7 @@ namespace BTCPayServer.Controllers
|
||||||
private readonly DelayedTransactionBroadcaster _broadcaster;
|
private readonly DelayedTransactionBroadcaster _broadcaster;
|
||||||
private readonly PayjoinClient _payjoinClient;
|
private readonly PayjoinClient _payjoinClient;
|
||||||
private readonly LabelService _labelService;
|
private readonly LabelService _labelService;
|
||||||
|
private readonly PaymentTypeRegistry _paymentTypeRegistry;
|
||||||
private readonly PullPaymentHostedService _pullPaymentHostedService;
|
private readonly PullPaymentHostedService _pullPaymentHostedService;
|
||||||
private readonly WalletHistogramService _walletHistogramService;
|
private readonly WalletHistogramService _walletHistogramService;
|
||||||
|
|
||||||
|
@ -89,10 +90,12 @@ namespace BTCPayServer.Controllers
|
||||||
PayjoinClient payjoinClient,
|
PayjoinClient payjoinClient,
|
||||||
IServiceProvider serviceProvider,
|
IServiceProvider serviceProvider,
|
||||||
PullPaymentHostedService pullPaymentHostedService,
|
PullPaymentHostedService pullPaymentHostedService,
|
||||||
LabelService labelService)
|
LabelService labelService,
|
||||||
|
PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
_currencyTable = currencyTable;
|
_currencyTable = currencyTable;
|
||||||
_labelService = labelService;
|
_labelService = labelService;
|
||||||
|
_paymentTypeRegistry = paymentTypeRegistry;
|
||||||
Repository = repo;
|
Repository = repo;
|
||||||
WalletRepository = walletRepository;
|
WalletRepository = walletRepository;
|
||||||
RateFetcher = rateProvider;
|
RateFetcher = rateProvider;
|
||||||
|
@ -171,7 +174,7 @@ namespace BTCPayServer.Controllers
|
||||||
var stores = await Repository.GetStoresByUserId(GetUserId());
|
var stores = await Repository.GetStoresByUserId(GetUserId());
|
||||||
|
|
||||||
var onChainWallets = stores
|
var onChainWallets = stores
|
||||||
.SelectMany(s => s.GetSupportedPaymentMethods(NetworkProvider)
|
.SelectMany(s => s.GetSupportedPaymentMethods(NetworkProvider, _paymentTypeRegistry)
|
||||||
.OfType<DerivationSchemeSettings>()
|
.OfType<DerivationSchemeSettings>()
|
||||||
.Select(d => ((Wallet: _walletProvider.GetWallet(d.Network),
|
.Select(d => ((Wallet: _walletProvider.GetWallet(d.Network),
|
||||||
DerivationStrategy: d.AccountDerivation,
|
DerivationStrategy: d.AccountDerivation,
|
||||||
|
|
|
@ -24,15 +24,15 @@ namespace BTCPayServer.Data
|
||||||
return defaultPaymentId;
|
return defaultPaymentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PaymentMethodId[] GetEnabledPaymentIds(this StoreData storeData, BTCPayNetworkProvider networks)
|
public static PaymentMethodId[] GetEnabledPaymentIds(this StoreData storeData, BTCPayNetworkProvider networks, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
return GetEnabledPaymentMethods(storeData, networks).Select(method => method.PaymentId).ToArray();
|
return GetEnabledPaymentMethods(storeData, networks, paymentTypeRegistry).Select(method => method.PaymentId).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ISupportedPaymentMethod[] GetEnabledPaymentMethods(this StoreData storeData, BTCPayNetworkProvider networks)
|
public static ISupportedPaymentMethod[] GetEnabledPaymentMethods(this StoreData storeData, BTCPayNetworkProvider networks, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var excludeFilter = storeData.GetStoreBlob().GetExcludedPaymentMethods();
|
var excludeFilter = storeData.GetStoreBlob().GetExcludedPaymentMethods();
|
||||||
var paymentMethodIds = storeData.GetSupportedPaymentMethods(networks)
|
var paymentMethodIds = storeData.GetSupportedPaymentMethods(networks, paymentTypeRegistry)
|
||||||
.Where(a => !excludeFilter.Match(a.PaymentId))
|
.Where(a => !excludeFilter.Match(a.PaymentId))
|
||||||
.OrderByDescending(a => a.PaymentId.CryptoCode == "BTC")
|
.OrderByDescending(a => a.PaymentId.CryptoCode == "BTC")
|
||||||
.ThenBy(a => a.PaymentId.CryptoCode)
|
.ThenBy(a => a.PaymentId.CryptoCode)
|
||||||
|
@ -69,7 +69,7 @@ namespace BTCPayServer.Data
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<ISupportedPaymentMethod> GetSupportedPaymentMethods(this StoreData storeData, BTCPayNetworkProvider networks)
|
public static IEnumerable<ISupportedPaymentMethod> GetSupportedPaymentMethods(this StoreData storeData, BTCPayNetworkProvider networks, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(storeData);
|
ArgumentNullException.ThrowIfNull(storeData);
|
||||||
#pragma warning disable CS0618
|
#pragma warning disable CS0618
|
||||||
|
@ -80,7 +80,7 @@ namespace BTCPayServer.Data
|
||||||
JObject strategies = JObject.Parse(storeData.DerivationStrategies);
|
JObject strategies = JObject.Parse(storeData.DerivationStrategies);
|
||||||
foreach (var strat in strategies.Properties())
|
foreach (var strat in strategies.Properties())
|
||||||
{
|
{
|
||||||
if (!_paymentTypeRegistry.TryParsePaymentMethod(strat.Name, out var paymentMethodId))
|
if (!paymentTypeRegistry.TryParsePaymentMethod(strat.Name, out var paymentMethodId))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -127,11 +127,8 @@ namespace BTCPayServer.Data
|
||||||
bool existing = false;
|
bool existing = false;
|
||||||
foreach (var strat in strategies.Properties().ToList())
|
foreach (var strat in strategies.Properties().ToList())
|
||||||
{
|
{
|
||||||
if (!_paymentTypeRegistry.TryParsePaymentMethod(strat.Name, out var stratId))
|
|
||||||
{
|
if (strat.Name == paymentMethodId.PaymentType.GetPaymentMethodId(paymentMethodId))
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (stratId == paymentMethodId)
|
|
||||||
{
|
{
|
||||||
if (supportedPaymentMethod == null)
|
if (supportedPaymentMethod == null)
|
||||||
{
|
{
|
||||||
|
@ -151,19 +148,19 @@ namespace BTCPayServer.Data
|
||||||
#pragma warning restore CS0618
|
#pragma warning restore CS0618
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsLightningEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode)
|
public static bool IsLightningEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
return IsPaymentTypeEnabled(storeData, networks, cryptoCode, LightningPaymentType.Instance);
|
return IsPaymentTypeEnabled(storeData, networks, cryptoCode, LightningPaymentType.Instance, paymentTypeRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsLNUrlEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode)
|
public static bool IsLNUrlEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
return IsPaymentTypeEnabled(storeData, networks, cryptoCode, LNURLPayPaymentType.Instance);
|
return IsPaymentTypeEnabled(storeData, networks, cryptoCode, LNURLPayPaymentType.Instance, paymentTypeRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsPaymentTypeEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode, PaymentType paymentType)
|
private static bool IsPaymentTypeEnabled(this StoreData storeData, BTCPayNetworkProvider networks, string cryptoCode, PaymentType paymentType, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
var paymentMethods = storeData.GetSupportedPaymentMethods(networks);
|
var paymentMethods = storeData.GetSupportedPaymentMethods(networks, paymentTypeRegistry);
|
||||||
var excludeFilters = storeData.GetStoreBlob().GetExcludedPaymentMethods();
|
var excludeFilters = storeData.GetStoreBlob().GetExcludedPaymentMethods();
|
||||||
return paymentMethods.Any(method =>
|
return paymentMethods.Any(method =>
|
||||||
method.PaymentId.CryptoCode == cryptoCode &&
|
method.PaymentId.CryptoCode == cryptoCode &&
|
||||||
|
|
|
@ -125,9 +125,9 @@ namespace BTCPayServer
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PaymentMethodId GetpaymentMethodId(this InvoiceCryptoInfo info)
|
public static PaymentMethodId GetpaymentMethodId(this InvoiceCryptoInfo info, PaymentTypeRegistry paymentTypeRegistry)
|
||||||
{
|
{
|
||||||
return new PaymentMethodId(info.CryptoCode, PaymentTypes.Parse(info.PaymentType));
|
return new PaymentMethodId(info.CryptoCode, paymentTypeRegistry.Parse(info.PaymentType));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task CloseSocket(this WebSocket webSocket)
|
public static async Task CloseSocket(this WebSocket webSocket)
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using BTCPayServer.Payments;
|
using BTCPayServer.Payments;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace BTCPayServer.ModelBinders
|
namespace BTCPayServer.ModelBinders
|
||||||
{
|
{
|
||||||
|
@ -21,8 +22,8 @@ namespace BTCPayServer.ModelBinders
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
var paymentTypeRegistry = bindingContext.HttpContext.RequestServices.GetRequiredService<PaymentTypeRegistry>();
|
||||||
if (_paymentTypeRegistry.TryParsePaymentMethod(key, out var paymentId))
|
if (paymentTypeRegistry.TryParsePaymentMethod(key, out var paymentId))
|
||||||
{
|
{
|
||||||
bindingContext.Result = ModelBindingResult.Success(paymentId);
|
bindingContext.Result = ModelBindingResult.Success(paymentId);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue