revbank/plugins/deposit_iban_qr
2025-03-09 16:01:18 +01:00

65 lines
1.8 KiB
Perl

#!perl
# Note for Linux console users: this thing assumes UTF-8 support (so make sure
# you're running under a UTF-8 locale!), but you will also need a font that
# actually has all of the characters. Most console fonts do not support the
# half blocks, and will result in a diamond instead.
#
# At least on Debian, this one works:
#
# setfont /usr/share/consolefonts/Uni2-VGA14.psf.gz
#
# To make this the default, run "dpkg-reconfigure console-setup", and pick:
# - "UTF-8"
# - "Combined - Latin; Slavic Cyrillic; Greek"
# - "VGA"
# - "8x14"
# and then reboot
use IPC::Open2 qw(open2);
use List::Util qw(sum);
my $iban = "NL89RABO0111741386";
my $beneficiary = "Stichting Bitlair";
sub hook_checkout($class, $cart, $user, $transaction_id, @) {
my @entries = $cart->entries("is_deposit");
my $amount = sum map $_->{amount}, grep $_->attribute('method') eq 'iban', @entries;
if (defined $amount && $amount > 0) {
my $pid = open2 my $out, my $in, qw(qrencode -t ansiutf8 -m 2)
or die "Couldn't run qrencode";
print $in join(
"\n",
"BCD", "002", 1, "SCT",
"",
$beneficiary,
$iban,
"EUR" . $amount, # Amount
"",
"",
"Deposit $user (RB QR)",
"",
);
close $in;
local $/ = "\n";
my @lines = readline $out;
close $out;
waitpid($pid, 0);
$lines[1] =~ s/$/ Note: Bunq and ING are the only/;
$lines[2] =~ s/$/ Dutch banks that support these/;
$lines[3] =~ s/$/ EPC QR codes. N26 also works./;
$lines[5] =~ s/$/ For manual transfers, use this/;
$lines[6] =~ s/$/ IBAN: $iban/;
$lines[7] =~ s/$/ Benificiary: $beneficiary/;
$lines[8] =~ s/$/ Description: Deposit $user/;
print @lines;
}
}