@using BTCPayServer.Services @using BTCPayServer.Abstractions.Contracts @using Microsoft.AspNetCore.Mvc.TagHelpers @inject LanguageService LangService @inject BTCPayServerEnvironment Env @inject IEnumerable UiExtensions @inject PaymentMethodHandlerDictionary PaymentMethodHandlerDictionary @model PaymentModel @{ Layout = null; ViewData["Title"] = Model.HtmlTitle; var hasPaymentPlugins = UiExtensions.Any(extension => extension.Location == "checkout-payment-method"); // Show LNURL as selectable payment method only for top up invoices + non-BIP21 case var displayedPaymentMethods = Model.IsUnsetTopUp && !Model.OnChainWithLnInvoiceFallback ? Model.AvailableCryptos : Model.AvailableCryptos.Where(c => c.PaymentMethodId != "BTC_LNURLPAY").ToList(); } @functions { private string PaymentMethodName(PaymentModel.AvailableCrypto pm) { return Model.AltcoinsBuild ? pm.PaymentMethodName : pm.PaymentMethodName.Replace("Bitcoin (", "").Replace(")", "").Replace("Lightning ", ""); } private string ToJsValue(object value) { return Safe.Json(value).ToString()?.Replace("\"", "'"); } }
@if (!string.IsNullOrEmpty(Model.ItemDesc) && Model.ItemDesc != Model.StoreName) {
@Model.ItemDesc
} @if (Model.IsUnsetTopUp) {

} else {

@Model.BtcDue @Model.CryptoCode

}
{{timeText}}
@if (displayedPaymentMethods.Count > 1 || hasPaymentPlugins) {
@foreach (var crypto in displayedPaymentMethods) { @PaymentMethodName(crypto) } @await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-payment-method", model = Model })
}

@if (Env.CheatMode) { }
@if (Env.CheatMode) { } @foreach (var paymentMethodHandler in PaymentMethodHandlerDictionary .Select(handler => handler.GetCheckoutUISettings()) .Where(settings => settings != null) .DistinctBy(pm => pm.ExtensionPartial)) { } @await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-payment", model = Model }) @await Component.InvokeAsync("UiExtensionPoint", new { location = "checkout-v2-end", model = Model })