QR položnice in N26

Ena od res lepih poenostavitev plačevanja položnic je QR koda. Na mobilni aplikaciji jo poskeniraš, potrdiš plačilo in denar iz računa že leti vašemu najljubšemu dobavitelju elektrike, interneta ali Playboja. Žal pa moja priljubljena nemška banka N26, tega ne podpira, in ker je to slovenska posebnost, niti ni za pričakovati, da bi. Ker pa ima N26 možnost API dostopa (ki sicer ni uraden in dokumentiran) pa si to lahko sprogramiramo sami.

Začne se z mobilno aplikacijo, ki zna prebrati QR kodo. Takšnih je veliko. Malo, pa jih zna prebrano poslati naprej na nek URL, kjer bi to predelali v API klic na našo izbrano banko. Ena od teh aplikacij je “Barcode scaner“. Ni najlepša, ampak dela. V bistvu sem jih probal vsaj 10, preden sem našel primerno. Večina ne zna poslati podatkov naprej, nekatere pa porežejo prelome vrstic, in si potem težko s tem kaj pomagaš. No s to gre lepo. Kako skonfigurirati pa kasneje.

Koda, ki sprejme podatke in izvede API klic na N26 je precej enostavna. Ko seveda najdeš ustrezno knjižnico, ki opravi večino dela. In ta, ki jo lahko prenesete ni moja, sem pa jo moral malce popraviti, malenkostno, ampak brez tega pač ne dela. Sama koda pa je naslednja:

$ar = $_GET["q"];
$ar = explode("\n",$ar);
if ($ar[0]!="UPNQR") die("Wrong data");
include("n26.php");
$n26 = new Number26('vas.cenjeni@email.naslov.com', 'VAŠEGESLO');
$amount = floatval($ar[8])/100;
$out = $n26->makeTransfer($amount, '0000', '', $ar[14], $ar[16]." ".$ar[17]." ".$ar[18],$ar[15]);
if ($out->id) echo "Confirm in your mobile app";
else echo "Probably some error.";

Simpl ko pasulj. Vpisati morate svoj N26 email naslov, geslo in tisti 0000 je vaš PIN za vnos plačilnih nalogov, če to počnete preko njihove spletne strani. Sedaj je verjetno tudi jasno zakaj ni dobra ideja, da se to nahaja na kakšnem drugem strežniku kot vašem, ker lahko nekdo, ki ima dostop do tega strežnika (recimo jaz) vam potem gleda v vaš račun. Res pa brez vaše potrditve ne morem denarja nakazovati naokoli. V priloženi izvorni kodi, je dodano še malce logiranja, da lahko pogledamo, kaj je šlo narobe, če je narobe kaj šlo.

Sedaj moramo še nastaviti našo scaner aplikacijo in stestirat. Najprej nastavimo, kam naj pošlje poskenirane podatke, kjer moramo seveda navesti URL našega strežnika:

Pritisnemo na “URL za iskanje po meri” in vpišemo naš URL:

Če boste vpisali tega mojega, bodo vaše položnice letele k meni. Morda vam celo kakšno potrdim, za računat na to pa ni ravno.

Nato poskeniramo prvo položnico:

Ko jo bo program prebral, se vam pokaže naslenja stran:

Kjer izberemo “Iskanje po meri”, in dobimo rezultat:

Z dizajnom se nisem ravno ukvarjal. Odpremo N26 aplikacijo, kjer nas že čaka položnica za potrditev:

Potrdimo in naš račun je takoj lažji.

Izvorno kodo moje skripte in knjižnjice dobite tule.

Celotna rešitev idejno izhaja od tule in tule.

PS: Če pa bi kdo vseeno želel preko mojega strežnika, pa mu y veseljem omogočim in obljubim, da ne bom špegal. Pošljite kar na mail: marko.pavlisic na gmail.com.