Files
Vladimir Buzalka 71b8ed676a notebookvb
2026-05-13 07:43:33 +02:00

3.0 KiB
Raw Permalink Blame History

ZPŠ — Podávání žádostí o výpis registrovaných pojištěnců

Co skript dělá

PodejZadostSeznamZPS.py provede v jednom spuštění tři kroky:

  1. Přihlásí se certifikátem na portál ZPŠ (čistý Python, bez NMSigneru) — uloží cookies do sdíleného StahováníZpráv/209 ZPŠ/zps_cookies.json

  2. Stáhne nové výpisy pojištěnců ze schránky schranka-vypis-pojistencu-v-kapitaci — stahuje jen .001 soubory, jejichž obsah začíná H09305001 — ukládá do U:\Dropbox\Ordinace\Dokumentace_ke_zpracování\Zúčtovací zprávy\SeznamyPojištěnců\ — zastaví se při první již stažené zprávě — po stahování se znovu přihlásí (Playwright invaliduje předchozí requests session)

  3. Podá žádost o výpis pro 1 následující měsíc (poslední den daného měsíce)

Flow přihlášení

  1. GET /app/prihlaseni → session cookie
  2. POST /json-api/prihlaseni/prihlasovaci-zprava → challenge (zprava)
  3. Podpis challenge certifikátem (PKCS7/SHA-256, s certifikátem)
  4. POST /json-api/prihlaseni/prihlaseni-certifikatem → autentizovaná session

Sestavení XML žádosti

<SchrankaZadost NazevSchranky="VypisPojKap" NazevFiltru="ZZ_VYP_REG">
<PolozkaFiltru Nazev="icz">25520</PolozkaFiltru>
<PolozkaFiltru Nazev="datum">DD.MM.YYYY</PolozkaFiltru>
<PolozkaFiltru Nazev="razeni">jmeno</PolozkaFiltru>
<PolozkaFiltru Nazev="typ">soubor</PolozkaFiltru>
</SchrankaZadost>

Konce řádků: \r\n (NMSigner normalizace)

Podpis XML

PKCS7/SHA-256, bez certifikátu v podpisu (NoCerts):

  • Server při odesílání formuláře zná certifikát z registrace
  • Certifikát v podpisu server odmítá ("Podepsaná data obsahují certifikát")
  • Rozdíl oproti přihlášení: login certifikát potřebuje, formulář ne

Odeslání

POST https://portal.zpskoda.cz/json-api/formular-schranky/29-vypis-registrov-pojistencu/ulozit-formular Body: {"schrXml": "...", "schrSign": "-----BEGIN PKCS7-----...", "schrFiles": []}

Klíčový objev

Portál používá NMSigner (Chrome extension + lokální app) pro podepisování formulářů. Přišli jsme na to odposlechem síťového provozu v DevTools — stačil jeden XHR request. NMSigner dělá přesně to co my: PKCS7 DetachedSignature bez certifikátu. Výsledek: žádný prohlížeč ani NMSigner není potřeba.

Soubory

Soubor Popis
PodejZadostSeznamZPS.py Hlavní skript — stažení výpisů + podání žádosti
stav.json Poslední úspěšně podaný měsíc {"mesic": 4, "rok": 2026}
log_podani.json Historie podání s referenčními čísly

Parametry

  • IČZ: 25520 (IČP: 09305001, MUDr. Michaela Buzalková)
  • Certifikát: Insurance/Certificates/MBQualifiedCert.pfx
  • Typ výstupu: soubor (Soubor dle datového rozhraní)
  • Řazení: jmeno (příjmení a jména)

Stav

Podáno: 01/2025 04/2026 (16 měsíců). Příští spuštění podá 05/2026 (jakmile bude k dispozici).