尚未偵測到更新。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.