Files
QRPayWeb/QRPay/Pages/Home.razor
T
2025-12-15 15:36:17 +01:00

80 lines
2.8 KiB
Plaintext

@page "/"
@using QRCoder
@using SixLabors.ImageSharp.Formats
<PageTitle>Home</PageTitle>
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Create QR payment barcode</h5>
</div>
<div class="modal-body">
<div class="form-group">
<label for="input0">Name</label>
<input type="text" class="form-control" id="input0" @bind="Name" placeholder="Enter beneficiary name">
</div>
<div class="form-group">
<label for="input1">IBAN</label>
<input type="text" class="form-control" id="input1" @bind="IBAN" placeholder="Enter IBAN">
</div>
<div class="form-group">
<label for="input2">Amount</label>
<input type="text" class="form-control" id="input2" placeholder="Enter amount in EUR" @bind="Amount">
</div>
<div class="form-group">
<label for="input3">Remark</label>
<input type="text" class="form-control" id="input3" placeholder="Enter optional remark" @bind="Remark">
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" @onclick="@GenerateQRCode">Generate</button>
</div>
@if (_show)
{
<div class="text-center">
<img src="@QRCodeStr" style="width:200px;height:200px" />
</div>
}
</div>
</div>
@code {
string IBAN { get; set; } = string.Empty;
decimal Amount { get; set; } = 0;
string Remark { get; set; } = string.Empty;
string QRCodeStr { get; set; } = string.Empty;
string Name { get; set; } = string.Empty;
bool _show = false;
public void GenerateQRCode()
{
QRCodeStr = string.Empty;
if (!string.IsNullOrWhiteSpace(IBAN))
{
using (var ms = new MemoryStream())
{
QRCodeGenerator qRCodeGenerator = new QRCodeGenerator();
var payment = new PayBySquareTextGenerator.Payment(IBAN.Replace(" ", ""), Amount, "EUR", "1", Remark);
payment.ConstantSymbol = "0308";
payment.BeneficiaryName = Name;
var a = new PayBySquareTextGenerator.PayBySquareOverkill(payment);
var stringData = a.GeneratePayBySquareOverkillString();
// Generate QR code data
using var qrCodeData = QRCodeGenerator.GenerateQrCode(stringData, QRCodeGenerator.ECCLevel.Q);
using var qrCode = new PngByteQRCode(qrCodeData);
byte[] qrCodeImage = qrCode.GetGraphic(20);
QRCodeStr = $"data:image/png;base64,{Convert.ToBase64String(qrCodeImage)}";
}
_show = true;
}
}
}