7 min de cititFuncționalități

Codul QR EPC: standardul de cod QR pentru plăți SEPA explicat

Un cod QR EPC codifică un transfer de credit SEPA, nu un URL, astfel încât o aplicație bancară poate precompleta formularul. Ce conține payload-ul și de ce nu îl poți urmări.

Marius Voß
DevRel · edge infra
Payload-ul unui cod QR EPC arătat ca douăsprezece linii de text simplu care încep cu tag-ul de serviciu BCD, lângă un formular de transfer dintr-o aplicație bancară completat din acesta

Un cod QR EPC nu conține un link. Conține un transfer de credit SEPA, scris ca un scurt bloc de text simplu, iar o aplicație bancară care recunoaște formatul îl citește și completează formularul de transfer. Niciun server nu este contactat, nimic nu este căutat, și nimic din scanare nu ajunge la tine.

Acest unic fapt decide tot restul modului în care sunt folosite aceste coduri. Nu poți scurta unul, nu îl poți reposiționa și nu poți conta scanările, pentru că nu există nicio cerere nicăieri în flux. Standardul din spate este EPC069-12 al European Payments Council, codurile sunt numite de obicei GiroCode pe piețele vorbitoare de germană, iar formatul merită înțeles cu precizie înainte să tipărești mii de exemplare pe facturi. Pentru cazul general al ceea ce poate transporta un cod, ce este un cod QR acoperă întrebarea despre payload.

Ce conține de fapt payload-ul

Payload-ul este o secvență de linii, într-o ordine fixă, fiecare fiind un element separat. Un analizor citește linia 1, se așteaptă la BCD, citește linia 4, se așteaptă la SCT, și renunță dacă oricare dintre ele lipsește.

LinieConținutLimită
Tag de serviciuBCDfix, 3 caractere
Versiune001 sau 002002 face BIC opțional
Set de caractere1 pentru UTF-8, până la 8o cifră
IdentificareSCTfix, 3 caractere
BICidentificatorul băncii beneficiarului11 caractere, adesea omis
Numele beneficiaruluititularul contului70 de caractere
IBANcontul beneficiarului34 de caractere
SumăEUR urmat de valoare0,01 până la 999999999,99, în EUR
Cod de scopscop ISO, rar folosit4 caractere
Referință structuratăreferința creditorului, sau35 de caractere
Text nestructurattext liber de remitere, în schimb140 de caractere
De la beneficiar la ordonatornotă afișată plătitorului70 de caractere

Două reguli îi încurcă pe oameni. Referința structurată și textul nestructurat se exclud reciproc: completezi una, lași cealaltă goală. Iar suma este opțională, ceea ce este alegerea corectă pentru un cod de donație, unde plătitorul decide, și alegerea greșită pentru o factură, unde vrei o sumă exactă precompletată.

Întregul bloc este limitat la 331 de octeți. Ghidurile EPC069-12 fixează și nivelul de corecție a erorilor la M și limitează simbolul la versiunea 13, așa că fiecare cod pe care îl tipărești are un plafon cunoscut de module. Dacă construiești asta din cod, nu doar dând click într-un generator, documentația bibliotecii Segno arată ordinea câmpurilor și regulile de codificare într-o formă pe care o poți testa.

Cele patru blocuri ale unui payload de cod QR EPC, de la tag-ul fix de serviciu, prin detaliile beneficiarului și sumă, până la referința de remitere

De ce nu îl poți scurta sau urmări

Un cod QR urmărit funcționează codificând un URL pe care îl deții. Scanarea deschide acel URL, redirecționarea ta răspunde, contezi cererea, iar vizitatorul ajunge oriunde direcționezi în prezent linkul. Coduri QR dinamice versus statice acoperă mecanismul în întregime.

Nimic din toate acestea nu se aplică aici. Aplicația bancară nu este un browser. Ea analizează text, potrivește formatul și deschide un formular de plată local, pe dispozitiv. Nu există nicio cerere HTTP de interceptat, așa că:

  • Nu există niciun număr de scanări, nicăieri. Nici în instrumentul tău, nici în cel al băncii.
  • Nimic nu poate fi repoziționat. Un IBAN greșit înseamnă o retipărire.
  • Împachetarea payload-ului într-un link scurt îl strică pe loc, pentru că analizorul vede https acolo unde se așteaptă la BCD.

