<title></title>
<script>
const steps = [
{
title: "KORAK 1: Instalacija certifikata",
short: "Certifikati",
icon: '
',
color: "step-1",
items: [
{ main: "Preuzmite sva tri certifikata koristeći direktne linkove ispod." },
{ main: "Potrebno je instalirati: BHP-RootCA, BHP-SubCA i BHP-SubCA2." },
{ main: "Kliknite
Desni klik na certifikat →
Install Certificate." },
{ main: "Odaberite:
Local Machine → Next." },
{ main: "Odaberite:
Place all certificates in the following store." },
{ main: "Kliknite Browse i odaberite:
Trusted Root Certification Authorities." },
{ main: "Ovaj postupak ponovite za svaki od tri preuzeta certifikata." }
],
note: "Instalacija certifikata u Trusted Root je ključna da bi sistem prepoznao Vaš potpis kao validan.",
links: [
{ name: "BHP-RootCA.zip", url: "https://www.posta.ba/pki/BHP-RootCA.zip" },
{ name: "BHP-SubCA.zip", url: "https://www.posta.ba/pki/BHP-SubCA.zip" },
{ name: "BHP-SubCA2.zip", url: "https://www.posta.ba/pki/BHP-SubCA2.zip" },
{ name: "Sve u jednom (certifikati i potrebni programi)", url: "/data/uploads/potpis/BHP-RootCA.zip" }
]
},
{
title: "KORAK 2: Instalacija aplikacija",
short: "Aplikacije",
icon: '
',
color: "step-2",
items: [
{ main: "Preuzmite i instalirajte
SafeNetAuthenticationClient-x64 (Driver za USB)." },
{ main: "Preuzmite i instalirajte
QSSeID aplikaciju." },
{ main: "Nakon instalacije, obavezno
zatvorite sve prozore browsera." },
{ main: "Ponovo pokrenite Chrome ili Edge i kliknite
Enable Extension kada se pojavi prozor za QSSeID." }
],
note: "Bez SafeNet klijenta računar fizički neće moći komunicirati sa USB tokenom.",
links: [
{ name: "SafeNet Klijent (64bit)", url: "https://www.posta.ba/pki/Aplikacija_64bit.zip" },
{ name: "QSSeID aplikacija", url: "https://own.qsscloud.ba/owncloud/index.php/s/nm3tjoTZMW8XRlt/download" }
]
},
{
title: "KORAK 3: Prijava na ePorezna i PP1 Obrazac",
short: "ePorezna & PP1",
icon: '
',
color: "step-3",
items: [
{ main: "Prijavite se na
ePorezna portal koristeći digitalni potpis.", sub: "Koristite 'Prijava putem certifikata' na početnoj strani." },
{ main: "U meniju odaberite:
e-Usluge / Unos poreznih prijava." },
{ main: "U listi dostupnih obrazaca pronađite i otvorite
PP-1." },
{ main: "Popunite potrebne podatke (dio 1, 2 i 3)." },
{ main: "U dijelu 4 (Podaci o podnosiocu), obavezno označite polje:
'Korištenje informacionog sistema'.", sub: "Ovo je uslov za digitalno poslovanje." },
{ main: "Kliknite na dugme
Podnesi.", sub: "Nakon podnošenja, status prijave mora postati 'Podnesen' (zelena boja)." }
],
note: "Podnošenje PP1 obrasca je administrativni uslov da bi Vam Poreska uprava dozvolila pristup nPIS sistemu.",
links: [
{ name: "ePorezna portal", url: "https://pnx-portal.apps.ops4.fpu.gov.ba/login" },
{ name: "Tehničko uputstvo PP1", url: "https://ik.imagekit.io/9qcwbg8wl/Tehnicko_uputstvo_PP1_22_12_2025_verzija2v_spFTdL7LJ.pdf" }
]
},
{
title: "KORAK 4: Registracija na nPIS",
short: "nPIS",
icon: '
',
color: "step-4",
items: [
{ main: "Nakon što je PP1 prihvaćen, otvorite
nPIS portal." },
{ main: "Prvi put se prijavljujete koristeći
PIN kod sa koverte koju ste dobili u Pošti." },
{ main: "Sistem će tražiti da registrujete certifikat i kreirate
novu lozinku.", sub: "Ova lozinka će Vam trebati za svaki ulazak na nPIS portal." },
{ main: "Restartujte browser i ponovo se prijavite novom lozinkom." }
],
note: "Razlikujte PIN za uređaj i lozinku za nPIS portal. PIN se unosi samo pri samom potpisivanju.",
links: [
{ name: "nPIS portal", url: "https://npis.fpu.gov.ba/npis" }
]
},
{
title: "KORAK 5: Komponente za potpisivanje",
short: "Komponente",
icon: '
',
color: "step-5",
items: [
{ main: "Instalirajte
Nextsense XML Signing ekstenziju za Chrome." },
{ main: "Instalirajte
Nextsense PDF Signing ekstenziju za Chrome." },
{ main: "Preuzmite i pokrenite
NextsenseSigningComponent.msi.", sub: "Ovo je mali program koji radi u pozadini." },
{ main: "Nakon instalacije, u nPIS-u provjerite da li se pojavljuje zelena kvačica pored statusa komponenti." }
],
note: "Ove komponente služe kao most između browsera i SafeNet klijenta.",
links: [
{ name: "Chrome: XML Signing", url: "https://chromewebstore.google.com/detail/nextsense-xml-signing-com/ccdgonnidaghcdicoebncgncfmpagpdk" },
{ name: "Chrome: PDF Signing", url: "https://chromewebstore.google.com/detail/nextsense-pdf-signing-com/dfjbpjcgbmpmjacdgflidcbdojphlhmd?hl=en" },
{ name: "Program: Nextsense Component (.msi)", url: "https://signingextension.nextsense.com/Installation/NextsenseSigningComponent.msi" }
]
},
{
title: "KORAK 6: Potpisivanje dokumenta",
short: "Potpisivanje",
icon: '
',
color: "step-6",
items: [
{ main: "Otvorite dokument koji želite potpisati unutar nPIS sistema." },
{ main: "Kliknite na dugme sa ikonom pera ili tekstom 'Potpiši'." },
{ main: "U iskačućem prozoru odaberite Vaš certifikat i unesite
PIN kod.", sub: "PIN ste dobili u Pošti." },
{ main: "Nakon uspješnog potpisivanja, dokument će dobiti status 'Potpisan'." }
],
note: "Nikada ne ostavljajte USB token u računaru nakon završetka rada!",
links: []
}
];
let currentStep = 0;
function initProgressBar() {
const progressBar = document.getElementById('progressBar');
const progressPercentage = (currentStep / (steps.length - 1)) * 100;
let html = `
`;
steps.forEach((step, index) => {
let statusClass = index < currentStep ? 'completed' : (index === currentStep ? 'active' : '');
let iconContent = index < currentStep ? '
' : index + 1;
html += `
${iconContent}
${step.short}
`;
});
progressBar.innerHTML = html;
}
function renderStep() {
const step = steps[currentStep];
document.getElementById('cardHeader').className = `card-header step-card-header ${step.color}`;
document.getElementById('cardIcon').innerHTML = step.icon;
document.getElementById('cardTitle').textContent = step.title;
let content = '
';
step.items.forEach((item, index) => {
content += `
${index + 1}
${item.main}
${item.sub ? `${item.sub}` : ''}
`;
});
content += '
';
content += `
`;
if (step.links && step.links.length > 0) {
content += `
LINKOVI ZA PREUZIMANJE:
`;
step.links.forEach(link => {
content += `
${link.name}`;
});
content += '
';
}
document.getElementById('stepContent').innerHTML = content;
document.getElementById('prevBtn').disabled = currentStep === 0;
document.getElementById('nextBtn').disabled = currentStep === steps.length - 1;
document.getElementById('stepCounter').textContent = `Korak ${currentStep + 1} od ${steps.length}`;
initProgressBar();
updateQuickNav();
}
function updateQuickNav() {
const quickNav = document.getElementById('quickNav');
quickNav.innerHTML = '';
steps.forEach((step, index) => {
const btn = document.createElement('button');
btn.className = 'quick-nav-btn' + (index === currentStep ? ' active' : '');
btn.innerHTML = `
KORAK ${index + 1}${step.short}`;
btn.onclick = () => goToStep(index);
quickNav.appendChild(btn);
});
}
function nextStep() { if (currentStep < steps.length - 1) { currentStep++; renderStep(); window.scrollTo({ top: 0, behavior: 'smooth' }); } }
function prevStep() { if (currentStep > 0) { currentStep--; renderStep(); window.scrollTo({ top: 0, behavior: 'smooth' }); } }
function goToStep(index) { currentStep = index; renderStep(); window.scrollTo({ top: 0, behavior: 'smooth' }); }
renderStep();
</script>