尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Kalkulator Strefy Płatnego Parkowania (SPP) Łódź 2026 + odwołanie od opłaty dodatkowej 300 zł (ZDiT) w PDF.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Statyczna strona w katalogu public/ (index.html + assets/ + vendor/), działająca w przeglądarce, oraz jedna funkcja Cloudflare Pages (functions/api/verify.js), która sprawdza płatność w Stripe. Kalkulator i podgląd są bezpłatne; płatny jest wyłącznie plik PDF wniosku (9,99 zł, BLIK przez Stripe).
1. Kalkulator postoju i abonamentu SPP Łódź
2. Generator wniosku do ZDiT (opłata dodatkowa 300 zł)
| Podstrefa | Status | 1. godz. | 2. godz. | 3. godz. | Suma 3 h | 4. i kolejna |
|---|---|---|---|---|---|---|
| A | Łodzianin | 6,00 | 7,20 | 8,60 | 21,80 | 6,00 |
| A | Przyjezdny | 6,90 | 8,20 | 9,80 | 24,90 | 6,90 |
| B, C | Łodzianin | 5,00 | 6,00 | 7,20 | 18,20 | 5,00 |
| B, C | Przyjezdny | 6,00 | 7,20 | 8,60 | 21,80 | 6,00 |
Adres ZDiT: ul. J. Tuwima 36, 90-002 Łódź. Podstawa: uchwała nr XIII/329/25 Rady Miejskiej w Łodzi z 15.01.2025 r. (z późn. zm.), ustawa o drogach publicznych, ustawa o elektromobilności. Przed publikacją sprawdź aktualne dane na uml.lodz.pl.
public/ ← publikowany katalog (index.html, assets/, vendor/, _headers)
public/assets/config.js ← cena, link płatności, dane sprzedawcy, partner (bez kluczy!)
functions/api/verify.js ← Cloudflare Pages Function: weryfikacja płatności w Stripe
src/input.css ← źródło Tailwind (app.css jest skompilowany)
tests/ ← testy (Node + Playwright)
https://DOMAIN/?platnosc=sukces&session_id={CHECKOUT_SESSION_ID}.
Zanotuj identyfikator linku plink_… i jego adres https://buy.stripe.com/….rk_live_. Pełny klucz sk_… jest odrzucany przez funkcję.public (katalog functions/ jest wykrywany automatycznie).STRIPE_SECRET_KEY=rk_live_…PAYMENT_LINK_ID=plink_…EXPECTED_AMOUNT=999 (cena w groszach)MAX_AGE_DAYS=30; ALLOW_TEST_MODE=true tylko na czas testów w trybie testowym Stripe.public/assets/config.js: wpisz paymentUrl: 'https://buy.stripe.com/…', siteUrl, dane sprzedawcy (seller) i ewentualnie partnera (partner). Nigdy nie wpisuj tu kluczy.https://DOMAIN/api/verify?ping=1 → {"ready":true}.Przepływ: „Pobierz PDF” → okno zamówienia z dwiema obowiązkowymi zgodami (Regulamin + żądanie dostarczenia treści cyfrowej przed upływem terminu odstąpienia, art. 38 pkt 13 ustawy o prawach konsumenta) → sprawdzenie /api/verify?ping=1 (jeśli serwer nie działa: „Sprzedaż chwilowo niedostępna – nie pobraliśmy żadnych środków”) → formularz zapisany w sessionStorage, losowy identyfikator zamówienia w localStorage → Payment Link z client_reference_id → powrót → weryfikacja w Stripe (3 ponowienia co 2 s) → automatyczne pobranie PDF. Dostęp do ponownego pobrania przez 30 dni w tej samej przeglądarce.
Bez paymentUrl sprzedaż jest wyłączona. Tryb demonstracyjny (darmowy PDF) działa tylko na localhost / 127.0.0.1.
Miejsce dla partnera: bez skonfigurowanego partner strona pokazuje neutralne pole „Miejsce dla partnera – kontakt” (link z adContactUrl).
npm test # node tests/verify.test.mjs && node tests/e2e.test.js
tests/verify.test.mjs – funkcja weryfikująca z atrapą API Stripe. tests/e2e.test.js – Playwright/Chromium (+ pdftotext z poppler-utils): kalkulator, blokada podglądu, próby obejścia (?platnosc=sukces, podrobiony localStorage, cudzy link), pełny przepływ z zamockowanym /api/verify, polskie znaki w PDF, CSP.
public/assets/app.css), a pdfmake 0.2.23 leży w public/vendor/.public/_headers: Content Security Policy tylko 'self' (connect-src 'self' – wyłącznie /api/verify), frame-ancestors 'none', HSTS, nosniff. Przekierowanie do Stripe jest nawigacją, więc CSP go nie blokuje.client_reference_id, tryb live, wiek płatności).sessionStorage bieżącej karty (by przetrwały płatność) i nigdy nie są wysyłane.Przebudowa CSS po zmianie klas: npx @tailwindcss/[email protected] -i src/input.css -o public/assets/app.css --minify (wymaga npm i [email protected] @tailwindcss/[email protected]).
Generator tworzy wzór pisma i nie stanowi porady prawnej. Wniosek do ZDiT nie jest odwołaniem. Serwis nie jest powiązany z Urzędem Miasta Łodzi ani ZDiT.