Am văzut o echipă petrecând o săptămână încercând să obțină atribuire pe un cod de plată, înainte ca cineva să citească specificația. Răspunsul sincer este că partea de plată și partea de măsurare sunt două coduri diferite, iar dacă macheta are loc pentru unul singur, codul de plată câștigă.

Ce poți măsura este tot ce se află în jurul lui. Dacă o expediere poștală conține o factură cu un cod de plată, pune pe scrisoare un link scurt urmărit separat, către portalul clienților, termenii și condițiile sau pagina de suport, și citește implicarea de acolo. Funcțiile de cod QR ale Elido acoperă jumătatea urmăribilă a foii, iar codul de plată rămâne exact așa cum cere standardul.

Unde funcționează și unde nu

Suportul trăiește în fiecare aplicație bancară în parte, motiv pentru care acoperirea este inegală într-un fel pe care listele de țări îl exagerează. Aplicațiile austriece și germane citesc aceste coduri de ani buni, cele finlandeze și olandeze sunt în general fiabile, iar suportul belgian este bun. Dincolo de asta, testează înainte să te angajezi la un tiraj de tipar.

Doi vecini sunt frecvent confundați cu acesta. QR-bill elvețian este o specificație diferită, cu propria machetă și o cruce elvețiană în mijlocul simbolului; nu este un cod EPC, iar aplicațiile din zona euro nu îl vor citi ca pe o plată. Iar un link de plată de la un procesator de carduri nu este deloc așa ceva: acela este un URL obișnuit într-un cod QR, cu o pagină de checkout găzduită la capăt, și se comportă ca orice alt link web, inclusiv cu urmărirea care vine odată cu el.

Pentru întrebarea mai largă despre ce poate pune o afacere reglementată de plăți sau creditare în fața clienților, scurtătoare de URL pentru fintech acoperă părțile în care este implicat un link.

Un cod QR de plată decodificat offline într-un formular de transfer, comparat cu un cod QR de link care ajunge la o redirecționare și produce analize

Cum îl produci fără regrete

Șase verificări, în ordinea în care îți economisesc bani.

  1. Validează IBAN-ul înainte de generare, nu după tipărire. Un test de sumă de control nu costă nimic, iar o retipărire costă un tiraj întreg.
  2. Decide deliberat problema sumei. Fixă pentru facturi, goală pentru afișele de donații, unde orice sumă ar trebui să fie posibilă.
  3. Preferă referința structurată în locul textului liber. Este mai scurtă, se reconciliază automat în contabilitatea ta și menține payload-ul mic.
  4. Testează în cel puțin trei aplicații bancare, pe ambele platforme de telefon. Analizoarele diferă în cât de strict tratează câmpurile opționale.
  5. Dimensionează codul tipărit în funcție de distanța de la care va fi scanat, exact ca la orice alt cod. Cât de mare ar trebui să fie un cod QR are calculul.
  6. Păstrează-l mat. Un lac lucios peste un cod de plată de pe o factură, sub lumina de birou, este un tichet de suport care așteaptă să se întâmple.

Problema autocolantului

Există un singur vector real de fraudă, și este fizic, nu digital. Un cod de plată static tipărit pe o factură, un parcometru, un semn de tarabă de piață sau un afiș de caritate poate fi acoperit cu un autocolant care poartă un alt IBAN. Nimic din cod nu rezistă la asta, pentru că payload-ul este hârtia.

Măsurile de atenuare sunt la fel de fizice. Tipărește codul în interiorul machetei facturii, unde o etichetă ar fi evidentă, nu pe un petic adeziv. Arată numele beneficiarului și ultimele cifre ale IBAN-ului, în text, lângă cod, astfel încât plătitorul să poată compara. Iar în instrucțiunile de confirmare a plății, spune-le oamenilor să citească numele afișat de aplicația lor bancară înainte să confirme, pentru că acel ecran este singurul loc unde înlocuirea devine vizibilă. Sunt sigure codurile QR și ce este de fapt quishing-ul acoperă tiparul mai larg de atac, cea mai mare parte aplicându-se și codurilor de link pe care le tipărești în altă parte, pe aceeași pagină.

