Last active
April 2, 2021 09:42
-
-
Save zoki/a5d2a76366e5d36adc59c0251c55096c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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