80 lines
2.8 KiB
Plaintext
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;
|
|
}
|
|
}
|
|
} |