Krajowy system e-Faktur

0

Dla tych, co implementują te kody QR w .NET (wg specyfikacji API wer. 1.5): uważajcie, bo wśród różnych dostępnych ekwiwalentów enkodowania do url, właśnie NIE należy używać funkcji o nazwie urlEncode(). Poniżej przetestowane tworzenie poprawnego skrótu pliku do url linku: używa Uri.EscapeDataString() (por. ta strona)

	//zwraca skrót pliku, wg specyfikacji API
	//Argumenty:
	//	filePath: ścieżka do pliku, dla którego należy wyznaczyć skrót
	private string HashOf(string filePath) 
	{
		byte[] bytes = File.ReadAllBytes(filePath);
		SHA256 sha = SHA256.Create();
		byte[] hash = sha.ComputeHash(bytes);
		return Uri.EscapeDataString(Convert.ToBase64String(hash));
	}

Uwaga: na dzień dzisiejszy specyfikacja API (wersja 1.5) w sekcji 16.11 ("Linki weryfikacyjne") podaje niepoprawną postać linku ( %environment_path %/web/common/verification/{ksefReferenceNumber}/{hash} ). Działająca postać, podana w przykładach na następnej stronie i w używana w wizualizacjach z Aplikacji Podatnika to:

<serwer (produkcyjny | demo | testowy)>/web/verify/{ksefReferenceNumber}/{hash}

Zupełnie już nie rozumiem, dlaczego w miejscu serwera wstawili "%environment_path %", nawet nie trudząc się na jego opis. Przebijając się przez tę specyfikację wciąż mam wrażenie, jakbym czytał dokument opracowany "na kolanie" przez jakiegoś studenta.

0

Czy te kody QR i generowanie identyfikatora płatności działa na środowisku DEMO ?

0

Witam, czy do pobrania szczegółów faktury służy tylko /common/Invoice/KSeF i czy musi on posiadać wszystkie paramatery
tzn np. dueValue , subjectTo ?

Bo z tego co widzę /online/Query/Invoice/Sync pobiera tylko podsumowanie faktury + numer itd.

Czy może przeoczyłem którąś z metod ?

EDIT: Widzę , że dołożyli metodę /online/Invoice/Get/{KSeFReferenceNumber}
nie wiem natomiast dlaczego dostaje dla niej błąd:
Nieobsługiwana wersja zapytania. (21414)

0

Cześć,

Stoję także przed tym cudownym zadaniem jak integracja z KSEF. Muszę pobierać faktury dla różnych firm (będę miał kilka firm i ich tokenów) a później flow idzie w moim projekcie. Więc tylko pobieranie faktur i ich dancyh.

Jako że nie jestem w stanie nadrobić 35 stron wątku czy ktoś zechciałby mi w dwóch zdaniach streścić za czytanie czego i jak mam się zabrać? I na co uważać?

Chyba że ktoś implementował to w PHP i chce się podzielić wiedzą (w formie np konsultacji online)? Oczywiście za wiedzę się płaci, jak ktoś byłby chętny do zapraszam na PW.

Pozdro!

0

Witam,
Czy spotkał ktoś się z błędem "21417:Nieobsługiwana wersja dokumentu" podczas pobierania statusu faktury?
Generuję sessionToken, z którym strzelam pod endpoint api/online/Invoce/Send - proces wygląda poprawnie, bo w odpowiedzi dostaję status 100 i nr referencyjny. Jako invoiceBody w obiekcie invoicePayload daję dane zaczytane z pliku FA_2_Przykład_1.xml z przykładowych plików fa-2 jako Base64 (zmieniłem tam nip płatnika 1).

Nie mam pomysłu co to może być. Dodam jeszcze, że ten sam plik jestem w stanie zaczytać przez stronę ksef-test.

0

Hej czy ktoś próbował wygenerować model z najnowszej wersji: version: 2.2.0 KSeF-online.yaml?

Pousuwali externalDocs i teraz przy próbie wygenerowania modelu ze sprawdzeniem wywala błąd:

Errors: 
	-attribute paths.'/online/Session/Status'(get).externalDocs.url is missing
	-attribute paths.'/online/Invoice/Status/{InvoiceElementReferenceNumber}'(get).externalDocs.url is missing
	-attribute paths.'/online/Query/Invoice/Async/Init'(post).externalDocs.url is missing
	-attribute paths.'/online/Query/Invoice/Sync'(post).externalDocs.url is missing
	-attribute paths.'/online/Session/Status/{ReferenceNumber}'(get).externalDocs.url is missing

używam: openapi-generator-maven-plugin

Dodatkowo coś jest nie tak z nowymi typami które dodali (CredentialsBaseTypeObjectObject,CredentialsTokenType) dla klasy CredentialsParentType:

name clash: credentialsRoleList(java.util.Set<@jakarta.validation.Valid pl.gov.mf.ksef.online.CredentialsRoleResponseTokenType>) in pl.gov.mf.ksef.online.CredentialsTokenType and credentialsRoleList(java.util.Set<java.lang.Object>) in pl.gov.mf.ksef.online.CredentialsBaseTypeObjectObject have the same erasure, yet neither overrides the other

getCredentialsRoleList() in pl.gov.mf.ksef.online.CredentialsTokenType cannot override getCredentialsRoleList() in pl.gov.mf.ksef.online.CredentialsBaseTypeObjectObject

name clash: setCredentialsRoleList(java.util.Set<@jakarta.validation.Valid pl.gov.mf.ksef.online.CredentialsRoleResponseTokenType>) in pl.gov.mf.ksef.online.CredentialsTokenType and setCredentialsRoleList(java.util.Set<java.lang.Object>) in pl.gov.mf.ksef.online.CredentialsBaseTypeObjectObject have the same erasure, yet neither overrides the other
0

Pytanko mam ... zgodnie z waszymi instrukcjami, wytycznymi, podpowiedziami i nieocenioną pomocą udało mi się wywołać po kolei:
/online/Session/AuthorisationChallenge
/online/Session/InitToken
/online/Invoice/Send

zwrotnie otrzymałem:

{'timestamp': '2023-12-19T11:02:08.420Z', 'referenceNumber': '20231219-SE-EDD919594F-0148F833F2-34', 'processingCode': 100, 'processingDescription': 'Proces został zarejestrowany.', 'elementReferenceNumber': '20231219-EE-95E25CB349-6B2A5439F6-C6'}

