AuthorisationChallenge zwraca kod 200 przy błędnym SessionToken

0

Mam funkcjonalność testowania wprowadzonego tokenu nadanego użytkownikowi na stronie ksef (dalej AuthToken) przed korzystaniem. Dla tego korzystam z endpintu "ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge". Problem polega na tym, że jeśli wprowadzę błedny AuthToken, to endpoint nie zwraca żadnego błędu. A nawet jeśli zmienię NIP na inny, dowolny, też nie zwraca żadnych błędów. Problemy się zaczynają przy próbie pracować z tym AuthToken, już w momencie pobierania tokena sesyjnego "ksef-test.mf.gov.pl/api/online/Session/InitToken" zwraca "Call failed with status code 400 (Bad Request): ". Czy to jest nie poprawne zachowanie "AuthorisationChallenge"? Czy są inne sposoby przetestować AuthToken? Z tego co rozumiem, "ksef-test.mf.gov.pl/api/online/Session/InitToken" nie nadaje się do testowania, bo w tym momencie, już nadaję token sesyjny. Z góry dziękuję za odpowiedź.

P.S. Z prawidłowym AuthToken wszystko działa poprawnie.

var request = BaseApiUrl.AppendPathSegment(SessionUrlPath)
.AppendPathSegment("AuthorisationChallenge")
.WithHeader("Content-Type", "application/json")
.WithHeader("Accept", "application/json")
.WithHeader("SessionToken", AuthToken)
.WithTimeout(10);
var response = await request.PostJsonAsync(
new
{
contextIdentifier = new
{
type = "onip",
identifier = customerNIP
}
});

var request = BaseApiUrl.AppendPathSegment(SessionUrlPath).AppendPathSegment("InitToken")
.WithHeader("accept", "application/json")
.WithHeader("Content-Type", "application/octet-stream")
.WithHeader("SessionToken", AuthToken);

var response = await request.PostAsync(new ByteArrayContent(binaryData));

0

Najpierw pobierasz /online/Session/AuthorisationChallenge aby uzyskać challenge i timestamp

url = f"{base_url}/online/Session/AuthorisationChallenge"
    headers = {
        "Content-Type": "application/json",
    }
    data = {
        "contextIdentifier": {
            "type": "onip",
            "identifier": global_var.nip
        }
    }

to jest ta najprostsza rzecz

teraz wywołujesz
/online/Session/InitToken
przekazując tam 3 informacje włąsnie challenge, nip (musi być ten sam co potem w wysyłanej FV i tu nie ma znaczenia czy to testówka czy prod) oraz TOKEN

<?xml version="1.0" encoding="utf-8"?>
<ns3:InitSessionTokenRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://ksef.mf.gov.pl/schema/gtw/svc/types/2021/10/01/0001" xmlns:ns3="http://ksef.mf.gov.pl/schema/gtw/svc/online/auth/request/2021/10/01/0001">
  <ns3:Context>
    <Challenge xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">{global_challenge}</Challenge>
    <Identifier xsi:type="ns2:SubjectIdentifierByCompanyType" xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">
      <ns2:Identifier>{global_var.nip}</ns2:Identifier>
    </Identifier>
    <DocumentType xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">
      <ns2:Service>KSeF</ns2:Service>
      <ns2:FormCode>
        <ns2:SystemCode>FA (2)</ns2:SystemCode>
        <ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
        <ns2:TargetNamespace>http://crd.gov.pl/wzor/2023/06/29/12648/</ns2:TargetNamespace>
        <ns2:Value>FA</ns2:Value>
      </ns2:FormCode>
    </DocumentType>
    <Token xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">{global_token}</Token>
  </ns3:Context>
</ns3:InitSessionTokenRequest>

natomiast ten global_token jest ... złożóny po pierwsze wskazujesz tam timestamp z AuthorisationChallenge w postaci milisekund następnie dajesz pionową krechę | i podajesz AuthToken ze strony KSEF dla danego NIP następnie cały ten ciąg znaków musisz zakodować plikiem PEM (do pobrania ze stronty ksef) i na samym końcu jeszcze base64 taki gotowy xml wysyłasz i wtedy on Ci zwróci w odpowiedzi SessionToken, który już przekazujesz do:

headers = {
'accept': 'application/json',
'SessionToken': session_token,
'Content-Type': 'application/json'
}

przy wywołaniu /online/Invoice/Send

1 użytkowników online, w tym zalogowanych: 0, gości: 1