mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 06:24:24 +01:00
Move checkout registration to the UI Extension
This commit is contained in:
@@ -941,19 +941,9 @@ namespace BTCPayServer.Controllers
|
|||||||
extension.ModifyPaymentModel(new PaymentModelContext(model, store, storeBlob, invoice, Url, kv, h, paymentMethodId == kv.PaymentMethodId));
|
extension.ModifyPaymentModel(new PaymentModelContext(model, store, storeBlob, invoice, Url, kv, h, paymentMethodId == kv.PaymentMethodId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
model.UISettings = _viewProvider.TryGetViewViewModel(prompt, "CheckoutUI")?.View as CheckoutUIPaymentMethodSettings;
|
|
||||||
model.PaymentMethodId = paymentMethodId.ToString();
|
model.PaymentMethodId = paymentMethodId.ToString();
|
||||||
model.OrderAmountFiat = OrderAmountFromInvoice(model.CryptoCode, invoice, DisplayFormatter.CurrencyFormat.Symbol);
|
model.OrderAmountFiat = OrderAmountFromInvoice(model.CryptoCode, invoice, DisplayFormatter.CurrencyFormat.Symbol);
|
||||||
|
|
||||||
foreach (var paymentPrompt in invoice.GetPaymentPrompts())
|
|
||||||
{
|
|
||||||
var vvm = _viewProvider.TryGetViewViewModel(paymentPrompt, "CheckoutUI");
|
|
||||||
if (vvm?.View is CheckoutUIPaymentMethodSettings { ExtensionPartial: { } partial })
|
|
||||||
{
|
|
||||||
model.ExtensionPartials.Add(partial);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (storeBlob.PlaySoundOnPayment)
|
if (storeBlob.PlaySoundOnPayment)
|
||||||
{
|
{
|
||||||
model.PaymentSoundUrl = storeBlob.PaymentSoundUrl is null
|
model.PaymentSoundUrl = storeBlob.PaymentSoundUrl is null
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ using System.Text;
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using BTCPayServer.Abstractions.Contracts;
|
||||||
|
using BTCPayServer.Abstractions.Services;
|
||||||
using BTCPayServer.BIP78.Sender;
|
using BTCPayServer.BIP78.Sender;
|
||||||
using BTCPayServer.Configuration;
|
using BTCPayServer.Configuration;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
@@ -289,6 +291,13 @@ namespace BTCPayServer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static IServiceCollection AddUIExtension(this IServiceCollection services, string key, string partialView)
|
||||||
|
{
|
||||||
|
services.AddSingleton<IUIExtension>(new UIExtension(partialView,
|
||||||
|
key));
|
||||||
|
return services;
|
||||||
|
}
|
||||||
public static IServiceCollection AddReportProvider<T>(this IServiceCollection services)
|
public static IServiceCollection AddReportProvider<T>(this IServiceCollection services)
|
||||||
where T : ReportProvider
|
where T : ReportProvider
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -365,6 +365,9 @@ namespace BTCPayServer.Hosting
|
|||||||
o.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(DerivationStrategyBase)));
|
o.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(DerivationStrategyBase)));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
services.AddUIExtension("checkout-end", "Bitcoin/BitcoinLikeMethodCheckout");
|
||||||
|
services.AddUIExtension("checkout-end", "Lightning/LightningLikeMethodCheckout");
|
||||||
|
|
||||||
services.AddSingleton<Services.NBXplorerConnectionFactory>();
|
services.AddSingleton<Services.NBXplorerConnectionFactory>();
|
||||||
services.AddSingleton<IHostedService, Services.NBXplorerConnectionFactory>(o => o.GetRequiredService<Services.NBXplorerConnectionFactory>());
|
services.AddSingleton<IHostedService, Services.NBXplorerConnectionFactory>(o => o.GetRequiredService<Services.NBXplorerConnectionFactory>());
|
||||||
services.AddSingleton<HostedServices.CheckConfigurationHostedService>();
|
services.AddSingleton<HostedServices.CheckConfigurationHostedService>();
|
||||||
@@ -631,8 +634,6 @@ o.GetRequiredService<IEnumerable<IPaymentLinkExtension>>().ToDictionary(o => o.P
|
|||||||
(BitcoinPaymentModelExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentModelExtension), new object[] { network, pmi }));
|
(BitcoinPaymentModelExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentModelExtension), new object[] { network, pmi }));
|
||||||
services.AddSingleton<IPaymentMethodBitpayAPIExtension>(provider =>
|
services.AddSingleton<IPaymentMethodBitpayAPIExtension>(provider =>
|
||||||
(IPaymentMethodBitpayAPIExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentMethodBitpayAPIExtension), new object[] { pmi }));
|
(IPaymentMethodBitpayAPIExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentMethodBitpayAPIExtension), new object[] { pmi }));
|
||||||
services.AddSingleton<IPaymentMethodViewExtension>(provider =>
|
|
||||||
(IPaymentMethodViewExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentMethodViewExtension), new object[] { pmi }));
|
|
||||||
|
|
||||||
if (!network.ReadonlyWallet && network.WalletSupported)
|
if (!network.ReadonlyWallet && network.WalletSupported)
|
||||||
{
|
{
|
||||||
@@ -652,8 +653,6 @@ o.GetRequiredService<IEnumerable<IPaymentLinkExtension>>().ToDictionary(o => o.P
|
|||||||
(IPaymentLinkExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentLinkExtension), new object[] { network, pmi }));
|
(IPaymentLinkExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentLinkExtension), new object[] { network, pmi }));
|
||||||
services.AddSingleton<IPaymentModelExtension>(provider =>
|
services.AddSingleton<IPaymentModelExtension>(provider =>
|
||||||
(IPaymentModelExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentModelExtension), new object[] { network, pmi }));
|
(IPaymentModelExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentModelExtension), new object[] { network, pmi }));
|
||||||
services.AddSingleton<IPaymentMethodViewExtension>(provider =>
|
|
||||||
(IPaymentMethodViewExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentMethodViewExtension), new object[] { pmi }));
|
|
||||||
services.AddSingleton<IPaymentMethodBitpayAPIExtension>(provider =>
|
services.AddSingleton<IPaymentMethodBitpayAPIExtension>(provider =>
|
||||||
(IPaymentMethodBitpayAPIExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentMethodBitpayAPIExtension), new object[] { pmi }));
|
(IPaymentMethodBitpayAPIExtension)ActivatorUtilities.CreateInstance(provider, typeof(LightningPaymentMethodBitpayAPIExtension), new object[] { pmi }));
|
||||||
var payoutMethodId = PayoutTypes.LN.GetPayoutMethodId(network.CryptoCode);
|
var payoutMethodId = PayoutTypes.LN.GetPayoutMethodId(network.CryptoCode);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace BTCPayServer.Models.InvoicingModels
|
|||||||
{
|
{
|
||||||
public class PaymentModel
|
public class PaymentModel
|
||||||
{
|
{
|
||||||
public CheckoutUIPaymentMethodSettings UISettings;
|
public string CheckoutBodyComponentName { get; set; }
|
||||||
public class AvailableCrypto
|
public class AvailableCrypto
|
||||||
{
|
{
|
||||||
[JsonConverter(typeof(PaymentMethodIdJsonConverter))]
|
[JsonConverter(typeof(PaymentMethodIdJsonConverter))]
|
||||||
@@ -80,9 +80,6 @@ namespace BTCPayServer.Models.InvoicingModels
|
|||||||
public string ReceiptLink { get; set; }
|
public string ReceiptLink { get; set; }
|
||||||
public int? RequiredConfirmations { get; set; }
|
public int? RequiredConfirmations { get; set; }
|
||||||
public long? ReceivedConfirmations { get; set; }
|
public long? ReceivedConfirmations { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public HashSet<string> ExtensionPartials { get; } = new HashSet<string>();
|
|
||||||
[JsonExtensionData]
|
[JsonExtensionData]
|
||||||
public Dictionary<string, JToken> AdditionalData { get; set; } = new();
|
public Dictionary<string, JToken> AdditionalData { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
namespace BTCPayServer.Payments.Bitcoin
|
|
||||||
{
|
|
||||||
public class BitcoinPaymentMethodViewExtension : IPaymentMethodViewExtension
|
|
||||||
{
|
|
||||||
public BitcoinPaymentMethodViewExtension(PaymentMethodId paymentMethodId)
|
|
||||||
{
|
|
||||||
PaymentMethodId = paymentMethodId;
|
|
||||||
}
|
|
||||||
public PaymentMethodId PaymentMethodId { get; }
|
|
||||||
|
|
||||||
public void RegisterViews(PaymentMethodViewContext context)
|
|
||||||
{
|
|
||||||
context.RegisterCheckoutUI(new CheckoutUIPaymentMethodSettings
|
|
||||||
{
|
|
||||||
ExtensionPartial = "Bitcoin/BitcoinLikeMethodCheckout",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,6 +14,7 @@ namespace BTCPayServer.Payments.Bitcoin
|
|||||||
{
|
{
|
||||||
public class BitcoinPaymentModelExtension : IPaymentModelExtension
|
public class BitcoinPaymentModelExtension : IPaymentModelExtension
|
||||||
{
|
{
|
||||||
|
public const string CheckoutBodyComponentName = "BitcoinCheckoutBody";
|
||||||
private readonly PaymentMethodHandlerDictionary _handlers;
|
private readonly PaymentMethodHandlerDictionary _handlers;
|
||||||
private readonly BTCPayNetwork _Network;
|
private readonly BTCPayNetwork _Network;
|
||||||
private readonly DisplayFormatter _displayFormatter;
|
private readonly DisplayFormatter _displayFormatter;
|
||||||
@@ -50,6 +51,7 @@ namespace BTCPayServer.Payments.Bitcoin
|
|||||||
return;
|
return;
|
||||||
var prompt = context.Prompt;
|
var prompt = context.Prompt;
|
||||||
var details = handler.ParsePaymentPromptDetails(prompt.Details);
|
var details = handler.ParsePaymentPromptDetails(prompt.Details);
|
||||||
|
context.Model.CheckoutBodyComponentName = CheckoutBodyComponentName;
|
||||||
context.Model.ShowRecommendedFee = context.StoreBlob.ShowRecommendedFee;
|
context.Model.ShowRecommendedFee = context.StoreBlob.ShowRecommendedFee;
|
||||||
context.Model.FeeRate = details.RecommendedFeeRate.SatoshiPerByte;
|
context.Model.FeeRate = details.RecommendedFeeRate.SatoshiPerByte;
|
||||||
|
|
||||||
|
|||||||
@@ -51,17 +51,9 @@ namespace BTCPayServer.Payments
|
|||||||
{
|
{
|
||||||
_Views.Add("AdditionalPaymentMethodDetails", partialName);
|
_Views.Add("AdditionalPaymentMethodDetails", partialName);
|
||||||
}
|
}
|
||||||
public void RegisterCheckoutUI(CheckoutUIPaymentMethodSettings settings)
|
|
||||||
{
|
|
||||||
_Views.Add("CheckoutUI", settings);
|
|
||||||
}
|
|
||||||
public void Register(string key, object value)
|
public void Register(string key, object value)
|
||||||
{
|
{
|
||||||
_Views.Add(key, value);
|
_Views.Add(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class CheckoutUIPaymentMethodSettings
|
|
||||||
{
|
|
||||||
public string? ExtensionPartial { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ namespace BTCPayServer.Payments.LNURLPay
|
|||||||
context.Model.InvoiceBitcoinUrl = lnurl;
|
context.Model.InvoiceBitcoinUrl = lnurl;
|
||||||
context.Model.InvoiceBitcoinUrlQR = lnurl.ToUpperInvariant().Replace(UriScheme.ToUpperInvariant(), UriScheme);
|
context.Model.InvoiceBitcoinUrlQR = lnurl.ToUpperInvariant().Replace(UriScheme.ToUpperInvariant(), UriScheme);
|
||||||
}
|
}
|
||||||
|
context.Model.CheckoutBodyComponentName = LightningPaymentModelExtension.CheckoutBodyComponentName;
|
||||||
context.Model.PeerInfo = handler.ParsePaymentPromptDetails(context.Prompt.Details).NodeInfo;
|
context.Model.PeerInfo = handler.ParsePaymentPromptDetails(context.Prompt.Details).NodeInfo;
|
||||||
if (context.StoreBlob.LightningAmountInSatoshi && context.Model.CryptoCode == "BTC")
|
if (context.StoreBlob.LightningAmountInSatoshi && context.Model.CryptoCode == "BTC")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,10 +14,6 @@ namespace BTCPayServer.Payments.LNURLPay
|
|||||||
if (details is not LNURLPayPaymentMethodDetails d)
|
if (details is not LNURLPayPaymentMethodDetails d)
|
||||||
return;
|
return;
|
||||||
context.RegisterPaymentMethodDetails("LNURL/AdditionalPaymentMethodDetails");
|
context.RegisterPaymentMethodDetails("LNURL/AdditionalPaymentMethodDetails");
|
||||||
context.RegisterCheckoutUI(new CheckoutUIPaymentMethodSettings()
|
|
||||||
{
|
|
||||||
ExtensionPartial = "Lightning/LightningLikeMethodCheckout"
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
namespace BTCPayServer.Payments.Lightning
|
|
||||||
{
|
|
||||||
public class LightningPaymentMethodViewExtension : IPaymentMethodViewExtension
|
|
||||||
{
|
|
||||||
public LightningPaymentMethodViewExtension(PaymentMethodId paymentMethodId)
|
|
||||||
{
|
|
||||||
PaymentMethodId = paymentMethodId;
|
|
||||||
}
|
|
||||||
public PaymentMethodId PaymentMethodId { get; }
|
|
||||||
|
|
||||||
public void RegisterViews(PaymentMethodViewContext context)
|
|
||||||
{
|
|
||||||
context.RegisterCheckoutUI(new CheckoutUIPaymentMethodSettings()
|
|
||||||
{
|
|
||||||
ExtensionPartial = "Lightning/LightningLikeMethodCheckout"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,6 +11,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||||||
{
|
{
|
||||||
public class LightningPaymentModelExtension : IPaymentModelExtension
|
public class LightningPaymentModelExtension : IPaymentModelExtension
|
||||||
{
|
{
|
||||||
|
public const string CheckoutBodyComponentName = "LightningCheckoutBody";
|
||||||
private readonly DisplayFormatter _displayFormatter;
|
private readonly DisplayFormatter _displayFormatter;
|
||||||
IPaymentLinkExtension _PaymentLinkExtension;
|
IPaymentLinkExtension _PaymentLinkExtension;
|
||||||
public LightningPaymentModelExtension(
|
public LightningPaymentModelExtension(
|
||||||
@@ -44,6 +45,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||||||
var paymentPrompt = context.InvoiceEntity.GetPaymentPrompt(PaymentMethodId);
|
var paymentPrompt = context.InvoiceEntity.GetPaymentPrompt(PaymentMethodId);
|
||||||
if (paymentPrompt is null)
|
if (paymentPrompt is null)
|
||||||
return;
|
return;
|
||||||
|
context.Model.CheckoutBodyComponentName = CheckoutBodyComponentName;
|
||||||
context.Model.InvoiceBitcoinUrl = _PaymentLinkExtension.GetPaymentLink(context.Prompt, context.UrlHelper);
|
context.Model.InvoiceBitcoinUrl = _PaymentLinkExtension.GetPaymentLink(context.Prompt, context.UrlHelper);
|
||||||
if (context.Model.InvoiceBitcoinUrl is not null)
|
if (context.Model.InvoiceBitcoinUrl is not null)
|
||||||
context.Model.InvoiceBitcoinUrlQR = $"lightning:{context.Model.InvoiceBitcoinUrl.ToUpperInvariant()?.Substring("LIGHTNING:".Length)}";
|
context.Model.InvoiceBitcoinUrlQR = $"lightning:{context.Model.InvoiceBitcoinUrl.ToUpperInvariant()?.Substring("LIGHTNING:".Length)}";
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ public partial class AltcoinsPlugin
|
|||||||
var pmi = PaymentTypes.CHAIN.GetPaymentMethodId("XMR");
|
var pmi = PaymentTypes.CHAIN.GetPaymentMethodId("XMR");
|
||||||
services.AddBTCPayNetwork(network)
|
services.AddBTCPayNetwork(network)
|
||||||
.AddTransactionLinkProvider(pmi, new SimpleTransactionLinkProvider(blockExplorerLink));
|
.AddTransactionLinkProvider(pmi, new SimpleTransactionLinkProvider(blockExplorerLink));
|
||||||
services.AddSingleton<IPaymentMethodViewExtension>(provider =>
|
|
||||||
(IPaymentMethodViewExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentMethodViewExtension), new object[] { pmi }));
|
|
||||||
|
|
||||||
|
|
||||||
services.AddSingleton(provider =>
|
services.AddSingleton(provider =>
|
||||||
|
|||||||
@@ -43,8 +43,6 @@ public partial class AltcoinsPlugin
|
|||||||
var pmi = PaymentTypes.CHAIN.GetPaymentMethodId("ZEC");
|
var pmi = PaymentTypes.CHAIN.GetPaymentMethodId("ZEC");
|
||||||
services.AddBTCPayNetwork(network)
|
services.AddBTCPayNetwork(network)
|
||||||
.AddTransactionLinkProvider(pmi, new SimpleTransactionLinkProvider(blockExplorerLink));
|
.AddTransactionLinkProvider(pmi, new SimpleTransactionLinkProvider(blockExplorerLink));
|
||||||
services.AddSingleton<IPaymentMethodViewExtension>(provider =>
|
|
||||||
(IPaymentMethodViewExtension)ActivatorUtilities.CreateInstance(provider, typeof(BitcoinPaymentMethodViewExtension), new object[] { pmi }));
|
|
||||||
|
|
||||||
|
|
||||||
services.AddSingleton(provider =>
|
services.AddSingleton(provider =>
|
||||||
|
|||||||
@@ -108,14 +108,6 @@ namespace BTCPayServer.Services.Altcoins.Monero.Payments
|
|||||||
return details.ToObject<MoneroLikeOnChainPaymentMethodDetails>(Serializer);
|
return details.ToObject<MoneroLikeOnChainPaymentMethodDetails>(Serializer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CheckoutUIPaymentMethodSettings GetCheckoutUISettings()
|
|
||||||
{
|
|
||||||
return new CheckoutUIPaymentMethodSettings
|
|
||||||
{
|
|
||||||
ExtensionPartial = "Bitcoin/BitcoinLikeMethodCheckout"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public MoneroLikePaymentData ParsePaymentDetails(JToken details)
|
public MoneroLikePaymentData ParsePaymentDetails(JToken details)
|
||||||
{
|
{
|
||||||
return details.ToObject<MoneroLikePaymentData>(Serializer) ?? throw new FormatException($"Invalid {nameof(MoneroLikePaymentMethodHandler)}");
|
return details.ToObject<MoneroLikePaymentData>(Serializer) ?? throw new FormatException($"Invalid {nameof(MoneroLikePaymentMethodHandler)}");
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Payments
|
|||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: MoneroLikePaymentMethodHandler handler })
|
if (context is not { IsSelected: true, Handler: MoneroLikePaymentMethodHandler handler })
|
||||||
return;
|
return;
|
||||||
|
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
||||||
if (context.Model.Activated)
|
if (context.Model.Activated)
|
||||||
{
|
{
|
||||||
var details = context.InvoiceEntity.GetPayments(true)
|
var details = context.InvoiceEntity.GetPayments(true)
|
||||||
|
|||||||
@@ -102,14 +102,6 @@ namespace BTCPayServer.Services.Altcoins.Zcash.Payments
|
|||||||
public long AccountIndex { get; internal set; }
|
public long AccountIndex { get; internal set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public CheckoutUIPaymentMethodSettings GetCheckoutUISettings()
|
|
||||||
{
|
|
||||||
return new CheckoutUIPaymentMethodSettings
|
|
||||||
{
|
|
||||||
ExtensionPartial = "Bitcoin/BitcoinLikeMethodCheckout"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public ZcashLikePaymentData ParsePaymentDetails(JToken details)
|
public ZcashLikePaymentData ParsePaymentDetails(JToken details)
|
||||||
{
|
{
|
||||||
return details.ToObject<ZcashLikePaymentData>(Serializer) ?? throw new FormatException($"Invalid {nameof(ZcashLikePaymentData)}");
|
return details.ToObject<ZcashLikePaymentData>(Serializer) ?? throw new FormatException($"Invalid {nameof(ZcashLikePaymentData)}");
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using BTCPayServer.Payments;
|
using BTCPayServer.Payments;
|
||||||
|
using BTCPayServer.Payments.Bitcoin;
|
||||||
using BTCPayServer.Services.Altcoins.Monero.Payments;
|
using BTCPayServer.Services.Altcoins.Monero.Payments;
|
||||||
using BTCPayServer.Services.Altcoins.Zcash.Services;
|
using BTCPayServer.Services.Altcoins.Zcash.Services;
|
||||||
using BTCPayServer.Services.Invoices;
|
using BTCPayServer.Services.Invoices;
|
||||||
@@ -35,7 +36,8 @@ namespace BTCPayServer.Services.Altcoins.Zcash.Payments
|
|||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: ZcashLikePaymentMethodHandler handler })
|
if (context is not { IsSelected: true, Handler: ZcashLikePaymentMethodHandler handler })
|
||||||
return;
|
return;
|
||||||
if (context.Model.Activated)
|
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
||||||
|
if (context.Model.Activated)
|
||||||
{
|
{
|
||||||
var details = context.InvoiceEntity.GetPayments(true)
|
var details = context.InvoiceEntity.GetPayments(true)
|
||||||
.Select(p => p.GetDetails<ZcashLikePaymentData>(handler))
|
.Select(p => p.GetDetails<ZcashLikePaymentData>(handler))
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
@using BTCPayServer.BIP78.Sender
|
@using BTCPayServer.BIP78.Sender
|
||||||
@using BTCPayServer.Components.TruncateCenter
|
@using BTCPayServer.Components.TruncateCenter
|
||||||
@using BTCPayServer.Abstractions.TagHelpers
|
@using BTCPayServer.Abstractions.TagHelpers
|
||||||
|
@using BTCPayServer.Payments.Bitcoin
|
||||||
@model BTCPayServer.Models.InvoicingModels.PaymentModel
|
@model BTCPayServer.Models.InvoicingModels.PaymentModel
|
||||||
|
|
||||||
<template id="checkout-template">
|
<template id="@BitcoinPaymentModelExtension.CheckoutBodyComponentName">
|
||||||
@await Component.InvokeAsync("UiExtensionPoint", new {location = "checkout-bitcoin-pre-content", model = Model})
|
@await Component.InvokeAsync("UiExtensionPoint", new {location = "checkout-bitcoin-pre-content", model = Model})
|
||||||
<div class="payment-box">
|
<div class="payment-box">
|
||||||
<div v-if="model.invoiceBitcoinUrlQR" class="qr-container" :data-qr-value="model.invoiceBitcoinUrlQR" :data-clipboard="model.invoiceBitcoinUrl" data-clipboard-confirm-element="#Address_@Model.PaymentMethodId [data-clipboard]">
|
<div v-if="model.invoiceBitcoinUrlQR" class="qr-container" :data-qr-value="model.invoiceBitcoinUrlQR" :data-clipboard="model.invoiceBitcoinUrl" data-clipboard-confirm-element="#Address_@Model.PaymentMethodId [data-clipboard]">
|
||||||
@@ -31,9 +32,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
Vue.component('checkout-template', {
|
Vue.component(@Safe.Json(BitcoinPaymentModelExtension.CheckoutBodyComponentName), {
|
||||||
props: ['model', 'nfcSupported', 'nfcScanning', 'nfcErrorMessage'],
|
props: ['model', 'nfcSupported', 'nfcScanning', 'nfcErrorMessage'],
|
||||||
template: "#checkout-template",
|
template: @Safe.Json("#" + BitcoinPaymentModelExtension.CheckoutBodyComponentName),
|
||||||
components: {
|
components: {
|
||||||
qrcode: VueQrcode
|
qrcode: VueQrcode
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
@using BTCPayServer.Payments.Lightning
|
||||||
@model BTCPayServer.Models.InvoicingModels.PaymentModel
|
@model BTCPayServer.Models.InvoicingModels.PaymentModel
|
||||||
|
|
||||||
<template id="checkout-template">
|
<template id="@LightningPaymentModelExtension.CheckoutBodyComponentName">
|
||||||
<div class="payment-box">
|
<div class="payment-box">
|
||||||
@await Component.InvokeAsync("UiExtensionPoint" , new { location="checkout-lightning-pre-content", model = Model})
|
@await Component.InvokeAsync("UiExtensionPoint" , new { location="checkout-lightning-pre-content", model = Model})
|
||||||
<div v-if="model.invoiceBitcoinUrlQR" class="qr-container" :data-qr-value="model.invoiceBitcoinUrlQR" :data-clipboard="model.invoiceBitcoinUrl" data-clipboard-confirm-element="#Lightning_@Model.PaymentMethodId [data-clipboard]">
|
<div v-if="model.invoiceBitcoinUrlQR" class="qr-container" :data-qr-value="model.invoiceBitcoinUrlQR" :data-clipboard="model.invoiceBitcoinUrl" data-clipboard-confirm-element="#Lightning_@Model.PaymentMethodId [data-clipboard]">
|
||||||
@@ -23,9 +24,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
Vue.component('checkout-template', {
|
Vue.component(@Safe.Json(LightningPaymentModelExtension.CheckoutBodyComponentName), {
|
||||||
props: ['model', 'nfcSupported', 'nfcScanning', 'nfcErrorMessage'],
|
props: ['model', 'nfcSupported', 'nfcScanning', 'nfcErrorMessage'],
|
||||||
template: "#checkout-template",
|
template: @Safe.Json("#" + LightningPaymentModelExtension.CheckoutBodyComponentName),
|
||||||
components: {
|
components: {
|
||||||
qrcode: VueQrcode
|
qrcode: VueQrcode
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -316,10 +316,6 @@
|
|||||||
@if (Env.CheatMode)
|
@if (Env.CheatMode)
|
||||||
{
|
{
|
||||||
<partial name="Checkout-Cheating" model="@Model" />
|
<partial name="Checkout-Cheating" model="@Model" />
|
||||||
}
|
|
||||||
@foreach (var extensionPartial in Model.ExtensionPartials)
|
|
||||||
{
|
|
||||||
<partial name="@extensionPartial" model="@Model" />
|
|
||||||
}
|
}
|
||||||
@await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-payment", model = Model })
|
@await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-payment", model = Model })
|
||||||
@await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-end", model = Model })
|
@await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-end", model = Model })
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ function initApp() {
|
|||||||
paymentMethodComponent() {
|
paymentMethodComponent() {
|
||||||
return this.isPluginPaymentMethod
|
return this.isPluginPaymentMethod
|
||||||
? `${this.pmId}Checkout`
|
? `${this.pmId}Checkout`
|
||||||
: this.srvModel.activated && 'checkout-template';
|
: this.srvModel.activated && this.srvModel.checkoutBodyComponentName;
|
||||||
},
|
},
|
||||||
isPluginPaymentMethod () {
|
isPluginPaymentMethod () {
|
||||||
return !this.paymentMethodIds.includes(this.pmId);
|
return !this.paymentMethodIds.includes(this.pmId);
|
||||||
|
|||||||
Reference in New Issue
Block a user