ale jak się loguję na
https://ksef-test.mf.gov.pl/web/invoice-list
na ten testowy nip to w liście FV nie ma tej faktury. Coś jeszcze trzeba poza invoice/send zrobić?

0

Ziomki pytanko mam jeszcze odnośnie pobierania numer KSEF
Zaraz po zapisaniu FV dostaje 202 i wywołuję
/online/Invoice/Status/
tu też (w tej samej sesji) dostaję status = 200 i to co poniżej:

{'timestamp': '2023-12-19T11:51:11.735Z', 'referenceNumber': '20231219-SE-C8848C4E38-294644EBED-7A', 'processingCode': 310, 'processingDescription': 'Zakończenie etapu autoryzacji procesu', 'elementReferenceNumber': '20231219-EE-E85848B30E-DD55AEAB41-1E', 'invoiceStatus': {}}

ale invoiceStatus jest puste.

Jak z tym numerem elementu uruchomię później to już mi krzyczy że nie ma FV o podanym identyfikatorze ... coś znowu robię źle tylko nie wiem co.

0

Witam, czy ktoś może widzi problem czemu generuj 460 znaki zamiast 344 ?

  fs:= TFileStream.Create('publickey.der', fmOpenRead);
  try
    ms:= TMemoryStream.Create;
    try
      fs.Seek(24, soBeginning);
      ms.CopyFrom(fs, 270);
      LbRSA:= TLbRSA.Create(nil);
      try
        try
          ms.Position:= 0;
          LbRSA.PublicKey.LoadFromStream(ms);
          byteData:=TBytes(auth_token+'|'+IntToStr(time));

          rawByteStringData := StringOf(byteData);
          testy2 := LbRSA.EncryptString(rawByteStringData);

          binaryData := TEncoding.ASCII.GetBytes(testy2);
          encoded_string:= TIdEncoderMIME.EncodeBytes(binaryData)
        finally
          LbRSA.Free;
        end;
      except
        on e: exception do
          ShowMessage('Wystąpił błąd: : ' + E.Message);

      end;
    finally
      ms.Free;
    end;
  finally
    fs.Free;
  end;

auth_token wygenerowany z ksef_test

time jest w milisekundach od początku epoki uniksowej do czasu GMT+0000

plik .der pobrany z kesf_test

0

Czesc
Wystawiam korektę FV (w załączniku).
Walidacja względem XSD (FA (2) 1-0E) nie pokazuje błędu.
Wgrywając online przez API dostaję błąd: "The element 'DaneFaKorygowanej' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/' has incomplete content. List of possible elements expected: 'NrKSeF, NrKSeFN' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/'."

Wgrywając FV na https://ksef-test.mf.gov.pl/web/issue-invoice/enter-invoice dostaję informację o błędzie ale można zapisać FV i wszystko wygląda ok.

Czemu się tak dzieje? Może ktoś doświadczył podobnego scenariusza?

<?xml version="1.0" encoding="utf-8"?>
<Faktura xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://crd.gov.pl/wzor/2023/06/29/12648/">
  <Naglowek>
    <KodFormularza kodSystemowy="FA (2)" wersjaSchemy="1-0E">FA</KodFormularza>
    <WariantFormularza>2</WariantFormularza>
    <DataWytworzeniaFa>2023-12-19T11:47:03.9755706Z</DataWytworzeniaFa>
    <SystemInfo>360ksiegowosc.pl</SystemInfo>
  </Naglowek>
  <Podmiot1>
    <DaneIdentyfikacyjne>
      <NIP>6641626051</NIP>
      <Nazwa>CIT declaration</Nazwa>
    </DaneIdentyfikacyjne>
    <Adres>
      <KodKraju>PL</KodKraju>
      <AdresL1>ul. Marszałka Piłsudskiego 12 </AdresL1>
      <AdresL2>27-200 Starachowice</AdresL2>
    </Adres>
    <DaneKontaktowe>
      <Email>m@w.pl</Email>
      <Telefon>666777888</Telefon>
    </DaneKontaktowe>
  </Podmiot1>
  <Podmiot2>
    <DaneIdentyfikacyjne>
      <NIP>5830004491</NIP>
      <Nazwa>WWWSP. Z O.O.</Nazwa>
    </DaneIdentyfikacyjne>
    <Adres>
      <KodKraju>PL</KodKraju>
      <AdresL1>ul. Armatorów 1</AdresL1>
      <AdresL2>81-559 Gdynia</AdresL2>
    </Adres>
  </Podmiot2>
  <Fa>
    <KodWaluty>PLN</KodWaluty>
    <P_1>2023-12-19</P_1>
    <P_2>KOR_FV_DO_KOR</P_2>
    <P_13_1>-100.00</P_13_1>
    <P_14_1>-23.00</P_14_1>
    <P_13_2>0</P_13_2>
    <P_14_2>0</P_14_2>
    <P_13_3>0</P_13_3>
    <P_14_3>0</P_14_3>
    <P_13_4>0</P_13_4>
    <P_14_4>0</P_14_4>
    <P_13_5>0</P_13_5>
    <P_15>-100.00</P_15>
    <Adnotacje>
      <P_16>2</P_16>
      <P_17>2</P_17>
      <P_18>2</P_18>
      <P_18A>2</P_18A>
      <Zwolnienie>
        <P_19N>1</P_19N>
      </Zwolnienie>
      <NoweSrodkiTransportu>
        <P_22N>1</P_22N>
      </NoweSrodkiTransportu>
      <P_23>2</P_23>
      <PMarzy>
        <P_PMarzyN>1</P_PMarzyN>
      </PMarzy>
    </Adnotacje>
    <RodzajFaktury>KOR</RodzajFaktury>
    <PrzyczynaKorekty>korekta przyczyna</PrzyczynaKorekty>
    <TypKorekty>1</TypKorekty>
    <DaneFaKorygowanej>
      <DataWystFaKorygowanej>2023-12-19</DataWystFaKorygowanej>
      <NrFaKorygowanej>FV_DO_KOR</NrFaKorygowanej>
      <NrKSeFN>1</NrKSeFN>
    </DaneFaKorygowanej>
    <DodatkowyOpis>
      <NrWiersza>1</NrWiersza>
      <Klucz>1</Klucz>
      <Wartosc>Korekta została wystawiona do dokumentu nr FV_DO_KOR</Wartosc>
    </DodatkowyOpis>
    <FaWiersz>
      <NrWierszaFa>1</NrWierszaFa>
      <UU_ID>18c81be4-74e1-48c8-1be4-74e18c81be47</UU_ID>
      <P_7>KLUPŚ Nakładka na komodę biała</P_7>
      <P_8A>-</P_8A>
      <P_8B>-1.000</P_8B>
      <P_9A>-100.00</P_9A>
      <P_11>-100.00</P_11>
      <P_12>23</P_12>
    </FaWiersz>
  </Fa>
