KSEF

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:
    1. POST /auth/challenge
    2. POST /auth/ksef-token
    3. GET /auth/{referenceNumber} (polling)
    4. 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ł:

  1. Budowanie faktury w formacie FA(3) XML
  2. Szyfrowanie faktury (AES-256-CBC)
  3. Otwarcie sesji online
  4. Wysłanie faktury do KSeF
  5. Pobranie UPO (Urzędowego Poświadczenia Odbioru)
  6. Pobieranie faktur z KSeF

Moduł wysyłania faktur!

To będzie obejmowało:

  • Klasę FakturaBuilder do tworzenia XML FA(3)
  • Szyfrowanie AES-256-CBC
  • Sesje online
  • Wysyłkę faktur