https://web2tr-ksef.mf.gov.pl/web/ – strona logowania
– uwierzytelnienie za pomocą podpisu zaufanego, podpisanie dokumentu
// ============================================ // KROK 2: IMPLEMENTACJA KSEFCLIENT I AUTORYZACJA // ============================================ // // W KSeF API 2.0 proces uwierzytelniania składa się z 3 kroków: // 1. Pobranie challenge (POST /auth/challenge) // 2. Przygotowanie żądania autoryzacyjnego z tokenem i challenge // 3. Uzyskanie JWT accessToken // ============================================ // Plik: src/KSeF/KSeFClient.php // ============================================
# composer require guzzlehttp/guzzle: ^7.10 # composer require phpseclib/phpseclib:~3.0
Upewnij się że PHP ma włączone rozszerzenie OpenSSL: # php -m | grep openssl (powinno pokazać "openssl")
odsumowanie Kroku 2:
Co zbudowaliśmy:
- ✅ KSeFClient.php – pełna implementacja uwierzytelnienia
- ✅ Szyfrowanie RSA-OAEP SHA-256 (phpseclib + OpenSSL fallback)
- ✅ Proces 3-krokowy KSeF 2.0:
- POST /auth/challenge
- POST /auth/ksef-token
- GET /auth/{referenceNumber} (polling)
- POST /auth/token/redeem
- ✅ Zarządzanie JWT tokenami
- ✅ Kontroler testowy do łatwego testowania: src/Controller/KsefTestController.php
Kluczowe nauki:
- KSeF 2.0 wymaga RSA-OAEP z SHA-256 (nie SHA-1!)
- Format szyfrowania:
token|timestampMs(bez challenge) - Struktura JSON: płaska (bez
credentials) - Proces jest asynchroniczny – wymaga pollingu
CO DALEJ? – KROK 3
Teraz mamy accessToken i możemy przejść do wysyłania faktur!
Krok 3 będzie obejmował:
- Budowanie faktury w formacie FA(3) XML
- Szyfrowanie faktury (AES-256-CBC)
- Otwarcie sesji online
- Wysłanie faktury do KSeF
- Pobranie UPO (Urzędowego Poświadczenia Odbioru)
- Pobieranie faktur z KSeF
Moduł wysyłania faktur!
To będzie obejmowało:
- Klasę
FakturaBuilderdo tworzenia XML FA(3) - Szyfrowanie AES-256-CBC
- Sesje online
- Wysyłkę faktur