</Faktura>

0

Witam,
mam problem z https://ksef-demo.mf.gov.pl/api/online/Session/InitSigned
Dopóki nie wprowadzam sekcji Encryption wszystko działa prawidłowo.
XML podpisuje EPuapem.
https://moj.gov.pl/nforms/signer/upload?xFormsAppName=SIGNER

Z sekcją encryption, dostaje komunikat Nieprawidłowo zaszyfrowana treść.
Kolejne wywołanie już jest nie możliwe z tym samym challengem.

Zaczynam się zastanawiać czy podpisywanie Epuapem nie jest najlepszym sposobem?
Jakieś inne kodowanie pliku?

<?xml version="1.0" encoding="UTF-8"?><ns3:InitSessionSignedRequest xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001" 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>20231220-CR-4F6C7E296A-4F8F4BF996-A0</Challenge><Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType"><ns2:Identifier>75****97728</ns2:Identifier></Identifier><DocumentType><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><Encryption><ns2:EncryptionKey><ns2:Encoding>Base64</ns2:Encoding><ns2:Algorithm>AES</ns2:Algorithm><ns2:Size>256</ns2:Size><ns2:Value>H2+YWam2q/6GJafnC+qbkWDeNvZb8brpUkXw5cstNP5GnK+DGyIIwgCS7kXJXa2X8BOh9OWJXry5l7wZMq+WCXCif1+pQ+5+FbJlm16A3PB5BNy2S6cBubS2Q+kdk5FJs7pFMt6U+6jEPKMrmxi0D3nFyYK6cKmVZFQHa/4faj7qa70KEpyL49WJxdHGbQfAoe05z5OKyiZZftz+oGJVystA+fCLufVhiZ7gIuZLov8aamO1ghum1vYsG7nqJ1OrmUVrpgqv5jCqdMo+4FqG9XMKntgGsmydskjPiSxj1mF4+qNAP6neINrDrG+M1lCg/VBhrdnTAGnyfsODfohbiw==</ns2:Value></ns2:EncryptionKey><ns2:EncryptionInitializationVector><ns2:Encoding>Base64</ns2:Encoding><ns2:Bytes>16</ns2:Bytes><ns2:Value>5+DjwCfRIQPaX1Rj3jMAWw==</ns2:Value></ns2:EncryptionInitializationVector><ns2:EncryptionAlgorithmKey><ns2:Algorithm>RSA</ns2:Algorithm><ns2:Mode>ECB</ns2:Mode><ns2:Padding>PKCS#1</ns2:Padding></ns2:EncryptionAlgorithmKey><ns2:EncryptionAlgorithmData><ns2:Algorithm>AES</ns2:Algorithm><ns2:Mode>CBC</ns2:Mode><ns2:Padding>PKCS#7</ns2:Padding></ns2:EncryptionAlgorithmData></Encryption><Type>SerialNumber</Type></ns3:Context></ns3:InitSessionSignedRequest>

0

Witam,
Tworzę sesje, wysyłam fakturę ale gdy chce sprawdzić status sesji czy status faktury to pisze mi ciągle brak sesji ? Co może być przyczyną ?
Ten sam komunikat gdy chce zakończyć sesję
Nagłówki tylko Accept oraz SessionToken coś jeszcze powinno być ?

def inittoken(url,challenge,nip_value,encrypted_data):
    xml_string = '''<?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <ns3:InitSessionTokenRequest xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001" 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>{challenge}</Challenge>
        <Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
        <ns2:Identifier>{nip}</ns2:Identifier>
        </Identifier>
        <DocumentType>
        <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>{token}</Token>
    </ns3:Context>
    </ns3:InitSessionTokenRequest>'''

    xml_string = xml_string.format(challenge=challenge, nip=nip_value, token=encrypted_data)
    headers = {
    'Content-Type': 'application/octet-stream',
    'Accept': 'application/json' # 
    }
    # Wysłanie żądania POST z danymi XML jako ciągu znaków
    response = requests.post(url, data=xml_string, headers=headers)
    
    # Sprawdzenie odpowiedzi
    if response.status_code == 201:
        print("Sukces!")
        jsonResponse = response.json()

        return jsonResponse
    else:
        print(f"Błąd {response.status_code}: {response.text}")

tym wysyłam
zwrotka:

{'timestamp': '2023-12-20T14:19:03.583Z', 'referenceNumber': '20231220-SE-C5B2312210-9DCCF9BEB9-E4', 'processingCode': 100, 'processingDescription': 'Proces został zarejestrowany.', 'elementReferenceNumber': '20231220-EE-D66CA941B0-2002A10A1D-DB'}

zapytanie o Invoice/status

def nrKsef(url,ref_nr,token):
    headers = {
        'Accept': 'application/json',
        'SessionToken' : token
    }
    url= url +'/'+ref_nr
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # Rzuć wyjątek w przypadku błędu HTTP

        jsonResponse = response.json()
        return jsonResponse

    except requests.exceptions.RequestException as e:
        print(f'Błąd podczas wysyłania żądania: {e}')
        jsonResponse = response.json()
        return jsonResponse
    except json.JSONDecodeError as e:
        print(f'Błąd podczas parsowania odpowiedzi JSON: {e}')

zwrotka:

Błąd podczas wysyłania żądania: 400 Client Error: Bad Request for url: https://ksef.mf.gov.pl/api/online/Invoice/Status/20231220-SE-4B222C6D0D-33672399BA-04
{'exception': {'serviceCtx': 'default', 'serviceCode': '20231220-EX-E2B4F3A521-B99DF55DE6-FF', 'serviceName': 'online.invoice.invoice.status', 'timestamp': '2023-12-20T15:09:23.286Z', 'exceptionDetailList': [{'exceptionCode': 21149, 'exceptionDescription': 'Brak sesji.'}]}}

