sobota 8. února 2014

QR Platby v Javě

QR Platba je způsob jak do QR kódu zakódovat informace pro provedení bankovního příkazu k úhradě. Anglicky se prý QR Platba řekne SPAYD - Short Payment Descriptor. Pro generování QR Plateb v Javě existuje knihovna spayd-java, která oplývá velice nepříjemným rozhranním a není publikována do centrálního repa Mavenu.
Knihovna je pod opensource licencí Apache, takže jsem na jejím základě vyrobil knihovnu Geek SPAYD, která je orientovaná na vývojářův prožitek. Zdrojáky jsou na GitHubu a binárky v centrálním Mavenu.

BankAccount acc = new CzechBankAccount("2000009442/2010");
CzechSpaydPayment payment = new CzechSpaydPayment(acc);
payment.setAmount(100);
payment.setDate(new Date());
payment.setVs("123");
final SpaydQRFactory factory = new SpaydQRFactory();
factory.saveQRCode(payment, "png", new File("payment.png"));
view raw GeekSpayd.java hosted with ❤ by GitHub
SpaydPaymentAttributes attrs = new SpaydPaymentAttributes();
CzechBankAccount acc = new CzechBankAccount("0", "2000009442", "2010")
attrs.setBankAccount(acc);
attrs.setAmount(100);
attrs.setCurrency("CZK");
attrs.setDate(new Date());
SpaydExtendedPaymentAttributeMap params
= new SpaydExtendedPaymentAttributeMap(singletonMap("X-VS", "123"));
String spayd = SpaydPayment.paymentStringFromAccount(attrs, params, true);
BufferedImage qrCode = SpaydQRUtils.getQRCode(200, spayd, true);
ImageIO.write(qrCode, "png", new File("payment.png"));
view raw Spayd.java hosted with ❤ by GitHub