@page "/qr" @layout EmptyLayout @using Microsoft.AspNetCore.Components @using QRPay.Models @using QRPay.Services QR Preview

QR payment preview

@if (_errors.Count > 0) { } else if (!string.IsNullOrEmpty(_qrCodeDataUri)) { Payment QR code }
@code { [SupplyParameterFromQuery(Name = "amount")] public string? Amount { get; set; } [SupplyParameterFromQuery(Name = "iban")] public string? Iban { get; set; } [SupplyParameterFromQuery(Name = "name")] public string? Name { get; set; } [SupplyParameterFromQuery(Name = "remark")] public string? Remark { get; set; } private readonly List _errors = []; private string _qrCodeDataUri = string.Empty; protected override void OnParametersSet() { _errors.Clear(); _qrCodeDataUri = string.Empty; decimal? parsedAmount = null; if (!string.IsNullOrWhiteSpace(Amount)) { if (PaymentRequest.TryParseAmount(Amount, out var amount)) { parsedAmount = amount; } else { _errors.Add("Invalid amount format. Use a dot as the decimal separator, for example 12.50."); } } var paymentRequest = new PaymentRequest { Amount = parsedAmount, IBAN = Iban ?? string.Empty, Name = Name ?? string.Empty, Remark = Remark ?? string.Empty }; _errors.AddRange(paymentRequest.ValidateForQrRoute()); if (_errors.Count == 0) { _qrCodeDataUri = PaymentQrCodeService.GenerateDataUri(paymentRequest); } } }