podaje ten sam token tu i tu

0

Odpowiedź z KSeF na zgłoszenia:

  1. Aktualnie przyjęty standard (4 cyfry) jest mało elastyczny i dość wąski (...) optymalnie, gdyby identyfikator składał się z 6 znaków alfanumerycznych - wówczas czytelne oznaczenia pozwalałyby na bardzo prostą weryfikację poprawności danych bezpośrednio w XML/wizualizacji faktury bez sięgania każdorazowo do słownika jednostek?
    Dziękujemy za uwagę dotyczącą identyfikatorów wewnętrznych. Jednocześnie wyjaśniamy, że są one 5 cyfrowe. W Aplikacji Podatnika użytkownik proszony jest o podanie 4 cyfr. Piąta cyfra jest generowana losowo.
    Nosz kurna chata, odpowiedzieć, żeby nic nie odpowiedzieć. Oni w ogóle potrafią czytać ze zrozumieniem?

  2. (...) generowania identyfikatorów płatności - czy ta funkcja powinna działać (...)?
    (...) pracujemy nad rozwiązaniem problemu. Postaramy się dokonać stosownych zmian oraz korekty dokumentacji technicznej w najbliższym możliwym terminie.
    Ale oni mają temp...

  3. (...) uprawnienia określane podczas generowania tokenów, gdyż API określa szereg uprawnień, natomiast w wersji webowej aplikacji jest ich mniej
    Kwestia uprawnień określanych podczas generowania tokenów została zgłoszona do weryfikacji.
    Sami nie wiedzą, jak to działa?


PS. Nawet na L-4 trzymam rękę na pulsie, bo jak stracę dwa tygodnie to boję się, że nie odnajdę się w tym wszystkim, co się dzieje ;)

0

Ktoś pobierał faktury zakupowe i sprawdzał status odpowiedzi których brakuje zarówno w PDF Interface_Specification_1_5.pdf oraz w swagger przykładach.

Zapytanie o fakturę zakupową przy wywołaniu

/online/Query/Invoice/Async/Status/{QueryElementReferenceNumber}

kończy sie statusem:

processingCode:325
processingDescription : Zakończenie etapu podziału na podzapytania oraz inicjalizacja podprocesów przygotowania części odpowiedzi