Partea liniștitoare: o plată tot are nevoie de un om care să o confirme într-o aplicație bancară autentificată. Codul precompletează un formular, nu mută niciodată bani.

Citește seria fundamentală

Acest articol face parte din clusterul features. Pentru fluxul de lucru tipărit din jurul oricărui cod pe care îl generezi, o campanie cu cod QR de la zero este articolul fundamental, iar ghidul de coduri QR din documentație acoperă generarea tipului urmăribil prin API.

Alte articole de pe blog

Întrebări frecvente

Ce este un cod QR EPC?

Un cod QR care codifică detaliile unui transfer de credit SEPA sub formă de text simplu, astfel încât o aplicație bancară îl poate citi și precompleta formularul de transfer. A fost standardizat de European Payments Council în ghidurile EPC069-12 și este cunoscut și sub numele de GiroCode. Payload-ul este o secvență fixă de linii care începe cu tag-ul de serviciu BCD și nu conține nicio adresă web.

Ce țări acceptă plăți GiroCode?

Suportul depinde de aplicația bancară, nu de țară, dar în practică aceste coduri sunt citite pe scară largă în Austria, Germania, Finlanda, Țările de Jos și Belgia. În restul zonei euro, acoperirea este inegală, iar în afara ei codul nu are niciun sens. Elveția folosește propriul standard QR-bill, care arată similar, dar nu este compatibil.

Poate un cod QR EPC să fie dinamic sau urmăribil?

Nu. Detaliile plății sunt înglobate în modelul tipărit, iar telefonul le decodifică offline, fără să contacteze niciun server, așa că nu există nimic de repoziționat și nimic de contat. Dacă trebuie să schimbi suma sau referința, generezi un cod nou. Orice ți se vinde drept cod QR de plată dinamic este de fapt un link către o pagină de plată, ceea ce este un produs diferit.

Ce se întâmplă dacă pun un link scurt într-un cod QR EPC?

Aplicația bancară nu reușește să îl analizeze și fie afișează o eroare, fie tratează codul ca pe un URL obișnuit. Analizorul se așteaptă ca prima linie să fie BCD, iar a patra SCT; un URL nu se potrivește cu niciuna dintre ele. Codurile QR de plată și codurile QR de link sunt două coduri separate care se întâmplă să împartă aceeași formă de simbol.

Cât de mare poate fi payload-ul?

331 de octeți, ceea ce limitează codul QR la versiunea 13, cu nivelul de corecție a erorilor M, conform ghidurilor EPC. În practică, textul de remitere este cel care umple payload-ul, așa că o referință liberă și lungă este câmpul care împinge codul peste limită. Păstrează referința structurată și scurtă, iar codul rămâne suficient de rarefiat pentru a fi scanat de pe o factură tipărită.

Sunt codurile QR de plată sigure pe facturile tipărite?

Codul în sine nu poartă niciun conținut executabil, iar plătitorul confirmă transferul în aplicația sa bancară, care afișează numele beneficiarului și IBAN-ul înainte ca vreo sumă să se miște. Riscul real este fizic: un autocolant lipit peste codul tipărit, care repoziționează plata către alt cont. Tipărește codul în interiorul machetei facturii, nu pe o etichetă adezivă, și spune-le plătitorilor să verifice numele de pe ecranul de confirmare.

Încearcă Elido

Lipește un URL, obții un link scurt funcțional

Fără înregistrare. Linkul este activ timp de 30 de zile. Înregistrează-te ca să-l păstrezi pentru totdeauna.

Gratuit, fără înregistrare · 2 pe zi

Încearcă Elido

Scurtător de URL-uri găzduit în UE, cu domenii personalizate, analiză avansată și un API deschis. Nivel gratuit - fără card bancar.

Etichete
epc qr code
girocode
sepa payment qr code
qr code payment
static qr code
invoice qr code

Continuă lectura