Krajowy system e-Faktur

silverdr
  • Rejestracja: dni
  • Ostatnio: dni
0

Takie semi-retoryczne pytanie: czy ktoś zrobił już zasłużoną krzywdę temu co wymyślił że z bardzo ważnych powodów w QR kodach data musi być zapisana od d**y strony:

https://github.com/CIRFMF/ksef-docs/blob/51fb80813c4881088503ba272a7198907b080f34/kody-qr.md?plain=1#L39

czy to tylko mnie na coś takiego diabli biorą?

GM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
1

To jest piękne, jak się wczytać w treść tego komunikatu, to wszystko się w 100% zgadza.
screenshot-20260125202553.png

TD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Pracownik ma nadany dostęp przez właściciela w MCU do faktur.
Czy on może się zalaogować przez profil zaufany i utworzyć certyfikaty czy to będzie dostępne od lutego?

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

Jak interpretujecie taki teoretycznie możliwy moduł w schemacie FA (3): jest pozycja <StanPrzed>1</StanPrzed>, a nie ma drugiej bez tego znacznika.
Czy to oznacza, że po korekcie pozycja znika, czy pozostaje bez zmian?
</>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2026-01-25</P_1>
<P_2>FS/03/01/2026</P_2>
<P_6>2026-01-02</P_6>
<P_13_1>10</P_13_1>
<P_14_1>2.3</P_14_1>
<P_15>12.3</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>obniżka ceny o 200 zł z uwagi na uszkodzenia estetyczne</PrzyczynaKorekty>
<TypKorekty>3</TypKorekty>
<DaneFaKorygowanej>
<DataWystFaKorygowanej>2026-02-15</DataWystFaKorygowanej>
<NrFaKorygowanej>FS/02/01/2026</NrFaKorygowanej>
<NrKSeF>1</NrKSeF>
<NrKSeFFaKorygowanej>9999999999-20230908-8BEF280C8D35-4D</NrKSeFFaKorygowanej>
</DaneFaKorygowanej>
<DodatkowyOpis>
<Klucz>Opis</Klucz>
<Wartosc>brak</Wartosc>
</DodatkowyOpis>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<UU_ID>T02</UU_ID>
<P_7>towar</P_7>
<P_8A>jm</P_8A>
<P_8B>1</P_8B>
<P_9A>10</P_9A>
<P_11>10</P_11>
<P_12>23</P_12>
<StanPrzed>1</StanPrzed>
</FaWiersz>
</Fa>

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1867
0

w końcu zajrzałam do samej struktury tego czegoś i zastanawiam się co musi być wpisywane w polach, które są obowiązkowe?

P_7Z
Nazwa (rodzaj) towaru lub usługi
Podaje się nazwę (rodzaj) towaru lub usługi będących
przedmiotem zamówienia lub umowy.
Maksymalna ilość znaków: 512

czy ta nazwa ma być zrozumiała dla przeglądającego urzędasa? czy może być np postaci "element FDVS3#213"? I argumentacja że przecież każdy fachowiec wie co to za wihajster ma takie oznaczenie. Czy musi być w języku polskim? Tłumaczona przez tłumacza przysięgłego? 😉 no bo jeśli nie musi, i pole ma tylko 512 znaków to może hash nazwy wrzucić? 😉

elementy opcjonalne też są niezłe. Spotykacie się z praktyką że ktoś chce je wypełniać?

StopkaFaktury Pole zawierające pozostałe dane na fakturze [pole
fakultatywne]
W stopce faktury można zawrzeć np. podziękowanie za
zakup, zachętę do dalszej współpracy, kod rabatowy do
wykorzystania przy okazji kolejnych zakupów, godziny
otwarcia punktu sprzedaży, godziny pracy
infolinii/punktu obsługi klienta, link (wyłącznie w formie
tekstowej) do formularza zwrotu towaru, link (wyłącznie
w formie tekstowej) do formularza reklamacyjnego,
informacje marketingowe, klauzulę RODO, wartość
kapitału zakładowego itp.

L2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam,
Dziś usiadłem po raz pierwszy do KSEF 2.0 i udało mi się w języku PHP przejść dwa kroki:

  1. https://api-test.ksef.mf.gov.pl/v2/auth/challenge

  2. https://api-test.ksef.mf.gov.pl/v2/auth/xades-signature

    Certyfikat ECC wygenerowany na testowej aplikacji webowej KSEF 2.0.
    Otrzymuję tablice:

Kopiuj
Array
(
    [referenceNumber] => 20260125-AU-4DA8400000-B7CE22ED5B-B5
    [authenticationToken] => Array
        (
            [token] => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXAiOiJBdXRoZW50aWNhdGlvblRva2VuIiwiYXJuIjoiMjAyNjAxMjUtQVUtNERBODQwMDAwMC1CN0NFMjJFRDVCLUI1IiwiZXhwIjoxNzY5MzgzMzI5LCJpYXQiOjE3NjkzODA2MjksImlzcyI6ImtzZWYtYXBpLXRlIiwiYXVkIjoia3NlZi1hcGktdGUifQ.ndaarLgFK66NwkWhk6lRi_pa9TJaxtS_CfmiHsc0dLQ
            [validUntil] => 2026-01-25T23:22:09.5341373+00:00
        )

)

I teraz w kolejnym zapytaniu dodaje nagłówek:

Kopiuj
header('Authorization: Bearer eyJhbGciOiJIUzI....');

Bearer raczej zaakceptowany, ale z czego wynika poniższy błąd?

Kopiuj
Array
(
    [exception] => Array
        (
            [exceptionDetailList] => Array
                (
                    [0] => Array
                        (
                            [exceptionCode] => 21301
                            [exceptionDescription] => Brak autoryzacji.
                            [details] => Array
                                (
                                    [0] => Status uwierzytelniania (460) nie pozwala na pobranie tokenów.
                                )

                        )

                )

            [serviceCode] => 00-b2c800acea789294cbfe138c86ca3dde-819a95749e33afa6-00
            [timestamp] => 2026-01-25T23:58:07.1185957Z
        )

)

Zastanawiam się też, czy ide w dobrym kierunku, gdyż jak wiadomo tokeny mają być z końcem roku wycofane.

GM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
1

To jest dopiero coś, ilość nieprawdziwych informacji na temat gotowości systemu KSeF jest porażająca.

LI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

O, widzę, że poprawili stronę główną latarnika! Znaczy no - na tyle ile potrafili
screenshot-20260126092012.png
screenshot-20260126092038.png

Marcin Polkowski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Czy coś robię jeszcze źle?

  1. spółka składa ZAW-FA, wystawiając administratora
  2. administrator loguje się na Aplikację Podatnika DEMO, podpisem zaufanym
  3. generuje certyfikaty (uwierzytelnienie + offline)
  4. za pomocą tych certyfikatów logujemy się do KSeF, dostajemy autoryzację, inicjujemy sesję interaktywną i stop, 403, nie masz uprawnień.

Czy DEMO widzi ZAW-FA czy potrzeba jakiś dodatkowych uprawnień dla tych wygenerowanych certów?

MG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Wystawiłam na demo fakturę rozliczającą zaliczki, podałam nr zaliczki którą rozlicza ta faktura, na wizualizacji przez styl.xsl jest widoczny ten nr zaliczki, ale na wizualizacji pdf już nie. Podsumowania pozycji z FAwiersz nie ma ani na htmlu ani na pdf, więc nie wiadomo jaka w sumie była sprzedaż, a zaliczka jest częściowa. Czy ktoś już testował te faktury rozliczające zaliczke?

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

Cześć) Czy będą jaszcze tokeny do końca 2026 roku ?

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

Cześć
Który kod statusu mogę uznać za "faktura zaakceptowana, czekam na zapis i nadanie numeru KSEF?"
Wysyłam fakturę
/sessions/online/{referenceNumber}/invoices
I potem odpytuję cyklicznie o jej status:
/sessions/{referenceNumber}/invoices/{invoiceReferenceNumber}
W tej chwili fakturę uznaję za zapisaną w KSEF dopiero jak dostanie status 200. Ale czy któryś z wcześniejszych statusów ( np. 100, 150 ), pozwala mi już stwierdzić że faktura jest przyjęta, tylko czeka na zapisanie?
Był gdzieś z tydzień temu taki błąd że KSEF wisiał godzinami na statusie 150, w międzyczasie zrywało sesję, ale po ponownym połączeniu się z KSEF okazywało się, że faktura jest jednak zapisana...
Jeśli było gdzieś wcześniej to przepraszam

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Czy ktoś zna jakieś biblioteki dla .NET 4.8, które pozwalają podpisać dokument w formacie Xades? Próbuję to zrobić ręcznie ale wychodzi mi, że 4.8 ma jakieś ograniczenia w tym względzie. Biblioteka ta musi uwzględniać klucz prywatny w formacie EC.

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Rozkminiam właśnie te biblioteki udostępnione przez rząd i doszukałem się kawałka:
if (encryptionMethod == EncryptionMethodEnum.ECDsa)
{
throw new NotImplementedException("Brak obsługi ECDsa");
}
Czy to znaczy, że nawet te biblitoeki nie obsługuja kluczy w formacie EC, które generuje serwis KSeF'u?
O co to chodzi?

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Pomocy!
Przepisałem z biblioteki KSeF.Client klasę SignatureService pod .NET 4.8. Klucz prywatny z hasłem przekazuję jako parametr.
Wszystko idzie dobrze do momentu wywołania metody ComputeSignature() obiektu signedXml. W tym momencie dostaję błąd: "Wadliwy element Reference". Skoro biblioteka generuje prawidłowy podpis i zakładając że przepisałem ją slowo w słowo to co może być źle?
Doczytałem, że może brakować pola Id w głównej gałęzi AuthTokenRequest. Ale znowu gdzieś dostałem info że schema nie przyjmuje pola Id w tym miejscu. Plik xml do zakodowania mam w formacie zgodnym z dokumentacją:

Kopiuj
<?xml version="1.0" encoding="utf-8"?>
            <AuthTokenRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://ksef.mf.gov.pl/auth/token/2.0">
                <Challenge>20260126-CR-30CE768000-573721EB31-A6</Challenge>
                <ContextIdentifier><Nip>000000000</Nip></ContextIdentifier>
                <SubjectIdentifierType>certificateSubject</SubjectIdentifierType>
            </AuthTokenRequest>

Co może być nie tak w tym ... kodzie?

Wrzucam przepisany kod:

Kopiuj
      public static class XadesSigner
    {
        private const string EcdsaSha256AlgorithmUrl = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256";
        private const string XadesNsUrl = "http://uri.etsi.org/01903/v1.3.2#";
        private const string SignedPropertiesType = "http://uri.etsi.org/01903#SignedProperties";
        private static readonly TimeSpan CertificateTimeBuffer = TimeSpan.FromMinutes(-1);

        /// <summary>
        /// Podpisuje wskazany dokument XML w formacie XAdES, 
        /// używając dostarczonego certyfikatu z kluczem prywatnym.
        /// Metoda modyfikuje przekazany dokument w miejscu, dodając element podpisu.
        /// </summary>
        /// <param name="xmlDocument">
        /// Dokument XML do podpisania. Musi posiadać element główny.
        /// Zalecane jest ustawienie PreserveWhitespace = true.
        /// </param>
        /// <param name="certificate">
        /// Certyfikat X.509 zawierający klucz prywatny, 
        /// którym ma zostać złożony podpis.
        /// </param>
        /// <returns>
        /// Ten sam obiekt XmlDocument co przekazany w parametrze, 
        /// zmodyfikowany przez dodanie elementu podpisu XAdES.
        /// </returns>
        public static XmlDocument Sign(XmlDocument xmlDocument, X509Certificate2 certificate, byte[] privateKey, string privateKeyPassword)
        {
            //ArgumentNullException.ThrowIfNull(xmlDocument);
            //ArgumentNullException.ThrowIfNull(certificate);

            if (xmlDocument.DocumentElement == null)
            {
                throw new ArgumentException("Dokument XML nie ma elementu głównego", nameof(xmlDocument));
            }

            //if (!certificate.HasPrivateKey)
            //{
            //    throw new InvalidOperationException("Certyfikat nie zawiera klucza prywatnego");
            //}

            //RSA rsaKey = certificate.GetRSAPrivateKey();
            //ECDsa ecdsaKey = certificate.GetECDsaPrivateKey();
            ECDsa ecdsaKey =LoadEncryptedPkcs8EcdsaPrivateKey(privateKey, privateKeyPassword);

            if (/*rsaKey == null && */ecdsaKey == null)
            {
                throw new InvalidOperationException("Nie można wyodrębnić klucza prywatnego");
            }

            string signatureId = "Signature";
            string signedPropertiesId = "SignedProperties";

            SignedXmlFixed signedXml = new SignedXmlFixed(xmlDocument);

            //if (rsaKey != null)
            //{
            //    signedXml.SigningKey = rsaKey;
            //}
            //else if (ecdsaKey != null)
            {
                signedXml.SigningKey = ecdsaKey;
                signedXml.SignedInfo.SignatureMethod = EcdsaSha256AlgorithmUrl;
            }

            signedXml.Signature.Id = signatureId;

            AddKeyInfo(signedXml, certificate);
            AddRootReference(signedXml);
            AddSignedPropertiesReference(signedXml, signedPropertiesId);

            XmlNodeList qualifyingProperties = BuildQualifyingProperties(
                 signatureId, signedPropertiesId,
                 certificate, DateTimeOffset.UtcNow.Add(CertificateTimeBuffer));

            DataObject dataObject = new DataObject() { Data = qualifyingProperties };

            signedXml.AddDataObject(dataObject);
            signedXml.ComputeSignature();
            XmlElement xmlSignature = signedXml.GetXml();

            xmlDocument.DocumentElement.AppendChild(xmlDocument.ImportNode(xmlSignature, true));

            return xmlDocument;
        }
       

        private class SignedXmlFixed : SignedXml
        {
            private readonly List<DataObject> _dataObjects = new List<DataObject>();

            public SignedXmlFixed(XmlDocument document) : base(document)
            {
            }

            public override XmlElement GetIdElement(XmlDocument document, string idValue)
            {
                XmlElement elem = base.GetIdElement(document, idValue);
                if (elem != null)
                    return elem;

                // Sprawdzenie w atrybucie wsu:Id
                XmlNamespaceManager mgr = new XmlNamespaceManager(document.NameTable);
                mgr.AddNamespace("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
                var nodes = document.SelectNodes($"//*[@wsu:Id='{idValue}']", mgr);

                if (nodes != null && nodes.Count > 0)
                    return nodes[0] as XmlElement;


                //// Najpierw próbujemy znaleźć element standardowo
                //XmlElement element = base.GetIdElement(document, idValue);
                //if (element != null)
                //    return element;

                //// Jeśli nie znaleziono, przeszukujemy nasze DataObjects
                //foreach (var dataObject in _dataObjects)
                //{
                //    foreach (XmlNode node in dataObject.Data)
                //    {
                //        XmlElement found = node.SelectSingleNode($"//*[@Id='{idValue}']") as XmlElement;
                //        if (found != null)
                //            return found;
                //    }
                //}

                return null;
            }

            public void AddDataObject(DataObject dataObject)
            {
                if (dataObject == null)
                    throw new ArgumentNullException(nameof(dataObject));

                _dataObjects.Add(dataObject);
                AddObject(dataObject); // metoda klasy bazowej SignedXml
            }
        }

        private static void AddKeyInfo(SignedXml signedXml, X509Certificate2 certificate)
        {
            signedXml.KeyInfo = new KeyInfo();
            signedXml.KeyInfo.AddClause(new KeyInfoX509Data(certificate));
        }

        private static void AddRootReference(SignedXml signedXml)
        {
            Reference rootReference = new Reference(string.Empty);
            rootReference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            rootReference.AddTransform(new XmlDsigExcC14NTransform());
            signedXml.AddReference(rootReference);
        }

        private static void AddSignedPropertiesReference(SignedXml signedXml, string id)
        {
            Reference xadesReference = new Reference("#" + id)
            {
                Type = SignedPropertiesType
            };

            xadesReference.AddTransform(new XmlDsigExcC14NTransform());
            signedXml.AddReference(xadesReference);
        }

        private static XmlNodeList BuildQualifyingProperties(string signatureId, string signedPropertiesId,
            X509Certificate2 signingCertificate, DateTimeOffset signingTime)
        {
            string certificateDigest = Convert.ToBase64String(signingCertificate.GetCertHash(HashAlgorithmName.SHA256));
            string certificateIssuerName = signingCertificate.Issuer;
            string certificateSerialNumber = GetCertificateSerialNumber(signingCertificate);

            XmlDocument document = new XmlDocument();
            document.LoadXml(
    string.Format(
        "<xades:QualifyingProperties Target=\"#{0}\" xmlns:xades=\"{1}\" xmlns=\"{2}\">" +
        "<xades:SignedProperties Id=\"{3}\">" +
            "<xades:SignedSignatureProperties>" +
                "<xades:SigningTime>{4}</xades:SigningTime>" +
                "<xades:SigningCertificate>" +
                    "<xades:Cert>" +
                        "<xades:CertDigest>" +
                            "<DigestMethod Algorithm=\"{5}\" />" +
                            "<DigestValue>{6}</DigestValue>" +
                        "</xades:CertDigest>" +
                        "<xades:IssuerSerial>" +
                            "<X509IssuerName>{7}</X509IssuerName>" +
                            "<X509SerialNumber>{8}</X509SerialNumber>" +
                        "</xades:IssuerSerial>" +
                    "</xades:Cert>" +
                "</xades:SigningCertificate>" +
            "</xades:SignedSignatureProperties>" +
        "</xades:SignedProperties>" +
        "</xades:QualifyingProperties>",
        signatureId,
        XadesNsUrl,
        SignedXml.XmlDsigNamespaceUrl,
        signedPropertiesId,
        signingTime.ToString("o"), // ISO 8601
        SignedXml.XmlDsigSHA256Url,
        certificateDigest,
        certificateIssuerName,
        certificateSerialNumber
    )
);


            return document.ChildNodes;
        }

        public static string GetCertificateSerialNumber(X509Certificate2 certificate)
        {
            if (certificate == null)
                throw new ArgumentNullException(nameof(certificate));

            // GetSerialNumber() w .NET zwraca tablicę bajtów w kolejności little-endian
            byte[] serialBytes = certificate.GetSerialNumber();

            // Tworzymy BigInteger, interpretując tablicę jako little-endian
            BigInteger serialNumber = new BigInteger(serialBytes);

            // Zwracamy w formacie invariant culture
            return serialNumber.ToString(CultureInfo.InvariantCulture);
        }

        #region Decrypt private key

        private static ECDsa LoadEncryptedPkcs8EcdsaPrivateKey(byte[] pemBytes, string password)
        {
            string pemText = Encoding.UTF8.GetString(pemBytes);
            using (var reader = new StringReader(pemText))
            {
                var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(reader, new PasswordFinder(password));
                object keyObj = pemReader.ReadObject();

                if (keyObj is ECPrivateKeyParameters ecPrivate)
                    return CreateEcdsaFromBc(ecPrivate);

                throw new CryptographicException("Nie udało się odczytać EC Private Key.");
            }
        }

        private sealed class PasswordFinder : Org.BouncyCastle.OpenSsl.IPasswordFinder
        {
            private readonly string _password;
            public PasswordFinder(string password) { _password = password; }
            public char[] GetPassword() => _password.ToCharArray();
        }

        private static ECDsa CreateEcdsaFromBc(ECPrivateKeyParameters bcKey)
        {
            var q = bcKey.Parameters.G.Multiply(bcKey.D).Normalize();

            var ecParams = new ECParameters
            {
                Curve = GetNamedCurve(bcKey),
                D = bcKey.D.ToByteArrayUnsigned(),
                Q = new ECPoint
                {
                    X = q.AffineXCoord.GetEncoded(),
                    Y = q.AffineYCoord.GetEncoded()
                }
            };

            return ECDsa.Create(ecParams);
        }

        private static ECCurve GetNamedCurve(ECPrivateKeyParameters key)
        {
            string oid = key.PublicKeyParamSet?.Id;
            switch (oid)
            {
                case "1.2.840.10045.3.1.7": return ECCurve.NamedCurves.nistP256;
                case "1.3.132.0.34": return ECCurve.NamedCurves.nistP384;
                case "1.3.132.0.35": return ECCurve.NamedCurves.nistP521;
                default:
                    throw new CryptographicException($"Nieobsługiwana krzywa EC: {oid}");
            }
        }


        #endregion
    }
WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Czy ktoś podpowie jak przeprowadzić proces wysyłki faktury do KSeF używając biblioteki rządowej. Próbuję to odpalić testowo w prostej aplikacji konsolowej pod .NET 8 i metoda GetAuthChallengeAsync() kończy mi program.

H1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Kod działający wersja DEMO

        var crtPath = @"c:\KSeF_certyfikaty\KSEF_DEMO_nowe.crt";
        var keyPath = @"c:\KSeF_certyfikaty\KSEF_DEMO_nowe.key";     
        string keyPassword = @"****************";
        
        Acces_Token access_puste = new Acces_Token();
        string certPem = File.ReadAllText(crtPath, Encoding.UTF8);
        string keyPem = File.ReadAllText(keyPath, Encoding.UTF8);

        X509Certificate2 fullCert = X509Certificate2.CreateFromEncryptedPem(certPem, keyPem, keyPassword);
       
        AuthenticationOperationStatusResponse tokenResponse = null;
        try
        {
            AuthenticationChallengeResponse challengeResponse = await _client.GetAuthChallengeAsync();
            Access_token_class.Challengeresponse = challengeResponse;

            
            AuthenticationTokenRequest authTokenRequest = AuthTokenRequestBuilder
            .Create().WithChallenge(challengeResponse.Challenge).WithContext(AuthenticationTokenContextIdentifierType.Nip, nip)
            .WithIdentifierType(AuthenticationTokenSubjectIdentifierTypeEnum.CertificateSubject)
            .Build();

            Access_token_class.Authtokenrequest = authTokenRequest;

            string unsignedXml = AuthenticationTokenRequestSerializer.SerializeToXmlString(authTokenRequest);

            string signedXml = SignatureService.Sign(unsignedXml, fullCert);
            SignatureResponse submission = await _client.SubmitXadesAuthRequestAsync(signedXml, verifyCertificateChain: false);
            DateTime startTime = DateTime.UtcNow;
            TimeSpan timeout = TimeSpan.FromMinutes(2);
            AuthStatus status;
            do
            {
                status = await _client.GetAuthStatusAsync(submission.ReferenceNumber, submission.AuthenticationToken.Token);
                if (status.Status.Code != 200)
                {
                    await Task.Delay(TimeSpan.FromSeconds(1));
                }
            }
            while (status.Status.Code == 100 && (DateTime.UtcNow - startTime) < timeout);

            if (status.Status.Code != 200)
            {
                       XtraMessageBox.Show($"    Kod: {status.Status.Code} + Opis: {status.Status.Description}"+"  "+details, "Błąd autoryzacji",    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return Access_token_class;
            }
            Access_token_class.Status_operacji = status;

            
            tokenResponse = await _client.GetAccessTokenAsync(submission.AuthenticationToken.Token);
            Access_token_class.Authoperationstatusresponse = tokenResponse;
        }
        catch (Exception ex)
        {
            XtraMessageBox.Show("Błąd podczas autoryzacji " + ex.Message, "Błąd autoryzacji", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            Access_token_class.Czy_ok = false;
            return Access_token_class;

        }
    
        Access_token_class.Token = tokenResponse.AccessToken.Token;
        Access_token_class.Czy_ok = true;
        Access_token_class.Nip = nip;
        return Access_token_class;
PrzemekPB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Działają wam kody QR Certyfikatu dla faktury offline na środowisku demo? (przedprodukcyjnym)

L2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0
WojtexProgramista napisał(a):

Czy ktoś zna jakieś biblioteki dla .NET 4.8, które pozwalają podpisać dokument w formacie Xades? Próbuję to zrobić ręcznie ale wychodzi mi, że 4.8 ma jakieś ograniczenia w tym względzie. Biblioteka ta musi uwzględniać klucz prywatny w formacie EC.

Biblioteki XAdES nie potrzebujesz. To kawałek prostego XML'a (przewija się tu przez forum co chwilę). Od biedy złożysz go nawet na stringu (to nawet ułatwi Ci policzenie sum kontrolnych SHA256 z odpowiednich fragmentów). Pamiętaj tylko, że sumy kontrolne naliczasz z formy kanonicznej XMLa, więc nie "zawijaj" pustych elementów i układaj atrybuty alfabetycznie. Signature nalicz przy pomocy ECDsa.Create() (z tego co pamiętam, będziesz musiał przerobić klucz i cert na PFX, żeby go zaczytać) i po problemie. Ja wczoraj zrobiłem to w PHP (bez użycia żadnej biblioteki zewnętrznej tylu XAdES, CURL itd) i działa perfekcyjnie. 4kB kodu - używam tylko stringów, sha256 i openssl_sign i base64_encode ...i dostaje authenticationToken.

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1867
0

dzisiejszy Dziennik Gazeta Prawna - bełkot od MF mający nas przekonać o bezpieczeństwie KSeF

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Czy ktoś może używał biblioteki IM.Xades i wie jak jej używać?

FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Działa Wam w Aplikacji Podatnika pobieranie PDF-ów? Chciałam porównać, jak sobie radzą ze znakami nowej linii w tekście i nie mam jak.

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
1

Nie liczę godzin, ni dni
Gdy w KSeFie padnie, nie mi.
Bliżej KAS, bliżej dna,
Bankrut już w oczach mam,
Nie przetrwam!

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Mam ciągle problem z podpisem XAdES aplikacji C# .NET 4.8.
Doszedłem do miejsca, w którym okazuje się, że KSeF nie obsługuje ECDSA a takie klucze prywatne generuje. Potrzeba klucza RSA. Jak w KSeF wygenerować klucz prywatny RSA? Na stronie podczas generowania klucza nie miałem możliwości wyboru rodzaju klucza. Tam mogę wywołać tylko generowanie certyfikatu KSeF a klucz generuje mi się razem z certyfikatem.

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
1

Dostałem odpowiedź z KAS, co to jest "środowisko integracyjne"

środowisko integracyjne to środowisko testowe

Potrzeba na to było 18 dni i 22 godzin!

WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
1

Witam.
Szukam kogoś kto zintegrował się już z KSeF'em i chciałby pomóc osobiście lub zdalnie w integracji z KSeF komercyjnej aplikacji napisanej w C#.
Z racji zbliżającego się terminu uruchomienia KSeF wdzięczność zostanie odpowiednio okazana.

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

Cześć, czy działa Wam nadawanie uprawnień gdy subjectDetailType jest PersonByFingerprintWithoutIdentifier? Wysyłam coś takiego w body ale mam, zwrotkę "Nieczytelna treść", kod: 21001?

Kopiuj
    [subjectIdentifier] => Array
        (
            [type] => Fingerprint
            [value] => BD1255FC99F765FE0363031101C1D514E114F38D05BB6235B023895138CAD84C
        )

    [permissions] => Array
        (
            [0] => InvoiceWrite
            [1] => InvoiceRead
            [2] => CredentialsManage
            [3] => CredentialsRead
        )

    [description] => Maria Nowak fingerprint
    [subjectDetails] => Array
        (
            [subjectDetailsType] => PersonByFingerprintWithoutIdentifier
            [personById] => 
            [personByFpWithId] => 
            [personByFpNoId] => Array
                (
                    [firstName] => Maria
                    [lastName] => Nowak
                    [birthDate] => 2000-01-12T00:00:00.000Z
                    [idDocument] => Array
                        (
                            [type] => Dowód osobisty
                            [number] => CBD567896
                            [country] => PL
Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Witam, proszę o pomoc. Podczas testowania systemu wystąpił błąd i kilka zapytań (około 20) trafiło do środowiska produkcyjnego, które obecnie nie działa, po czym pojawił się błąd z informacją o zablokowaniu adresu IP. Proszę o wskazówki, jak go odblokować, aby 01.02 wszystko działało?
Mam statyczny adres IP, który się nie zmienia.

Kopiuj
{
    "type": "security_blocked",
    "message": {
        "title": "Request blocked",
        "status": 403,
        "detail": "This request was blocked by our security service",
        "security": {
            "incidentId": "68600052**********-*******6978064",
            "clientIp": "***********"
        }
    }
}```
WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 173
0

Prośba.
Może ktoś podpowiedzieć gdzie szukać informacji o danych, które trzeba zawrzeć w qr-kodzie drukowanym na fakturze?
Chodzi mi zarówno o qr offline jak i certyfikat.

PX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

cały czas zmieniają api 2.0.1-tr-20260126.2+aeeccd53192bbe477dbcb343cdb - oby to były nieistotne poprawki i literówki - bo na githubie ostatnie aktualizacje z 16.01

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.