Nie wiadomo co oznacza ten status a w swagger dla tego wywołania nie ma odpowiedzi.
Widać że próbują wprowadzić customowe statusy ale powinni dać tabele wszystkich a w specyfikacji np dla tego GETa tego nie ma :(

Teraz nie wiem czy mam oczekiwać 200 czy to już jest finalny poprawny 325?

0

Pytanie teoretyczne do praktyków REST API i ogólnie komunikacji sieciowej.
Jaką praktyczną korzyść daje zastosowanie wyzwania autoryzacyjnego (authorisation challenge) nad zwykłym logowaniem z loginem i hasłem?

0

spotkal sie ktos z sytuacja, ze po otrzymaniu session tokena (Session/InitToken) trzeba 'sztucznie' odczekac aby byla mozliwosc jego uzycia w kolejnym wywolaniu?

Session/InitToken
wait 1sec // bez tego nie dziala
Query/Invoice/Sync

Srodowisko demo. Probowalem np. 500ms ale za malo. Bez sztucznego delaya dostaje, 400 - blad autoryzacji.
Zakladalbym, ze jak api zwraca sessiontoken to jest on gotowy do uzycia przez system

0

Zgodnie z opisem numeru KSEF pierwsze znaki to nr NIP sprzedawcy, ale na teście dla NIPu 1111111111 są faktury sprzedaży, które mają w nr KSEF NIP odbiorcy np. 8132709001-20231219-E2312469F471-97 a w xml-u jest odwrotnie Takich faktur jest więcej w dniach 19-21 grudnia. To jakiś błąd, czy ja o czymś nie wiem?
screenshot-20231222115301.png

2

Wesołych świąt i spokojnego odpoczynku od systemu KSeF.
Resetu głowy, szybkiego rozwiązywania zaistniałych problemów, łatwej dokumentacji,
niezbyt skomplikowanych lecz wymagających rozwoju osobistego - projektów - na nadchodzący nowy rok,
życzę wszystkim czytelnikom forum.
Pozdrawiam.

0
vladdyrykov napisał(a):

Witajcie.

Mam gorącą prośbę - czy ktoś może poratować aktualnym podpisanym plikiem xml dla InitSessionSigned, który na pewno przechodzi na ksef-test?

Walczę z tym od kilku dni, przerobiłem już chyba wszystkie przykłady na generowanie certyfikatu i porównania z plikami zamieszczanymi w tym wątku.
Podpis mam raczej prawidłowy, w każdym razie przechodzi walidację na weryfikacjapodpisu.pl
Co więcej, przechodzi autoryzacja na testowej aplikacji podatnika ("Podpisane żądanie autoryzacyjne/Dodaj plik") XD, ale w api już nie - dokument niezgody ze schemą (xsd).

Poratuje ktoś?

Na prośbę @RudyNysa1988 wrzucam wersję InitSessionSigned z sekcją encryption z podpisem Xades.
W czasie 19-12-2023 o 16:06 działało na 100% na ksef test.

Zmieniłem nip na 1111111111, usunąłem Challenge oraz base64 z certyfikatem. Sekcja encryption jest taka sama jak w InitToken.

<?xml version="1.0" encoding="utf-8"?>
<ns3:InitSessionSignedRequest
    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">challenge
        </Challenge>
        <Identifier xsi:type="ns2:SubjectIdentifierByCompanyType"
            xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">
            <ns2:Identifier>1111111111</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>
        <Encryption
            xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">
            <ns2:EncryptionKey>
                <ns2:Encoding>Base64</ns2:Encoding>
                <ns2:Algorithm>AES</ns2:Algorithm>
                <ns2:Size>256</ns2:Size>
                <ns2:Value>FRQqOguPRn6V1djhp4AG0/cigCLZPo01mDZ8K5InkUANdgNiiJhm9C5Pfiv4BvJQGjU6yB7bfj4XPdnLHe5ys6lhjHkhxShdRpg/Ov8Gmuej8T1N6A3vwA2RuGQ9HGmaNGfaDXEdBQlpWg59yeHc5N1ESMJvCEsT8u9KCeaoW717Y3vNbPLyT7I26I0Qf/wTXGDcBBdVj6sWjLnjO/9lzSfNVMyt/ApGxNdLapXTm2l1BChb3fisc7oPjfbDPi8Ot9bPJey932F3Tc9LK9GTiDMdBeifHXU5yJN6uAzyjDkUfAgjj6Ur86ex9ahZX/qt4DG3DkoUp2U91AfvmdWgIw==</ns2:Value>
            </ns2:EncryptionKey>
            <ns2:EncryptionInitializationVector>
                <ns2:Encoding>Base64</ns2:Encoding>
                <ns2:Bytes>16</ns2:Bytes>
                <ns2:Value>mpxhkTfeqOLXq8DnAj3HuA==</ns2:Value>
            </ns2:EncryptionInitializationVector>
            <ns2:EncryptionAlgorithmKey>
                <ns2:Algorithm>RSA</ns2:Algorithm>
                <ns2:Mode>ECB</ns2:Mode>
                <ns2:Padding>PKCS#1</ns2:Padding>
            </ns2:EncryptionAlgorithmKey>
            <ns2:EncryptionAlgorithmData>
                <ns2:Algorithm>AES</ns2:Algorithm>
                <ns2:Mode>CBC</ns2:Mode>
                <ns2:Padding>PKCS#7</ns2:Padding>
            </ns2:EncryptionAlgorithmData>
        </Encryption>
        <Type
            xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001">SerialNumber
        </Type>
    </ns3:Context>
    <ds:Signature
        xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
            <ds:Reference Id="Reference-77ecff5f-7cb8-485c-895c-76d14bcb25a0" URI="">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                <ds:DigestValue>q5E/kteVkglbKzOlYCm8r4PPaj52li8w/qZ5a3/Ae1M=</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties-Signature-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                <ds:DigestValue>21JijOw7aGOcMhlb6rBIjn/WCxIsafv8GETUPyZpBIo=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">JG9j4A34wORNJa7KP08VCRmWlIqOWTy6MQJb3BGUk/y9MR5p6rOAH/Xp295aVwWzVz6p37d4OgQVph5UIHsoT4FjjpfVImUp3vN4iPc7djSh88rld/LKw0QUPODmEzKeCUAlCKFyygBHmGIU3lVp3HKacLX8/ovg2AF3oimaaIfNPjMpF68rnw5RoSwq6TmBObGxMlqQ2GtJ3FcYhf+ksyXmtIpwm6NRKbTTKLNBVOVi2vYCOMe2kYGjj5R8O/QsQij3+gDLl7Ze2S+dJx3ccd0p0XZQQYLlbLeUB2dwGn2+qQ65YAF/VwdLZPJ7DwBkla3Fyl2vaIWtnZcs2vFsbQ==</ds:SignatureValue>
        <ds:KeyInfo Id="KeyInfoId-Signature-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">
            <ds:X509Data>
                <ds:X509Certificate>cert_base_64</ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
        <ds:Object Id="XadesObjectId-fba61464-4d50-4041-8a65-84c5ad0d6a52">
            <xades:QualifyingProperties
                xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="QualifyingProperties-88c53c24-a646-44ba-862f-f6a1f079d224" Target="#Signature-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">
                <xades:SignedProperties Id="SignedProperties-Signature-8c5f8cc3-c962-4b3d-9c02-dcd535b2aef5">
                    <xades:SignedSignatureProperties>
                        <xades:SigningTime>2023-12-19T16:06:22+01:00</xades:SigningTime>
                        <xades:SigningCertificate>
                            <xades:Cert>
                                <xades:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                                    <ds:DigestValue>mMEnA9rx3a7rwRh61X1BN+UIQSG7zW3o93g6nWiDs+E=</ds:DigestValue>
                                </xades:CertDigest>
                                <xades:IssuerSerial>
                                    <ds:X509IssuerName>OID.2.5.4.97=VATPL-1111111111, C=PL, O=KsefTestOrg, CN=KsefTest</ds:X509IssuerName>
                                    <ds:X509SerialNumber>542227035919671882070276817005275599762991821637</ds:X509SerialNumber>
                                </xades:IssuerSerial>
                            </xades:Cert>
                        </xades:SigningCertificate>
                    </xades:SignedSignatureProperties>
                </xades:SignedProperties>
            </xades:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</ns3:InitSessionSignedRequest>
0

Czy ktoś wie jak rozpoznać po pobraniu faktury z KSeF, że została ona wystawiona po usunięciu awarii i za datę otrzymania (wystawienia) faktury powinienem przyjąć datę z pola P_1 a nie datę nadania numeru Ksef.

0

próbuję wysłać fakture:

{
    "invoiceHash": {
        "hashSHA": {
            "algorithm": "SHA-256",
            "encoding": "Base64",
            "value": "NGQwNzZkNTZjNDVmNzYzNjVhMTFkMGY2ZTgyYTY1NmUxOGRkNWJhNGExYThkMWNkN2RiOTZjZTEzOWI3ZDBkNQ=="
        },
        "fileSize": 3944,
        "invoicePayload": {
            "type": "plain",
            "invoiceBody": "PD94bWwgdmVyc2lvbiA9ICIxLjAiIGVuY29kaW5nID0gInV0Zi04Ij8+CiAgICAgICAgPEZha3R1cmEgeG1sbnM6ZXRkPSJodHRwOi8vY3JkLmdvdi5wbC94bWwvc2NoZW1hdHkvZHppZWR6aW5vd2UvbWYvMjAyMS8wNi8wOS9lRC9EZWZpbmljamVUeXB5LyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgeG1sbnM9Imh0dHA6Ly9jcmQuZ292LnBsL3d6b3IvMjAyMS8xMS8yOS8xMTA4OS8iPgogICAgICAgICAgPE5hZ2xvd2VrPgogICAgICAgICAgICA8S29kRm9ybXVsYXJ6YSBrb2RTeXN0ZW1vd3k9IkZBICgxKSIgd2Vyc2phU2NoZW15PSIxLTBFIj5GQTwvS29kRm9ybXVsYXJ6YT4KICAgICAgICAgICAgPFdhcmlhbnRGb3JtdWxhcnphPjE8L1dhcmlhbnRGb3JtdWxhcnphPgogICAgICAgICAgICA8RGF0YVd5dHdvcnplbmlhRmE+MjAyMi0wNC0xOVQxMjo1NTo1NVo8L0RhdGFXeXR3b3J6ZW5pYUZhPgogICAgICAgICAgPC9OYWdsb3dlaz4KICAgICAgICAgIDxQb2RtaW90MT4KICAgICAgICAgICAgPERhbmVJZGVudHlmaWthY3lqbmU+CiAgICAgICAgICAgICAgPE5JUD4xMTExMTExMTExPC9OSVA+CiAgICAgICAgICAgICAgPFBlbG5hTmF6d2E+VXPFgnVnaSBoYW5kbG93ZTwvUGVsbmFOYXp3YT4KICAgICAgICAgICAgPC9EYW5lSWRlbnR5ZmlrYWN5am5lPgogICAgICAgICAgICA8QWRyZXM+CiAgICAgICAgICAgICAgPEFkcmVzUG9sPgogICAgICAgICAgICAgICAgPEtvZEtyYWp1PlBMPC9Lb2RLcmFqdT4KICAgICAgICAgICAgICAgIDxVbGljYT5OaXRjaGVnbzwvVWxpY2E+CiAgICAgICAgICAgICAgICA8TnJEb211PjEyMzwvTnJEb211PgogICAgICAgICAgICAgICAgPE1pZWpzY293b3NjPkthdG93aWNlPC9NaWVqc2Nvd29zYz4KICAgICAgICAgICAgICAgIDxLb2RQb2N6dG93eT4wMC00MTI8L0tvZFBvY3p0b3d5PgogICAgICAgICAgICAgIDwvQWRyZXNQb2w+CiAgICAgICAgICAgIDwvQWRyZXM+CiAgICAgICAgICA8L1BvZG1pb3QxPgogICAgICAgICAgPFBvZG1pb3QyPgogICAgICAgICAgICA8RGFuZUlkZW50eWZpa2FjeWpuZT4KICAgICAgICAgICAgICA8TklQPjIyMjIyMjIyMjI8L05JUD4KICAgICAgICAgICAgICA8UGVsbmFOYXp3YT5Ta2xlcCBhYWE8L1BlbG5hTmF6d2E+CiAgICAgICAgICAgIDwvRGFuZUlkZW50eWZpa2FjeWpuZT4KICAgICAgICAgICAgPEFkcmVzPgogICAgICAgICAgICAgIDxBZHJlc1BvbD4KICAgICAgICAgICAgICAgIDxLb2RLcmFqdT5QTDwvS29kS3JhanU+CiAgICAgICAgICAgICAgICA8VWxpY2E+QnVkb3dsYW5hPC9VbGljYT4KICAgICAgICAgICAgICAgIDxOckRvbXU+MTIzPC9OckRvbXU+CiAgICAgICAgICAgICAgICA8TWllanNjb3dvc2M+QnVkb3N6eWNlPC9NaWVqc2Nvd29zYz4KICAgICAgICAgICAgICAgIDxLb2RQb2N6dG93eT4xMi0zNDU8L0tvZFBvY3p0b3d5PgogICAgICAgICAgICAgIDwvQWRyZXNQb2w+CiAgICAgICAgICAgIDwvQWRyZXM+CiAgICAgICAgICA8L1BvZG1pb3QyPgogICAgICAgICAgPEZhPgogICAgICAgICAgICA8S29kV2FsdXR5PlBMTjwvS29kV2FsdXR5PgogICAgICAgICAgICA8UF8xPjIwMjItMDQtMTk8L1BfMT4KICAgICAgICAgICAgPFBfMj5GVjIwMjIvMDIvMTI3PC9QXzI+CiAgICAgICAgICAgIDxQXzEzXzE+MTwvUF8xM18xPgogICAgICAgICAgICA8UF8xNF8xPjAuMjM8L1BfMTRfMT4KICAgICAgICAgICAgPFBfMTNfMj4wPC9QXzEzXzI+CiAgICAgICAgICAgIDxQXzE0XzI+MDwvUF8xNF8yPgogICAgICAgICAgICA8UF8xM18zPjA8L1BfMTNfMz4KICAgICAgICAgICAgPFBfMTRfMz4wPC9QXzE0XzM+CiAgICAgICAgICAgIDxQXzEzXzQ+MDwvUF8xM180PgogICAgICAgICAgICA8UF8xNF80PjA8L1BfMTRfND4KICAgICAgICAgICAgPFBfMTNfNT4wPC9QXzEzXzU+CiAgICAgICAgICAgIDxQXzE1PjE8L1BfMTU+CiAgICAgICAgICAgIDxBZG5vdGFjamU+CiAgICAgICAgICAgICAgPFBfMTY+MjwvUF8xNj4KICAgICAgICAgICAgICA8UF8xNz4yPC9QXzE3PgogICAgICAgICAgICAgIDxQXzE4PjI8L1BfMTg+CiAgICAgICAgICAgICAgPFBfMThBPjI8L1BfMThBPgogICAgICAgICAgICAgIDxQXzE5PjI8L1BfMTk+CiAgICAgICAgICAgICAgPFBfMjI+MjwvUF8yMj4KICAgICAgICAgICAgICAgICAgICA8UF8yMz4yPC9QXzIzPgogICAgICAgICAgICAgIDxQX1BNYXJ6eT4yPC9QX1BNYXJ6eT4KICAgICAgICAgICAgICAgICAgPC9BZG5vdGFjamU+CiAgICAgICAgICAgIDxSb2R6YWpGYWt0dXJ5PlZBVDwvUm9kemFqRmFrdHVyeT4KICAgICAgICAgICAgPEZQPjE8L0ZQPgogICAgICAgICAgICA8RmFXaWVyc3plPgogICAgICAgICAgICAgIDxMaWN6YmFXaWVyc3p5RmFrdHVyeT4xPC9MaWN6YmFXaWVyc3p5RmFrdHVyeT4KICAgICAgICAgICAgICA8V2FydG9zY1dpZXJzenlGYWt0dXJ5MT4xPC9XYXJ0b3NjV2llcnN6eUZha3R1cnkxPgogICAgICAgICAgICAgIDxGYVdpZXJzej4KICAgICAgICAgICAgICAgIDxOcldpZXJzemFGYT4xPC9OcldpZXJzemFGYT4KICAgICAgICAgICAgICAgIDxVVV9JRD5hYWFhMTExMTMzMzM5OTkwPC9VVV9JRD4KICAgICAgICAgICAgICAgIDxQXzc+UHJvZHVrdDEyPC9QXzc+CiAgICAgICAgICAgICAgICA8UF84QT5zenQ8L1BfOEE+CiAgICAgICAgICAgICAgICA8UF84Qj4xPC9QXzhCPgogICAgICAgICAgICAgICAgPFBfOUE+MTwvUF85QT4KICAgICAgICAgICAgICAgIDxQXzExPjE8L1BfMTE+CiAgICAgICAgICAgICAgICA8UF8xMj4yMzwvUF8xMj4KICAgICAgICAgICAgICAgIDxQXzEyX1Byb2NlZHVyYT43PC9QXzEyX1Byb2NlZHVyYT4KICAgICAgICAgICAgICA8L0ZhV2llcnN6PgogICAgICAgICAgICA8L0ZhV2llcnN6ZT4KICAgICAgICAgIDwvRmE+CiAgICAgICAgPC9GYWt0dXJhPgogICAgICAgIA=="
        }
    }
}

dostaję taki błąd:

{
    "exception": {
        "serviceCtx": "default",
        "serviceCode": "20231225-EX-313CCCF08C-242F07D823-D1",
        "serviceName": "online.session.authorisation.challenge",
        "timestamp": "2023-12-25T22:02:31.416Z",
        "exceptionDetailList": [
            {
                "exceptionCode": 21001,
                "exceptionDescription": "Nieczytelna tre\u015b\u0107."
            }
        ]
    }
}

Wysyłam następującą fakturę:

        $invoiceBody = '<?xml version = "1.0" encoding = "utf-8"?>
        <Faktura xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2021/06/09/eD/DefinicjeTypy/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://crd.gov.pl/wzor/2021/11/29/11089/">
          <Naglowek>
            <KodFormularza kodSystemowy="FA (1)" wersjaSchemy="1-0E">FA</KodFormularza>
            <WariantFormularza>1</WariantFormularza>
            <DataWytworzeniaFa>2022-04-19T12:55:55Z</DataWytworzeniaFa>
          </Naglowek>
          <Podmiot1>
            <DaneIdentyfikacyjne>
              <NIP>1111111111</NIP>
              <PelnaNazwa>Usługi handlowe</PelnaNazwa>
            </DaneIdentyfikacyjne>
            <Adres>
              <AdresPol>
                <KodKraju>PL</KodKraju>
                <Ulica>Nitchego</Ulica>
                <NrDomu>123</NrDomu>
                <Miejscowosc>Katowice</Miejscowosc>
                <KodPocztowy>00-412</KodPocztowy>
              </AdresPol>
            </Adres>
          </Podmiot1>
          <Podmiot2>
            <DaneIdentyfikacyjne>
              <NIP>2222222222</NIP>
              <PelnaNazwa>Sklep aaa</PelnaNazwa>
            </DaneIdentyfikacyjne>
            <Adres>
              <AdresPol>
                <KodKraju>PL</KodKraju>
                <Ulica>Budowlana</Ulica>
                <NrDomu>123</NrDomu>
                <Miejscowosc>Budoszyce</Miejscowosc>
                <KodPocztowy>12-345</KodPocztowy>
              </AdresPol>
            </Adres>
          </Podmiot2>
          <Fa>
            <KodWaluty>PLN</KodWaluty>
            <P_1>2022-04-19</P_1>
            <P_2>FV2022/02/127</P_2>
            <P_13_1>1</P_13_1>
            <P_14_1>0.23</P_14_1>
            <P_13_2>0</P_13_2>
            <P_14_2>0</P_14_2>
            <P_13_3>0</P_13_3>
            <P_14_3>0</P_14_3>
            <P_13_4>0</P_13_4>
            <P_14_4>0</P_14_4>
            <P_13_5>0</P_13_5>
            <P_15>1</P_15>
            <Adnotacje>
              <P_16>2</P_16>
              <P_17>2</P_17>
              <P_18>2</P_18>
              <P_18A>2</P_18A>
              <P_19>2</P_19>
              <P_22>2</P_22>
                    <P_23>2</P_23>
              <P_PMarzy>2</P_PMarzy>
                  </Adnotacje>
            <RodzajFaktury>VAT</RodzajFaktury>
            <FP>1</FP>
            <FaWiersze>
              <LiczbaWierszyFaktury>1</LiczbaWierszyFaktury>
              <WartoscWierszyFaktury1>1</WartoscWierszyFaktury1>
              <FaWiersz>
                <NrWierszaFa>1</NrWierszaFa>
                <UU_ID>aaaa111133339990</UU_ID>
                <P_7>Produkt12</P_7>
                <P_8A>szt</P_8A>
                <P_8B>1</P_8B>
                <P_9A>1</P_9A>
                <P_11>1</P_11>
                <P_12>23</P_12>
                <P_12_Procedura>7</P_12_Procedura>
              </FaWiersz>
            </FaWiersze>
          </Fa>
        </Faktura>
        ';

Dzięki z góry za pomoc

PS.

hash wyliczam w następujący sposób
:

$hash = base64_encode(hash("sha256", $invoiceBody));

body:

$BytesInvoicesBody = unpack('C*', $invoiceBody);
$B64bodyBYTES =  base64_encode(implode(array_map("chr", $BytesInvoicesBody)));
0

Hej czy nie macie problemu z /online/Session/InitToken ??

Dostaje od wczoraj komunikat
HTTP method POST is not supported by this URL

To samo na produkcyjnym, demo i teście ?
Tu trzeba jakoś inaczej przesłać dane ?

0

Hej
prośba do PHP-owców

Co robię źle, że dostaje od KSeF-u odpowiedź: {"exceptionCode":21116,"exceptionDescription":"Nieprawidłowy token."}

Wysyłam na teście /api/online/Session/InitToken
Wysyłany XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<ns3:initsessiontokenrequest xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001" 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>20231227-CR-A88FB89301-FAB8D2F391-E8</challenge>
<identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
ns2:identifier9471837848</ns2:identifier>
</identifier>
<documenttype>
ns2:serviceKSeF</ns2:service>
ns2:formcode
ns2:systemcodeFA (1)</ns2:systemcode>
ns2:schemaversion1-0E</ns2:schemaversion>
ns2:targetnamespacehttp://crd.gov.pl/wzor/2021/11/29/11089/</ns2:targetnamespace>
ns2:valueFA</ns2:value>
</ns2:formcode>
</documenttype>
<token>OUma8ZMMVGei3fCWYVUf/nPVrXFY42A7DsXnx1W/ici8/lQxULSKnwYb8cZAtD30GwFXvpue4Aqmtcd7f8FPKu+8NpnynXHLZcbTZfmbH51TUALZ1DYKSiPzKTN6+sBjZZQWLcVU4m+nEmUkW4cscypWnrisuCh//U92NR9wJtGQ9TyTZUFlGQGiARjKAl3GxP2xO9ZXrmLWScio+RB4HqaMw07xlL/eghynXos8aSoj71MV0eMg+lsUb4xLRj35vwoGWATdEYwrYFbOQJRFmKaiOJHIJjbXLnPYKSIk4JUnuTOBa5PkRLySvo3veMmmGqxwyRRsWj+Dyhc7QwH5dw==</token>
</ns3:context>
</ns3:initsessiontokenrequest>

Token generuje:
openssl_public_encrypt($sUserToken.'|'.$timestamp, $encrypted, file_get_contents(path/to/publicKey.pem'));

$sUserToken - wygenerowany ze strony KSeF-u
$timestamp - pobrany z odpowiedzi z AuthorisationChallenge
publicKey.pem - pobrany ze strony https://ksef-test.mf.gov.pl/

0

Od 15 do 21 stycznia 2024 r. będą prowadzone prace konserwacyjne na środowisku testowym Krajowego Systemu e-Faktur.
W tym czasie mogą wystąpić chwilowe utrudnienia w dostępie do środowiska.

Znów na tydzień wyłączą... Eh...

I jeszcze ciekawostka: okres świąteczny był najdłuższym okresem od połowy września, w którym nie pojawił się żaden komunikat o awarii planowanej, awarii nieplanowanej lub aktualizacji :)

0

Taka ciekawostka.
Definiujac Korekte w poniższy sposob otrzymam blad walidacji ( The element 'DaneFaKorygowanej' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/' has invalid child element 'NrKSeFFaKorygowanej' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/'. List of possible elements expected: 'NrKSeF, NrKSeFN' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/'. ) :

dfk.ItemsElementName = new ItemsChoiceType6[] { ItemsChoiceType6.NrKSeFFaKorygowanej, ItemsChoiceType6.NrKSeF };
dfk.Items = new object[] { fvKor.KsefReferenceNumber, (sbyte)1 };

ale gdy zmienię kolejnosc (1) bedzie ok (przy walidacji XSD)

dfk.ItemsElementName = new ItemsChoiceType6[] { ItemsChoiceType6.NrKSeF, ItemsChoiceType6.NrKSeFFaKorygowanej };
dfk.Items = new object[] { (sbyte)1, fvKor.KsefReferenceNumber };

Idac dalej: wrzucajac przez API do KSeF fakture z poprawną kolejnością (1) otrzymam zwrotnie ponownie błąd:

The element 'DaneFaKorygowanej' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/' has invalid child element 'NrKSeFFaKorygowanej' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/'. List of possible elements expected: 'NrKSeF, NrKSeFN' in namespace 'http://crd.gov.pl/wzor/2023/06/29/12648/'. 

i bądź tu człowiek mądry :)

Dodam, że wgrywając fakturę bezpośrednio przez UI system zgłasza błąd ale jednocześnie pozwala zapisać i wszystko jest cacy. Rozkosznie :)

0

czy ktoś z was używa WinHttp do łączenia ze stroną KSeF w środowisku Windows 7
ja muszę używać WinHttp lub WinINet, a niektórzy klienci będą się łączyć z Windows 7 o ile nie z Windows Vista
ja nie mogę się połączyć z adresem https://ksef.mf.gov.pl chociaż oba wspomniane narzędzia obsługują TLS 1.2

0

Ludziska zgłupiałem ...

Mam w pełni działający skrypt w pythonie do uploadu FV do ksef-test. Podmieniłem tylko NIP (na właściwy), adres URL na KSEF zamiast KSEF-TEST, API_TOKEN oraz klucz PEM na produkcyjny i ten sam kod teraz zwraca mi:

Błąd: {'serviceCtx': 'srvPRMFB', 'serviceCode': '20240101-EX-EFF7A393CA-571300E835-CD', 'serviceName': 'online.session.session.token.init', 'timestamp': '2024-01-01T17:13:59.969Z', 'referenceNumber': '20240101-SE-E626E4C265-CA6180B53C-5E', 'exceptionDetailList': [{'exceptionCode': 21111, 'exceptionDescription': 'Nieprawidłowe wyzwanie autoryzacyjne.'}]}

ktoś ma pomysł dlaczego przy pobieraniu SessionToken dostaje takie coś? Jak wrócę do ustawień testowych to normalnie wszystko śmiga.

0

screenshot-20240101183918.png

czyli to jednak problem z ksef :P

0

Witam wszystkich walczących w Nowym Roku. Jako, że 'nareszcie' mam czas wrócić do mojego ulubionego KSeF-u mam pytanie o UPO.
Czy mają zamiar udostępnić jakąś metodę do pobierania UPO w PDF ? Jeżeli się nie mylę to czytałem kiedyś u nich, że będzie XSLT do przegenerowania do HTML, czy jest już może ( ale ręki nie dam sobie uciąć) .

0
Ricardo86 napisał(a):

Witam wszystkich walczących w Nowym Roku. Jako, że 'nareszcie' mam czas wrócić do mojego ulubionego KSeF-u mam pytanie o UPO.
Czy mają zamiar udostępnić jakąś metodę do pobierania UPO w PDF ? Jeżeli się nie mylę to czytałem kiedyś u nich, że będzie XSLT do przegenerowania do HTML, czy jest już może ( ale ręki nie dam sobie uciąć) .

@Dzyszla Dzięki za odzpowiedź. Czyli wychodzi, że jak swój wydruk faktury to i swój wydruk UPO. No nic , będzie trzeba zrobić

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.