Skip to content

Instantly share code, notes, and snippets.

@zoki
Last active April 2, 2021 09:42
Show Gist options
  • Save zoki/a5d2a76366e5d36adc59c0251c55096c to your computer and use it in GitHub Desktop.
Save zoki/a5d2a76366e5d36adc59c0251c55096c to your computer and use it in GitHub Desktop.
# frozen_string_literal: true
# 2.7 Provjera računa preko QR koda
# Obveznik fiskalizacije prilikom izdavanja računa, na svakom računu zajedno s podacima računa prikazuje
# odnosno ispisuje i QR kod tog računa kako bi kupac mogao izvršiti provjeru računa preko njega.
# Pri određivanju QR koda koristi se QR kod model 1 ili model 2 najmanje moguće inačice. QR kod treba
# biti minimalno veličine 2 puta 2 centimetra pri čemu prazan prostor sa svih strana QR koda mora biti
# minimalno 2 milimetara. Ne smije biti ispisan na slici i logu niti smije sadržavati sliku ili logo. QR kod
# treba imati minimalno „L“ razinu korekciju greške. Mora biti usklađen sa standardom ISO/IEC 15415.
# QR kod mora sadržavati zapis sljedećih podataka:
# * poveznicu https://porezna.gov.hr/rn do web stranice za provjeru računa
# * ili JIR ili ZKI fiskaliziranog računa (36 znaka za JIR, odnosno 32 znaka za ZKI)
# * datum i vrijeme izdavanja računa u formatu GGGGMMDD_HHMM (13 znakova)
# * ukupni iznos računa (10 znakova)
# * dodatne separatore (15 znakova)
# Dodatni separatori koji se moraju koristiti pri formiranju podataka za provjeru računa preko QR koda su
# navedeni u primjerima poveznica za JIR/ZKI do Internet stranice za provjeru računa.
# Napomena: Podaci navedeni u primjerima su testni i ne moraju biti poslovno ispravni ili logični.
# Primjer QR koda (inačica 4) za JIR s računa:
# `https://porezna.gov.hr/rn?jir=12345678-1234-1234-1234-123456789012&datv=20190905_1230&izn=1000000,00`
# Primjer QR koda (inačica 4) za ZKI s računa:
# `https://porezna.gov.hr/rn?zki=12345678123412341234123456789012&datv=20190905_1230&izn=1000000,00`
# Očitavanje QR koda s računa moguće je izvršiti bilo kojom aplikacijom za čitanje QR koda.
# Proces provjere računa preko QR koda započinje kada kupac uzme račun s otisnutim QR kodom, zatim
# uključi aplikaciju za provjeru QR koda na svom mobilnom uređaju i usmjeri kameru mobilnog uređaja
# prema QR kodu i očita ga. Aplikacija za provjeru QR koda prepoznaje podatke sadržane u QR kodu kao
# poveznicu do web stranice za provjeru računa i nudi otvaranje poveznice. Mobilni uređaj otvara
# poveznicu koja vodi na stranicu za provjeru računa s predefiniranim web preglednikom gdje se
# automatski popune polja sadržana u QR kodu. Kupac unosi captcha-u prikazanu na web stranici za
# provjeru računa u za to predviđeno polje te odabire polje 'Provjeri' u aplikaciji za provjeru računa. Zatim
# sustav Porezne uprave temeljem unesenih podataka vrši provjeru računa i vraća poruku o tome je li
# račun fiskaliziran ili ne.
require "bundler/inline"
require "uri"
gemfile do
source "https://rubygems.org"
gem "rqrcode"
end
host = "porezna.gov.hr"
path = "/rn"
params = {
jir: "12345678-1234-1234-1234-123456789012",
datv: "20190905_1230",
izn: "1000000,00"
}
uri = URI::HTTPS.build(
host: host,
path: path,
query: URI.encode_www_form(params)
)
qrcode = RQRCode::QRCode.new(uri.to_s)
svg = qrcode.as_svg(
offset: 4,
module_size: 2,
standalone: true
)
IO.binwrite(File.expand_path("qrcode.svg", __dir__), svg.to_s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment