Krajowy system e-Faktur

TK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Cześć, czy w tym momencie w ogóle możliwe jest użycie jako metody uwierzytelniania tokenu KSeF? Jak nie ma aplikacji żeby taki token sobie pobrać?

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

Chcę wysłać fakturę w imieniu innego podmiotu (A) i ja (B) chce być w Podmiot3 z Rolą 5 czyli wystawca. A podmiot 2 to nabywca (C) Jakie uprawnienie powinen podmiot A nadać podmiotowi B wg Was?

CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

jak pobrać paczkę wyeksportowanych faktur ?
mam part.url ,
robię using var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", AccessToken.Token) ;
foreach (var part in package.Parts)
{
var bytes = await httpClient.GetByteArrayAsync(part.Url);

               i dostaję 403 server failed to authenticate request,
               bez dodania nagłówka pobiera mi ale pliki .aes których nie umiem odszyfrować
Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1776
0

odnośnie KSeF to jadą po tym w najnowszym Najwyższym Czasie. Jak ktoś zainteresowany to priv

Dzmitry Lysko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Mam już uruchomione uwierzytelnianie i komunikację z API KSeF (token, certyfikat Ksef).
Jeśli ktoś z Was ma już wdrożone wystawianie e-faktur, proszę o wystawienie kilku testowych faktur na NIP 5372633951.

Potrzebne tylko do sprawdzenia odbioru i filtrowania po API — mogą być dowolne dane, byle zgodne ze strukturą FA(3).

KU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
1

Po wczorajszej aktualizacji zaczął mi magicznie sam z siebie działać skrypt do podpisywania XADES na certyfikatach generowanych przeze mnie jak i od @Witold Jaworski (dziękuję raz jeszcze).
więc jak ktoś miał z tym problem to zróbcie retest bo coś poprawili.

GB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

W numerze ksef jest data. Czy to jest data wysłania xml do KSeF, czy data wygenerowania numeru ksef ?

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Mam pytanie dodałem fakture korygującą, ale mimo numeru ksef nie zwraca mi jej w metadanych

Kopiuj
      $filters = [
                    'subjectType' => 'Subject2',
                    'dateRange' => [
                        'dateType' => 'Issue',
                        'from' => '2025-01-01T00:00:00Z',
                        'to' => '2025-12-31T23:59:59Z',
                    ],
                    'ksefNumber' => '6821798692-20251008-010080460A4F-70',
                ];
Mateusz Jaracz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam czy ktoś może spotkał się z problemem podczas tworzenia sesji interaktywnej. wydaje mi się że sesję tworzę poprawnie otrzymuję referenceNumber oraz validUntil. (request https://ksef-test.mf.gov.pl/api/v2/sessions/online). następnie przy próbie wykonania wysyłki faktury otrzymuję następujący błąd:

local.ERROR: KSeF HTTP fail {"status":400,"body":"{"exception":{"exceptionDetailList":[{"exceptionCode":21180,"exceptionDescription":"Status sesji nie pozwala na wykonanie operacji.","details":["Status sesji (415) uniemożliwia wysyłkę faktur."]}],

wystąpiły u kogoś podobnego typu problemy?

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Cześć,

Czy ktoś może podpowiedzieć, czy wyświetlany komunikat jest poprawny?
Otrzymuję odpowiedź:

Kopiuj
{"success":true,"hasMore":false,"isTruncated":false,"continuationToken":null,"invoices":[]}

Pobieram listę metadanych faktur z endpointu: /api/v2/invoices/query/metadata

czy może z innego endpointu powinienem pobrać faktury?

SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Hej,

Mam niestety problem z KSef2.0. Od paru dni walczę z dostaniem się do sesji online. Wszystkie etapy token autoryzacyjny i context tokeni już dostaję.
Zmieniam klienta na surowego HttpClient i dorzucam ->
Authorization: Bearer <ContextToken>
body: formCode + encryption ->

Kopiuj
         //Inicjowanie nowej sesji (powstaje klient Http, i spinany jest z wygenerowanym klientem openapi)
         KsefSession.Initialize(KsefConfig.PfxPath, KsefConfig.PfxPassword, trustAllOnTE: true);
         KsefSession.SetAccessToken(contextToken, arn, util);  //contextToken = tokens.AccessToken.Token;

 var mfCert = new X509Certificate2(mfEncCertPath);// Gdzie mfEncCertPath jest certyfikatem sciągniętym z MF -> "/api/v2/security/public-key-certificates";

///// Generuje losowy klucz AES-256 i IV (16 B), a klucz szyfruje publicznym kluczem MF (RSA-OAEP/SHA-256).
/// Zwraca: zakodowany klucz (Base64), IV (Base64)
var (encKeyB64, ivB64) = EncryptionH.MakeSymmetricForOnlineSession(mfCert);


var req = new OpenOnlineSessionRequest
{
    FormCode = new FormCode
    {
        SystemCode = "FA (3)",
        SchemaVersion = "1-0E",
        Value = "FA"
    },
    Encryption = new EncryptionInfo
    {
        EncryptedSymmetricKey = encKeyB64,  
        InitializationVector = ivB64
    }
};
        //I wywołanie
        var resp = await KsefSession.Api.OnlineAsync(req, ct);

// po tym zwrotka -> 403 Forbidden,

{StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Wed, 08 Oct 2025 20:34:04 GMT
Connection: keep-alive
x-azure-ref: 20251008T203404Z-17b8cb8f8cb6r245hC1FRA3e30000000043g000000008wsw
X-Cache: CONFIG_NOCACHE
Set-Cookie: visid_incap_3145183=c9Wur/EKRAe/NhywExcunbvK5mgAAAAAQUIPAAAAAADMTCDtEyWGTzwGlFTIP3zF; expires=Wed, 07 Oct 2026 22:47:59 GMT; HttpOnly; path=/; Domain=.mf.gov.pl
Set-Cookie: nlbi_3145183=YfYlby88lgcomEfCrQ6yoAAAAADIOIX4A/rcbK1LCAlw2DN/; HttpOnly; path=/; Domain=.mf.gov.pl
Set-Cookie: incap_ses_324_3145183=tMM/D5AqKhPp7SflbRR/BLvK5mgAAAAAogX7ln+nd5TDtqjD2YJmcw==; path=/; Domain=.mf.gov.pl
X-CDN: Imperva
X-Iinfo: 12-201011885-201007204 PNNN RT(1759955644305 27) q(0 0 0 0) r(0 0) U6
Content-Length: 0
}}

Metoda którą wywołuję (wygenerowany klient)

Kopiuj
        /// <summary>
        /// Otwarcie sesji interaktywnej
        /// </summary>
        /// <remarks>
        /// Otwiera sesję do wysyłki pojedynczych faktur. Należy przekazać schemat wysyłanych faktur oraz informacje o kluczu używanym do szyfrowania.
        /// <br/>
        /// <br/>&gt; Więcej informacji:
        /// <br/>&gt; - [Otwarcie sesji interaktywnej](https://github.com/CIRFMF/ksef-docs/blob/main/sesja-interaktywna.md#1-otwarcie-sesji)
        /// <br/>&gt; - [Klucz publiczny Ministersta Finansów](/docs/v2/index.html#tag/Certyfikaty-klucza-publicznego)
        /// <br/>
        /// <br/>Wymagane uprawnienia: `InvoiceWrite`, `PefInvoiceWrite`.
        /// </remarks>
        /// <returns>Created</returns>
        /// <exception cref="ApiException">A server side error occurred.</exception>
        public virtual async System.Threading.Tasks.Task<OpenOnlineSessionResponse> OnlineAsync(OpenOnlineSessionRequest body, System.Threading.CancellationToken cancellationToken)
        {
            var client_ = _httpClient;
            var disposeClient_ = false;
            try
            {
                using (var request_ = new System.Net.Http.HttpRequestMessage())
                {
                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
                    var content_ = new System.Net.Http.StringContent(json_);
                    content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
                    request_.Content = content_;
                    request_.Method = new System.Net.Http.HttpMethod("POST");
                    request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json"));

                    var urlBuilder_ = new System.Text.StringBuilder();
                    if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
                    // Operation Path: "api/v2/sessions/online"
                    urlBuilder_.Append("api/v2/sessions/online");

                    PrepareRequest(client_, request_, urlBuilder_);

                    var url_ = urlBuilder_.ToString();
                    request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);

                    PrepareRequest(client_, request_, url_);

                    var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
                    var disposeResponse_ = true;
                    try
                    {
                        var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
                        foreach (var item_ in response_.Headers)
                            headers_[item_.Key] = item_.Value;
                        if (response_.Content != null && response_.Content.Headers != null)
                        {
                            foreach (var item_ in response_.Content.Headers)
                                headers_[item_.Key] = item_.Value;
                        }

                        ProcessResponse(client_, response_);

                        var status_ = (int)response_.StatusCode;
                        if (status_ == 201)
                        {
                            var objectResponse_ = await ReadObjectResponseAsync<OpenOnlineSessionResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
                            if (objectResponse_.Object == null)
                            {
                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
                            }
                            return objectResponse_.Object;
                        }
                        else
                        if (status_ == 400)
                        {
                            var objectResponse_ = await ReadObjectResponseAsync<ExceptionResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
                            if (objectResponse_.Object == null)
                            {
                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
                            }
                            throw new ApiException<ExceptionResponse>("| ExceptionCode | ExceptionDescription | Details |\n|-|-|-|\n| 21405 | B\u0142\u0105d walidacji danych wej\u015bciowych. | {tre\u015b\u0107 b\u0142\u0119du z walidatora} |", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                        }
                        else
                        if (status_ == 401)
                        {
                            string responseText_ = ( response_.Content == null ) ? string.Empty : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
                            throw new ApiException("Unauthorized", status_, responseText_, headers_, null);
                        }
                        else
                        if (status_ == 403)
                        {
                            string responseText_ = ( response_.Content == null ) ? string.Empty : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
                            throw new ApiException("Forbidden", status_, responseText_, headers_, null);
                        }
                        else
                        {
                            var responseData_ = response_.Content == null ? null : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
                            throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
                        }
                    }
                    finally
                    {
                        if (disposeResponse_)
                            response_.Dispose();
                    }
                }
            }
            finally
            {
                if (disposeClient_)
                    client_.Dispose();
            }
        }

Kombinowałem jeszcze tak, że zostawiałem "klienta starego" - tego co uzyskiwałem tokeny, ale to nic nie dało - cały czas to samo.

Może komuś z Was udało się już to przejść w C# ;-)

N1ebieski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

Pytanie do tych co już wdrożyli wysyłkę wsadową. Co mam umieścić w nagłówku Authorization podczas wysyłania partów? Gdy mam tam Access Token (którym uwierzytelniłem się bez problemu we wcześniejszych endpointach) otrzymuję zwrotnie error:

Kopiuj
<?xml version="1.0" encoding="utf-8"?>
<Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:b3538f30-301e-0023-106c-38298d000000
Time:2025-10-08T15:56:44.3593182Z</Message></Error>

WJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
0

@N1ebieski
Odpowiadam postem, by przytoczyć log żądania HTTP wysyłana takiej części ("Partów" to Rzymianie starali się pokonać, ze zmiennym szczęściem):

Kopiuj
Debug	2025-10-08 12:33:14.822 <KSeF.Services.HttpRequestsObserver> after 18.270s:
	Sending HTTP request:
 	URL: https://ksef-test.mf.gov.pl/storage/09/20251008-sb-2437e09000-81339aaf3f-f3/batch-parts/part_1.zip.aes?skoid=0e92608a-831d-404b-9945-197ed82a5dbc&sktid=647754c7-3974-4442-a425-c61341b61c69&skt=2025-10-07T15%3A51%3A21Z&ske=2025-10-14T15%3A51%3A21Z&sks=b&skv=2025-01-05&sv=2025-01-05&st=2025-10-08T10%3A27%3A57Z&se=2025-10-08T11%3A02%3A57Z&sr=b&sp=w&sig=YQYkr1jH2n3XXuGFuNve%2B5Hve7Wu%2FcKpmPz2lLJK4h4%3D
	Method: PUT
	HTTP Headers:
	
	Data:	Content-Type: application/octet-stream
		x-ms-blob-type: BlockBlob
		Content-Length: 4112
		
		--- cannot log this kind of data  --- 


Debug	2025-10-08 12:33:15.489 <KSeF.Services.HttpRequestsObserver> after 667ms:
	Received HTTP response:	201 (Created)
	Data:	Content-Length: 0
		Content-MD5: X5GsfBv1aNCkYrHsVMmDQg==
		Last-Modified: Wed, 08 Oct 2025 10:33:16 GMT
		
		--- cannot log this kind of data  --- 

	HTTP response headers:
	Date: Wed, 08 Oct 2025 10:33:16 GMT
	Connection: keep-alive
	ETag: "0x8DE06561796A95B"
	x-ms-request-id: 64592f99-101e-0012-283e-38eeb6000000
	x-ms-version: 2025-01-05
	x-ms-content-crc64: B3mtI3vqjfI=
	x-ms-request-server-encrypted: true
	x-azure-ref: 20251008T103316Z-186c9596587mhd28hC1CAIcuwc000000031g000000005qrx
	X-Cache: CONFIG_NOCACHE
	Set-Cookie: visid_incap_3145183=OJ0SL21lSiqAPebJ9vZiC+s95mgAAAAAQUIPAAAAAABhJnTMJQErMkn/diK4maG5; expires=Wed, 07 Oct 2026 23:07:08 GMT; HttpOnly; path=/; Domain=.mf.gov.pl, nlbi_3145183=Cqapd3WKn0NWYseDrQ6yoAAAAAC5w1+tJheo9hWYg2MkUtJt; HttpOnly; path=/; Domain=.mf.gov.pl, incap_ses_520_3145183=2xY6KRteq2Wz1KMRZGk3B+s95mgAAAAA08q1aA/nILOvIXaYTQKHVQ==; path=/; Domain=.mf.gov.pl
	X-CDN: Imperva
	X-Iinfo: 11-91081098-91081099 NNNN CT(67 156 0) RT(1759919596037 15) q(0 0 2 0) r(6 6) U6

Jak widać, ŻADNYCH nagłówków nie ma w tym HTTP PUT.

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Mam stworzony podmiot za pomocą endpointu https://ksef-test.mf.gov.pl/api/v2/testdata/person
{

"nip": "9876543210",
"pesel": "1234567890",
"isBailiff": false,
"description": "Osoba testowa"

}

Próbuję nadać sobie jakieś uprawnienia tym endpointem https://ksef-test.mf.gov.pl/api/v2/testdata/permissions

{
"contextIdentifier": {
"type": "nip",
"value": "9876543210"
},
"authorizedIdentifier": {
"type": "pesel",
"value": "1234567890"
},
"permissions": [
{
"description": "Opis testowy",
"permissionType": "CredentialsManage"
}
]
}

Za każdym razem dostaję zwrotkę:
{
"exception": {
"exceptionDetailList": [
{
"exceptionCode": 500,
"exceptionDescription": "Wystąpił nieoczekiwany błąd."
}
],
"serviceCode": "00-0e5fe722e8e63a2f63752d6478450479-7c77cf772797cc0b-00",
"timestamp": "2025-10-08T19:40:53.3561694Z"
}
}

Wiem, że dane są poprawne ponieważ kiedy dodam niepoprawne to dostaję normalny błąd walidacji z ksef. XMLa podpisuję profilem zaufanym ale wydaje mi się, że nie ma to żadnego znaczenia ponieważ endpointy do tworzenia danych testowych nie wymagają żadnych danych logowania (ani nagłówka ani tokena w xml itd). Żądanie staram się wysłać testowo postmanem jeśli ma to jakieś znaczenie. Błagam pomóżcie bo już mi brakuje do tego cierpliwości a wiem, że to dopiero początek mojej pięknej przygody.

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

Czy ja dobrze widzę, ze jak wysle CSR do tego certyfikatu z ksef z RSA to oni i tak zwroca z algorytmem EC to przecież potem klucz prywatny chyba nie pasuje?

Mateusz Jaracz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć, Przy próbie otwarcia sesji interaktywnej, dostaję zwrotkę "415: Błąd odszyfrowania dostarczonego klucza ". zerkałem na swój kod na różne sposoby jednak naprawdę już nie widzę co tam może być żle zrobione. wrzucam urywki kodu odpowiadającego za otwarcie sesji :
środowisko: "test".

Kopiuj

 private function getRsa(): RSA\PublicKey
    {
  //  'public_key_path' => env('KSEF_PUBLIC_KEY_PATH', storage_path('app/ksef/ksef_public.pem')), <- klucz pem z ministerstwa cyfryzacji(ważny do 2027-09-29T06:03:18Z).
    $pemPath = config('ksef.public_key_path'); 
    $pem = @file_get_contents($pemPath);
    
    if ($pem === false) {
     throw new \RuntimeException("Nie mogę odczytać pliku klucza publicznego KSeF: {$pemPath}");
    }
    
    return PublicKeyLoader::load($pem)
      ->withPadding(RSA::ENCRYPTION_OAEP)
       ->withHash('sha256')
      ->withMGFHash('sha256');
}

....(część kodu odpowiadająca za tworzenie wsadu)...
$sessionUrl = $this->http->url($company->env, '/api/v2/sessions/online');

$aesKey = random_bytes(32); // AES-256
 $iv     = random_bytes(16); // 16B

 $encKey = $this->getRsa()->encrypt($aesKey); // RSA-OAEP SHA-256

 $enc = [
   'payload' => [
      'encryptedSymmetricKey' => base64_encode($encKey),
      'initializationVector'  => base64_encode($iv),
   ],
   'raw' => compact('aesKey', 'iv'), // RAW bytes
];

$res = Http::acceptJson()
   ->withToken($company->access_token)
   ->asJson()
   ->post($sessionUrl, [
       "formCode" => [
         "systemCode"=> "FA (3)",
         "schemaVersion"=> "1-0E",
         "value"=>"FA"
       ],
     "encryption" => $enc['payload'],
 ])
->throw()
 ->json();
//normalnie otrzymuję referenceNumber
 $reference = $res['referenceNumber'] ?? null;


//odpowiedź z serwera: 415 Błąd odszyfrowania dostarczonego klucza
 $test = $this->http->url(
          $company->env,
          "/api/v2/sessions/{$session->reference_number}"
 );




z góry dziękuję za wszelką pomoc 😀

PS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Czy to ma znaczenie że w API czas jest 2 godziny do tyłu w stosunku do czasu polskiego? czyli gdy wyślemy do API fakturę o 1 w nocy - to timestampy są z 23 - i wtedy faktura będzie już traktowana jako zapisana w nowym dniu czy jeszcze poprzednim? czy to w ogóle może nie ma znaczenia ?

KU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Czy ktoś już może jest po prawidłowym wygenerowaniu QR dla certyfikatu? Trafialiście tam na jakieś problemy techniczne?

PS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

a jak to jest z tymi duplikatami faktur? wysyłam (tryb interaktywny) z uporem mianiaka tę sąmą fakturę (numer+nip) do API i za każdym razem otrzymuję nowy numer KSEF (referenceNumber) - czy to kwestia testowego środowiska czy może trzeba coś zrobić żeby faktura została za kolejnym razem uznana jako duplikat ?

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Mam pytanie czy to dobre podejście, mam co jakiś czas pobierać z faktury z ksef. Najpierw odczytuje metadane a następnie pobieram pojedyncze faktury po nr ksef

BS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

testowy ksef dziś dosyć regularnie zwraca mi "krzaki" zamiast oczekiwanej odpowiedzi. ktoś też tak ma?

BS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

wysyłka wsadowa i sprawdzenie czy się wysłało. ja rozumiem, że mogę użyć do tego /v2/sessions/{referenceNumber}/invoices? gdzie referenceNumber to mam z wywołania /v2/sessions/batch
pytam bo o ile wysłane interaktywnie coś mi zwraca to z wsadowego mam kompletnie pustą odpowiedź.

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

przy eksporcie faktur /invoices/exports otrzymuje błąd

Kopiuj
  "exception" => array:3 [▼
    "exceptionDetailList" => array:1 [▼
      0 => array:2 [▼
        "exceptionCode" => 500
        "exceptionDescription" => "Wystąpił nieoczekiwany błąd."
      ]
    ]
    "serviceCode" => "00-7f49b3a8e8a75f097fab1b47fdb87d4d-fb91b80a0091d9f8-00"
    "timestamp" => "2025-10-09T10:22:59.7109009Z"
  ]
]
Kopiuj
"encryption" => array:2 [▼
    "encryptedSymmetricKey" => "tbZ/Wj8QH2aFa0X1J6qI42EIm5RgatEpfoVgs3rQ4/M="
    "initializationVector" => "4N0xmgO+R3X6rM3b8aILgw=="
  ]
  "subjectType" => "Subject1"
  "dateRange" => array:3 [▼
    "dateType" => "Issue"
    "from" => "2025-10-01T00:00:00Z"
    "to" => "2025-12-31T23:59:59Z"
  ]
  "formType" => "FA"
JK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Mam błąd wykonania na instrukcji:
Może ktoś mi coś doradzi.

encryptionData = cryptographyService.GetEncryptionData();

Object reference not set to an instance of an object

Błąd "Object reference not set to an instance of an object" po polsku oznacza "Odwołanie do obiektu nie jest ustawione na wystąpienie obiektu" i pojawia się, gdy próba użycia obiektu kończy się niepowodzeniem, ponieważ obiekt ten nie został wcześniej zainicjowany ani utworzony. Wskazuje to na problem z brakiem wystarczających danych lub niewłaściwym wypełnieniem kontrolki.

Jak mam zainicjować ten objekt ?
W programach testowych nie potrafię tego znaleźć.

// Inicjacja zmiennych

private ICryptographyService cryptographyService;
private static EncryptionData? encryptionData;
private string accessToken = string.Empty;
private CancellationToken cancellationToken = default;

// accessToken mam wygenerowany.

encryptionData = cryptographyService.GetEncryptionData();

var request = OpenOnlineSessionRequestBuilder
.Create()
.WithFormCode(systemCode: "FA (2)", schemaVersion: "1-0E", value: "FA")
.WithEncryption(
encryptedSymmetricKey: encryptionData.EncryptionInfo.EncryptedSymmetricKey,
initializationVector: encryptionData.EncryptionInfo.InitializationVector)
.Build();

var openSessionResponse = ksefClient.OpenOnlineSessionAsync(request, accessToken, cancellationToken).Result;

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Krótkie pytanko: Jak sprawdzacie czy access token jest jeszcze aktywny?
A może zawsze na początku robicie refresh token?

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Cześć

Z cyklu głupich pytań :)
Pobieram faktury z endpointu: /api/v2/invoices/query/metadata.

Problem w tym, że to nie jest cały dokument — żeby pobrać produkty, muszę użyć: /api/v2/invoices/ksef/{ksefNumber}.

Czy da się jakoś pobrać cały dokument od razu?

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Czy da się w powershell poprawnie podpisać plik xml certyfikatem firmowym?

ZB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

Uwierzytelniłem się certyfikatem self-signed, czy teraz od razu mogę otworzyć sesję interaktywną czy muszę nadać sobie uprawnienia?
Pytanie kolejne, To API i filozofia uprawnień są koszmarnie zamotane. Nie wiem czy to dobrzze rozmiem.

  1. Czy nadając uprawnienia osobie lub podmiotowi (/permissions/persons/grants lub /permissions/entities/grants) powoduję przypisanie tych uprawnień do kogoś/czegoś i potem ten ktoś/coś, w obrębie własnego konta i po własnym uwierzytelnieniu (przejściu challenge, XAdES...) ma prawo w imieniu moim (mojego NIPu) korzystać z tym praw jakie mu nadałem, czyli np. wystawiać faktury?
  2. Innymi słowy czy za pomocą uprawnień (//permissions/*) ustawiam uprawnienia innych kont w systemie do dostępu do moich dokumentów?
  3. I czy konieczne jest używane tego modułu uprawnień w przypadku gdy nikomu nie chcę dawać uprawnień, bo np. działam sam w ramach JDG?
JO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Biorąc pod uwagę limit żądań dla punktu końcowego /api/v2/invoices/ksef/{ksefNumber}, jaka byłaby najlepsza alternatywa dla pobierania wszystkich plików w sesji wsadowej? Punkt końcowy /invoices/exports nie udostępnia filtra umożliwiającego pobranie wszystkich dokumentów w partii (np. numeru referencyjnego partii).

Wciąż w tym samym temacie, czy ktoś może potwierdzić, czy plik zwrócony przez API /api/v2/invoices/ksef/{ksefNumber} to dokładnie ten sam plik FA(3), który został pierwotnie wysłany, czy też KseF dodał jakieś dodatkowe pole po walidacji?

M3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

czy używaliście dziś generacji certyfikatów ksef lub tokenów lub czegokolwiek z tym związanego i wam działa ?
ja cały czas mam status 403, np.:

GET /api/v2/certificates/enrollments/data HTTP/1.1
Host: ksef-test.mf.gov.pl
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br, zstd
Accept: /
Connection: keep-alive
Authorization: Bearer <tutaj siedzi="siedzi" access="access" token="token">

reply: HTTP/1.1 403 Forbidden

albo coś źle robię ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.