Krajowy system e-Faktur

0

Witam,

czy ktoś z Was próbuje się integrować w KSeF w delphi ? Jeśli tak to podpisywaliście już coś XADeS ?
Generalnie mi się udaje nawiązać sesję, wysłać fakturę itd..ale do tej pory podpisywalem Xmla w InitSigned za pomocą zewnętrznej apki z jakiejś tam europejskiej stronki ale teraz mam problem jak próbuje to robić za pomocą TMS w Delphi i tam są problemy.

Druga sprawa to wyglada, że kazda próba nawiazania komunikacji to albo trzeba InitSigned albo InitToken.. jaka jest zaleta tego tokenu ?

0

O jakie szyfrowanie chodzi jak generujemy Token gdy chceby się zalogować przy pomocy InitToken ? To jest szyfrowanie RSA ?

0

/api/online/Invoice/Status/20220129-EE-75C21C5957-E15B581775-F2
zwraca mi niezmiennie

{"exception":{"serviceCtx":"srvTEMFA","serviceCode":"20220129-EX-E97C78896E-B1CFDB967F-FA","serviceName":"online.invoice.invoice.status","timestamp":"2022-01-29T10:16:16.045Z","referenceNumber":"20220129-SE-7F579324E8-5C28104C9A-58","exceptionDetailList":[{"exceptionCode":30002,"exceptionDescription":"Błąd wewnętrzny (A)."}]}}

Ktoś to przewalczył o co chodzi?
A co podajecie w zapytaniu o faktury
{
"queryCriteria": {
"subjectType": "subject1",
"type": "incremental"
}
}
Nie działa?

0

dostęp do KSeF z Node.js - ktoś próbował?
widziałem, że @alapierre pisze w java ; @Stl86 przygotowuje kod w Delphi, @michaó próbuje zdobyć kod w C# - ale javascript? Ktoś próbował?

0

Odebrał ktoś UPO.? Jeśli tak poproszę o przykład wywołania.

0

@snikers95: Pytałem się czego (Fragment KSEF), ponieważ Ja piszę w C# więc mogę pomóc.

0

@karol75: oj, tutaj samo C# nie wystarczy :/ - musisz być biegły jeszcze w podpisywaniu XML za pomocą XAdES oraz w wirtuozerii X.509 najlepiej z znajomością PKCS#11 i .... a może bardziej lub PKCS#12 plus mieć sprawność harcerską (wybacz mój język, ale taki już jestem, to nie sarkazm lub złośliwość, to po prostu zabawa) w poprawnym formatowaniu XML. Masz takie zdolności manualne? @alapiere widzę, że siedzi w temacie od wieeeelu lat ;) niestety w Java ... buuu ... ale jest usprawiedliwiony - znakomicie korzysta z bibliotek od Jej Jaśnie Panującej europa.eu - więc ok, wybaczone - ja bym chciał napisać coś podobnego w Node.js, niestety Jaśnie Panująca europa.eu ma tylko kod w Java - no cóż, muszę się przeprosić z Mavenem i jedziemy z koksem :)

0

Czy ktoś może próbował pobrać dokument przy pomocy Interface wspólnego /common/Invoice/KSeF ?
Wysyłając zapytanie o faktury za pomocą online/Query/Invoice/Sync zwraca mi response:

{"timestamp":"2022-02-07T12:12:10.278Z","referenceNumber":"20220207-SE-DD498710FC-B78BAD4A3C-B6","numberOfElements":1,"pageSize":100,"pageOffset":0,"invoiceHeaderList":[{"invoiceReferenceNumber":"FV721332/2/2022","ksefReferenceNumber":"1947222332-20220207-77571D-FD8114-BA","invoicingDate":"2022-02-07","acquisitionTimestamp":"2022-02-07T12:11:48.599Z","subjectBy":{"issuedByIdentifier":{"type":"onip","identifier":"1947222332"},"issuedByName":{"type":"fn","tradeName":null,"fullName":"Firma KOPEĆ EMIL"}},"subjectByK":null,"subjectTo":{"issuedToIdentifier":{"type":"onip","identifier":"4476017159"},"issuedToName":null},"subjectToKList":[],"subjectsOtherList":[],"subjectsAuthorizedList":[],"net":"0","vat":"0","gross":"82.05"}]}

Teraz na podstawie otrzymanych informacji chciałbym skorzystać z Interface /common/Invoice/KSeF
Bazując na przykładzie json tworzę następujące body:

{
"ksefReferenceNumber": "1947222332-20220207-77571D-FD8114-BA",
"invoiceDetails": {
"subjectTo": {
"issuedToIdentifier": {
"type":"onip",
"identifier":"4476017159"
},
"issuedToName": null
},
"invoiceOryginalNumber": "FV721332/2/2022",
"dueValue": "82.05"
}
}

Pole "issuedToName" pozostawiam null, ponieważ taki otrzymałem poprzednio response w zapytaniu o fakturę.

Wysyłając takiego POST’a dostaję response z informacją o błędzie: TypeError: NetworkError when attempting to fetch resource. Kod błędu: 31000 Nieprawidłowe wywołanie.

Jak zatem powinno być w takim przypadku prawidłowo skonstruowane body?

PS. Wiem, że mogę pobrać dokumenty przy pomocy ​/online​/Invoice​/Get​/{KSeFReferenceNumber} oraz ​/online​/Query​/Invoice​/Async​/Fetch​/{QueryElementReferenceNumber}​/{PartElementReferenceNumber} ale chciałbym móc je pobrać nie autoryzując się do sesji a Interface /common/Invoice/KSeF na to pozwala 😉

I jeszcze jedno pytanie o płatności. Nie widzę za dużo informacji na ten temat, jak używać Interface interaktywnego - wygenerowanie identyfikatora płatności.
Wg schemy aby wygenerować identyfikator płatności (/online/Payment/Identifier/Request) należy wysłać macierz z numerami referencyjnymi KSeF, ale wysyłając np. takie body:

{"ksefReferenceNumberList":["4476017159-20220206-5B0B64-67B194-E7","4476017159-20220206-E712BF-DE3751-19","4476017159-20220206-D44B93-9D0B5A-B1"]}

W odpowiedzi otrzymuję :

{"exception":{"serviceCtx":"srvTEMFA","serviceCode":"20220207-EX-06792DDB68-BAFF460212-59","serviceName":"online.payment.payment.identifier.request","timestamp":"2022-02-07T13:07:51.224Z","referenceNumber":"20220207-SE-DD498710FC-B78BAD4A3C-B6","exceptionDetailList":[{"exceptionCode":-1000,"exceptionDescription":"Błąd wewnętrzny (C)."}]}}

0

Cześć wszystkim! Z powodu braku dokumentacji mam pewne wątpliwości co do systemu rządowego... Czy ktoś może pomóc?

Czy ktoś wie jak zobaczyć fakturę po wysłaniu faktury korygującej? Próbuję przeczytać moją fakturę po wysłaniu korekty zmiany adresu kupującego na przykład i jeśli próbuję sprawdzić w KSeF, nadal otrzymuję starą fakturę.

0

Cześć,
czy ktoś z Was pobierał faktury zbiorczo? Wywołuję /Async/Init, później /Async/Status no i na końcu pobieram paczkę faktur przez /Async/Fetch. Nie mogę znaleźć w dokumentacji czym jest ta paczka, a dokładnie jak się dobrać do faktur w niej. Są to jakieś dane binarne.

0

Ja mam problem z tym XADeSem. Biblioteka w Delphi (TMS) i JAVIE (xades4j) niby podpisuja mi ale weryfiakcji w innych systemach nie przechodzi np (https://weryfikacjapodpisu.pl/) . Wygląda jakby modyfikowaly tego xmla za bardzo albo cos. Proste XMLe bez namespaców są OK ale ten od InitSigned niestety :/ Działa mi tylko jak podpisze go tą aplikacją (https://ec.europa.eu/cefdigital/DSS/webapp-demo/signature-standalone)

0

Koledzy, powiedzcie mi, czy wy te XMLe generujecie po protu tekstem, czy przez Delphiowy XML Data Binding? Bo z tymi namespacami to jest jakaś porażka.

A druga rzecz - ten ich klucz PEM... SecureBlackbox w ogóle tego formatu nie odczytuje (nie czyta tych z nagłówkiem ------BEGIN PUBLIC KEY-----). O dziwo, przy eDeklaracjach jest format umożliwiający przeprowadzenie szyfrowania (-----BEGIN CERTIFICATE-----)

1

@Stl86: Ja sobie chwalę pakiet z ElDos - cieżko się obyć bez niego przy tych rządowych systemach. Podpisywanie wygląda tak:

function SignXML(const aXMLStream: TStringStream): Boolean;
var
	Signer: TElXMLSigner;
	ElXMLDoc: TElXMLDOMDocument;
	Refs: TElXMLReferenceList;
	Ref: TElXMLReference;
	X509KeyData: TElXMLKeyInfoX509Data;
	//XMLObject: TElXMLObject;
	XAdESSigner: TElXAdESSigner;
	CertStorage: TElMemoryCertStorage;
	SigNode: TElXMLDOMNode;
begin
	Result := False;

	Signer := TElXMLSigner.Create(nil);
	ElXMLDoc := TElXMLDOMDocument.Create;
	Refs := TElXMLReferenceList.Create;
	Ref := TElXMLReference.Create;
	X509KeyData := TElXMLKeyInfoX509Data.Create(False);
	//XMLObject := TElXMLObject.Create;
	XAdESSigner := TElXAdESSigner.Create(nil);
	CertStorage := TElMemoryCertStorage.Create(nil);

	try
		aXMLStream.Seek(0, soFromBeginning);
		ElXMLDoc.LoadFromStream(aXMLStream);

		Ref.URINode := ElXMLDoc.DocumentElement;
		Ref.URI := ''{Ref.URINode.LocalName};
		Ref.DigestMethod := xdmSHA256;//xdmSHA1;
		Ref.TransformChain.Add(TElXMLEnvelopedSignatureTransform.Create);
		Refs.Add(Ref);

		CertStorage.Add(fCert, False);

		X509KeyData.Certificate := fCert;
		X509KeyData.IncludeKeyValue := False;

		XAdESSigner.XAdESVersion := XAdES_v1_3_2;
		XAdESSigner.SigningCertificates := CertStorage;


		Signer.SignatureType := xstEnveloped;
		Signer.SignatureMethodType := xmtSig;
		Signer.SignatureCompliance := xscDSIG;

		Signer.CanonicalizationMethod := xcmCanon;
		Signer.SignatureMethod  := xsmRSA_SHA256;
		//Signer.MACMethod := xmmHMAC_SHA1;

		Signer.KeyName    :='';
		Signer.IncludeKey := True;
		//Signer.OnFormatElement := Self.XMLSignerFormatElement;
		Signer.KeyData := X509KeyData;
		Signer.XAdESProcessor := XAdESSigner;
		Signer.References := Refs;

		try
			XAdESSigner.Generate;
			XAdESSigner.QualifyingProperties.SignedProperties.SignedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyImplied := False;

			XAdESSigner.QualifyingProperties.XAdESPrefix := 'xades';
			XAdESSigner.QualifyingProperties.Target := '#Signature-0';

			Signer.UpdateReferencesDigest;

			Signer.GenerateSignature;

			SigNode := ElXMLDoc.DocumentElement;
			Signer.Save(SigNode);

			aXMLStream.Clear;
			ElXMLDoc.SaveToStream(aXMLStream);

			Result := True;
		except
			raise;
		end;
	finally
		Signer.Free;
		ElXMLDoc.Free;
		Refs.Free;
		X509KeyData.Free;
		XAdESSigner.Free;
		CertStorage.Free;
	end;
end;

PS. fCert: TElX509Certificate pobierany np. z TElWinCertStorage

0

Cześć
Ostanio, przy wyzwaniu autoryzacyjny zaczął mi wyskakiwać błąd:

{
   "exception":{
      "serviceCtx":"srvTEMFC",
      "serviceCode":"20220209-EX-8E3C88B256-59E29BCCA2-33",
      "serviceName":"online.session.authorisation.challenge",
      "timestamp":"2022-02-09T21:42:07.252Z",
      "referenceNumber":null,
      "exceptionDetailList":[
         {
            "exceptionCode":21003,
            "exceptionDescription":"Limit żądań osiągnięty."
         }
      ]
   }
}

Spotkaliście się z tym? Wprowadzili limit sesji na NIP? Jak zwykle w dokumentacji nic nie widzę na ten temat. Na produkcji też będzie jakiś limit? W sumie pewnie powinien być tylko jaki ustalili? Czy to jest jedna czy dziesięć czy sto niezamkniętych sesji..

0

Od 2 dni mam [{"exceptionCode":21233,"exceptionDescription":"Faktura o podanym identyfikatorze nie istnieje."} po wysłaniu faktury i odebraniu elementReferenceNumber.
Wywołanie
.../api/online/Invoice/Status/20220209-EE-8F249D917C-451FE557A1-48
O co chodzi?

0

Hej,
Jak rozumiecie ten zapis:
Zamówienie w fakturach korygujących faktury zaliczkowe prezentowane są w sposób uniwersalny poprzez stornowanie wierszy i podawanie poprawnej wartości pozycji w kolejnym wierszu. Dopuszczalny jest także alternatywny sposób korekty poprzez prezentacje jednym zapisem przez różnicę.
Macie jakiś przykład XML-a dla alternatywnego sposobu?

0

Co jeszcze nie tak jest? Robię Challenga, dostaję czas i kod. Wpisuje do InitSigned, podpisuję, dostaję token. Wpisuję do InitToken wraz z Challangem i identyfikatorem i... sekcją Encryption? Bo w przykładach jest, na Webdinarze nie ma, dokumentacja nic nie mówi... Niemniej, jakbym nie zrobił, to dostaję "Nieprawidłowe wyzwanie autoryzacyjne". Oczywiście Token to zaszyfrowana wartość z token|czas_challanga_w_ms.
Coś z tym szyfrowanym tokenem nie tak? O co może chodzić?
(W załączniku pełne żądania od początku)
KSeF.zip
A swoją drogą to grubo pojechali z tymi limitami na testach... Ile to w ciągu godziny wychodzi? 10 sesji? Jak tu cokolwiek pisać i testować?!

0

Dzień dobry, być może będzie to trywialne pytanie, ale w jaki sposób należy przetworzyć fakturę, żeby można było ją wysłać? Z pliku .xsd mam klasy dotyczące faktury - super, taką fakturę mogę zserializować i chciałbym ją wysłać do api, ale nie wiem jak ją umieścić. Do api posiadam klasy wygenerowane swaggerem, ale w klasie SendInvoiceRequest nie znajduję miejsca na dodanie Faktury, są jedynie parametry typu InvoicePayloadType, HashSHAType, fileSize itd.
W jaki sposób mogę przejść z obiektu typu Faktura na gotowy obiekt do wysłania do api? Wprawdzie piszę w C#, ale jeśli by ktoś przedstawił koncept w dowolnym innym języku to powinno być to wystarczająco pomocne

0

Utworzyłem token z przyznanymi rolami: (Token bez ról faktur (odczyt/zapis) nie może zainicjować sesji?)

{
	"generateToken": {
		"description": "token_to_grant_acess",
		"credentialsRoleList": [{
				"roleType": "credentials_read",
				"roleDescription": "read others credentials"
			},
			{
				"roleType": "credentials_manage",
				"roleDescription": "read others credentials"
			},
			{
				"roleType": "invoice_write",
				"roleDescription": "write invoices"
			}
		]
	}
}

Na podstawie dokumentacji z tymi rolami poświadczeń będę mógł przyznać dostęp do numeru NIP, a z wystawcą faktury mogę przyznać rolę samofakturowania. Ale kiedy próbuję przyznać dostęp przy otwartej sesji tokena, otrzymuję:

{
  "exception": {
    "serviceCtx": "srvTEMFB",
    "serviceCode": "20220211-EX-D8FBCB8C33-08E3BE30FE-6A",
    "serviceName": "online.credentials.credentials.grant",
    "timestamp": "2022-02-11T15:58:16.392Z",
    "referenceNumber": null,
    "exceptionDetailList": [
      {
        "exceptionCode": 21101,
        "exceptionDescription": "Brak autoryzacji."
      }
    ]
  }
}

Gdy próbuję przyznać dostęp właścicielowi tokena, nie ma problemu z autoryzacją. Którego kroku mi brakuje? Token nie może przyznać dostępu do numeru NIP w celu samodzielnego rozliczania? Tylko właściciel tokena może przyznać ten dostęp?

0

Jak rozwiązaliście problem uniknięcia wysyłki duplikatów? Tzn taki scenariusz:

  • wysyłka faktury
  • połączenie zerwane - nie dostajecie odpowiedzi - czyli nie wiadomo czy faktura została wrzucona czy nie, nie mamy numeru ksef

Olewacie temat i wrzucacie ponownie, czy sprawdzacie statusem sesji czy poszła?
Jak to w ogóle wygląda od strony prawnej? KSEF wyłapuje duplikaty? Czy każda taka faktura nabiera mocy prawnej i jeśli wrzucimy ponownie trzeba wysyłać korektę?

0

Przy wysyłaniu faktury niezaszyfrowanej dostaję błąd o kodzie: 21209, "Sprzeczny typ żądania wysyłki faktury.", spotkał się ktoś z czymś takim?
Body które wysyłam:

{
    "invoiceHash": {
        "fileSize": 1946,
        "hashSHA": {
            "algorithm": "SHA-256",
            "encoding": "Base64",
            "value": "u5KvSwv6bwGrZ4KihQ7507Z3Yp786pR1ESdBkGdEDlE="
        }
    },
    "invoicePayload": {
        "invoiceBody": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxGYWt0dXJhIHhtbG5zOmV0ZD0iaHR0cDovL2NyZC5nb3YucGwveG1sL3NjaGVtYXR5L2R6aWVkemlub3dlL21mLzIwMjEvMDYvMDkvZUQvRGVmaW5pY2plVHlweS8iIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vY3JkLmdvdi5wbC93em9yLzIwMjEvMTEvMjkvMTEwODkvIj4NCgk8TmFnbG93ZWs+DQoJCTxLb2RGb3JtdWxhcnphIGtvZFN5c3RlbW93eT0iRkEgKDEpIiB3ZXJzamFTY2hlbXk9IjEtMEUiPkZBPC9Lb2RGb3JtdWxhcnphPg0KCQk8V2FyaWFudEZvcm11bGFyemE+MTwvV2FyaWFudEZvcm11bGFyemE+DQoJCTxEYXRhV3l0d29yemVuaWFGYT4yMDIyLTAyLTE0VDExOjAzOjE4LjY0MjYwNDBaPC9EYXRhV3l0d29yemVuaWFGYT4NCgkJPFN5c3RlbUluZm8+U2FtcGxvZmFrdHVyPC9TeXN0ZW1JbmZvPg0KCTwvTmFnbG93ZWs+DQoJPFBvZG1pb3QxPg0KCQk8RGFuZUlkZW50eWZpa2FjeWpuZT4NCgkJCTxOSVA+NTc3MTY4OTA2MDwvTklQPg0KCQkJPFBlbG5hTmF6d2E+QUJDIEFHRCBzcC4geiBvLiBvLjwvUGVsbmFOYXp3YT4NCgkJPC9EYW5lSWRlbnR5ZmlrYWN5am5lPg0KCQk8QWRyZXM+DQoJCSAgIAk8QWRyZXNQb2w+DQoJCQkJPEtvZEtyYWp1PlBMPC9Lb2RLcmFqdT4NCgkJCQk8VWxpY2E+S3dpYXRvd2E8L1VsaWNhPg0KCQkJCTxOckRvbXU+MTwvTnJEb211Pg0KCQkJCTxOckxva2FsdT4yPC9Ockxva2FsdT4NCgkJCQk8TWllanNjb3dvc2M+V2Fyc3phd2E8L01pZWpzY293b3NjPg0KCQkJCTxLb2RQb2N6dG93eT4wMC0wMDE8L0tvZFBvY3p0b3d5Pg0KCQkJPC9BZHJlc1BvbD4NCgkJPC9BZHJlcz4NCgkJPEVtYWlsPmFiY0BhYmMucGw8L0VtYWlsPg0KCQk8VGVsZWZvbj42Njc0NDQ1NTU8L1RlbGVmb24+CQkNCgk8L1BvZG1pb3QxPg0KCTxQb2RtaW90Mj4NCgkJPERhbmVJZGVudHlmaWthY3lqbmU+DQoJCQk8TklQPjQ0NDk5NTU4ODg8L05JUD4NCgkJPC9EYW5lSWRlbnR5ZmlrYWN5am5lPg0KCTwvUG9kbWlvdDI+DQoJPEZhPg0KCQk8S29kV2FsdXR5PlBMTjwvS29kV2FsdXR5Pg0KCQk8UF8xPjIwMjItMDItMTU8L1BfMT4NCgkJPFBfMj5GVjIwMjIvMDIvMTUwPC9QXzI+DQoJCTxQXzY+MjAyMi0wMS0wMzwvUF82Pg0KCQk8UF8xNT40NTA8L1BfMTU+DQoJCTxBZG5vdGFjamU+DQoJCQk8UF8xNj4yPC9QXzE2Pg0KCQkJPFBfMTc+MjwvUF8xNz4NCgkJCTxQXzE4PjI8L1BfMTg+DQoJCQk8UF8xOEE+MjwvUF8xOEE+DQoJCQk8UF8xOT4yPC9QXzE5Pg0KCQkJPFBfMjI+MjwvUF8yMj4NCgkJCTxQXzIzPjI8L1BfMjM+DQoJCQk8UF9QTWFyenk+MjwvUF9QTWFyenk+DQoJCTwvQWRub3RhY2plPg0KCQk8Um9kemFqRmFrdHVyeT5VUFI8L1JvZHphakZha3R1cnk+DQoJCTxGYVdpZXJzemU+DQoJCQk8TGljemJhV2llcnN6eUZha3R1cnk+MTwvTGljemJhV2llcnN6eUZha3R1cnk+DQoJCQk8V2FydG9zY1dpZXJzenlGYWt0dXJ5MT4wPC9XYXJ0b3NjV2llcnN6eUZha3R1cnkxPg0KCQkJPEZhV2llcnN6Pg0KCQkJCTxOcldpZXJzemFGYT4xPC9OcldpZXJzemFGYT4NCgkJCQk8UF83PndpZXJ0YXJrYSBXaWVydGV4IG1rNTwvUF83Pg0KCQkJCTxQXzEyPjIzPC9QXzEyPg0KCQkJPC9GYVdpZXJzej4NCgkJPC9GYVdpZXJzemU+DQoJPC9GYT4NCgk8U3RvcGthPg0KCQk8SW5mb3JtYWNqZT4NCgkJCTxTdG9wa2FGYWt0dXJ5PkthcGlhxYIgemFrxYJhZG93eSA1IDAwMCAwMDA8L1N0b3BrYUZha3R1cnk+DQoJCTwvSW5mb3JtYWNqZT4NCgkJPFJlamVzdHJ5Pg0KCQkJPEtSUz4wMDAwMDk5OTk5PC9LUlM+DQoJCQk8UkVHT04+OTk5OTk5OTk5PC9SRUdPTj4NCgkJCTxCRE8+MDAwMDk5OTk5PC9CRE8+DQoJCTwvUmVqZXN0cnk+DQoJPC9TdG9wa2E+DQo8L0Zha3R1cmE+DQo=",
        "type": "plain"
    }
}
0

Dzień dobry, przy wysyłaniu InitToken dostaję taki oto błąd:

{
  "exception": {
    "serviceCtx": "srvTEMFB",
    "serviceCode": "20220214-EX-E1EBF89E2B-B8AA76CB15-4E",
    "serviceName": "online.session.session.token.init",
    "timestamp": "2022-02-14T11:05:46.972Z",
    "referenceNumber": "20220214-SE-EF70E445C9-189D67ECC0-C1",
    "exceptionDetailList": [
      {
        "exceptionCode": 21201,
        "exceptionDescription": "Dokument nie jest zgodny ze schemą (xsd)."
      }
    ]
  }
}

czy coś jest nie tak ze strukturą xml którego wysyłam?

<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>20220214-CR-468CFEB1F5-870633D91F-59</Challenge>
    <Identifier xsi:type="ns2:SubjectIdentifierByCompanyType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ns2:Identifier>1111111111</ns2:Identifier>
    </Identifier>
    <DocumentType>
      <ns2:Service>KSeF</ns2:Service>
      <ns2:FormCode>
        <ns2:SystemCode>FA (1)</ns2:SystemCode>
        <ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
        <ns2:TargetNamespace>http://crd.gov.pl/wzor/2021/11/29/11089/</ns2:TargetNamespace>
        <ns2:Value>FA</ns2:Value>
      </ns2:FormCode>
    </DocumentType>
    <Token>Bb5oqyaBtg3o6D9jfLdtY04ur1qd8LsKt+BKbiZslTHE7NaCT9wcgLOJcTfWeiUghipqK8sokLqaJolvWFmzMSA4nvkOGk1Db7A5qRHf3Z1ACbXoRSKSJXEtI4sAc7VMdhS1ux+jKD6/YgbsIjEjk1bSV9qHwtz4z7DuKTag2PUkuQlrX6SgdMuTyYrQ27E1a8NSFYLdoKveKnkCUct/50OIOEvij18DTnBnR17XrDl4Z3q+lj2g3z/pSruAkk7nTvqBfFWub7FGrURESp2fBWf2fbTYRHg2cOuqTBh71VF9dq2KwsXJSCxhCt2/1olWHU47a+Nhn0jwU+P9HHYNQ5GSa/l4vPcLEmm24OgCJoIhgNoTkRRI2LwTcEszHy0pDInxW1Gc</Token>
  </ns3:Context>
</ns3:InitSessionTokenRequest>
0

@keye0192: @Stl86

Wklejam kod którym obecnie próbuję tworzyć fakturę do wysłania:

Faktura faktura = new Faktura()
{ 
    Podmiot1 = new FakturaPodmiot1()
    {
        Email = "test@gmail.com",
    },
};

XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(faktura.GetType());
String serializedToXml = SerializeToXml(faktura);
byte[] serialized;
using (MemoryStream textWriter = new MemoryStream())
{
    xmlSerializer.Serialize(textWriter, faktura);
    serialized = textWriter.ToArray();
}

string base64ed = Convert.ToBase64String(serialized);
byte[] hash = SHA256.Create().ComputeHash(serialized);

SendInvoiceRequest invoiceBody = new SendInvoiceRequest(
    new File1MBHashType(
        new HashSHAType("SHA-256", "Base64", hash),
        base64ed.Length
        ),
    new InvoicePayloadType(base64ed)
    );

Końcowy json (z invoiceBody.ToJson()):

{
  "invoiceHash": {
    "hashSHA": {
      "algorithm": "SHA-256",
      "encoding": "Base64",
      "value": "CJEnYYCW7uLvsThTOGOlF9+g6XDZifIH7uTklUgGcJQ="
    },
    "fileSize": 344
  },
  "invoicePayload": {
    "type": "PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8RmFrdHVyYSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxucz0iaHR0cDovL2NyZC5nb3YucGwvd3pvci8yMDIxLzExLzI5LzExMDg5LyI+DQogIDxQb2RtaW90MT4NCiAgICA8RW1haWw+dGVzdEBnbWFpbC5jb208L0VtYWlsPg0KICA8L1BvZG1pb3QxPg0KPC9GYWt0dXJhPg=="
  }
}

Po korekcie błąd "Sprzeczny typ żądania wysyłki faktury.", json:

{
  "invoiceHash": {
    "hashSHA": {
      "algorithm": "SHA-256",
      "encoding": "Base64",
      "value": "CJEnYYCW7uLvsThTOGOlF9+g6XDZifIH7uTklUgGcJQ="
    },
    "fileSize": 344
  },
  "invoicePayload": {
    "type": "plain",
    "invoiceBody": "PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8RmFrdHVyYSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxucz0iaHR0cDovL2NyZC5nb3YucGwvd3pvci8yMDIxLzExLzI5LzExMDg5LyI+DQogIDxQb2RtaW90MT4NCiAgICA8RW1haWw+dGVzdEBnbWFpbC5jb208L0VtYWlsPg0KICA8L1BvZG1pb3QxPg0KPC9GYWt0dXJhPg=="
  }
}
0

Cześć,
Walczę od kilku dni z InitSigned
Generowałem różne podpisy na bazie porad z tej strony:

  • użytkownika w openssl
  • Pieczec w openssl
  • Z aplikacji SelfCert od plurasight

Komendaydo podpisu:
openssl req -x509 -days 365 -newkey rsa:2048 -config konfig_podpis.txt -keyout private-key.pem -out certificate.pem

openssl pkcs12 -export -in certificate.pem -inkey private-key.pem -out selfSignedOpenSSL.pfx

Wszystkie w formacie PSX.
(Nie instaluję ich w systemie)

Strzelam postmanem:

  1. Dostaję challange
  2. Uzupełniam go w dokumencie wraz z NIP-em(Szablon ze strony ministerstwa)
  3. Podpisuję w >Net

screenshot-20220215075816.png

I albo nieprawidłowy podpis albo brak zgodności z xsd
Niestety nie udało się wyszukać xsd dla tej operacji aby walidować plik.
Podaję przykład pliku XML w załącznikuInitSessionSignedSelf.7z

0

Ktoś rozpracował zapytanie /online/Query/Invoice/Sync ?
Na swagerze jest zupełnie co innego niż na prezentacji, a co nie dam, to mi pisze, że mam zły JSON.

PS. Wysłałem mail, więc jak za pół roku dostanę odpowiedź, a nikt nie zgadnie do tego czasu, to zamieszczę :)

0

Czy ktoś próbował podpisać xml dla wywołania /Session/InitSigned za pomocą podpisu zaufanego (profilu zaufanego) ? Ja podpisałem przy pomocy strony https://moj.gov.pl/nforms/signer/upload?xFormsAppName=SIGNER ale KSeF zwraca błąd (ten sam błąd na test i demo):

{"exception":{"serviceCtx":"srvTRMFA","serviceCode":"20220215-EX-A60CF4F25B-DFEC219E77-72","serviceName":"online.session.session.signed.init","timestamp":"2022-02-15T12:30:21.914Z","referenceNumber":"20220215-SE-EB2DBF11D7-E9BF29E6EA-C3","exceptionDetailList":[{"exceptionCode":21225,"exceptionDescription":"Nieprawidłowy podpis."}]}}

Za instrukcją:

3.3.2.1.Profil zaufany
Podpis XAdES pieczęcią Ministra Cyfryzacji zawierający w elemencie
xades:SignerRole/xades:ClaimedRoles/xades:ClaimedRole strukturę
http://crd.gov.pl/xml/schematy/ppzp/ wskazującą na osobę uwierzytelnianą.

Sprawdzałem podpisany xml i są zawarte wszystkie wymagane elementy. Weryfikacja zwraca SHA256 XAdES-BASELINE-B (zamaskowałem dane więc się nie zweryfikuje, ale struktura jest nienaruszona.)InitSessionSignedRequest-PZ2.zip

0

Cześć,

na środowisku testowym ksef-test
z metody online/Session/InitSigned otrzymuję:

{
"exception": {
"serviceCtx": "srvTEMFA",
"serviceCode": "20220215-EX-78917B2CA6-396E20C0A6-B1",
"serviceName": "online.session.session.signed.init",
"timestamp": "2022-02-15T11:52:08.003Z",
"referenceNumber": "20220215-SE-3FE8F43F8D-7DA9575004-D9",
"exceptionDetailList": [
{
"exceptionCode": 9101,
"exceptionDescription": "Nieprawidłowe kodowanie dokumentu."
}
]
}
}

wygenerowałem certyfikaty (jak poniżej podjąc hasło qwerty1234)

  1. openssl req -new -keyout mykey.key -subj '/CN=Jan Kowalski/SN=Kowalski/GN=Jan/O=Testowa firma/C=PL/L=Mazowieckie/serialNumber=NIP-1801908070/description=Jan Kowalski NIP-1801908070' -out mycsr.csr

  2. openssl req -in mycsr.csr -noout -text -nameopt sep_multiline

Certificate Request:
Data:
Version: 1 (0x0)
Subject:
CN=Jan Kowalski
SN=Kowalski
GN=Jan
O=Testowa firma
C=PL
L=Mazowieckie
serialNumber=NIP-1801908070
description=Jan Kowalski NIP-1801908070
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:f6:f0:88:ef:2e:7f:44:2c:79:b3:3c:1c🆎fe:
24:d6:db:80:4d:3d:50:6f:6a:7a:66:68:f0:69:51:
2e:87:e1:e4:f4:d9:1d:2e:49🆎79:98:16:57:cd:
06:3f:5d:97:d4:6e:eb:5d:97:8e:ec:e2:f2:e8:a1:
e6:75:aa:7f:ae:17:32:3a:c9:8d:01:80:c9:74:28:
7a:6d:98:0b:23:a5:5f:53:38:23:56:c7:33:05:f9:
e4:f0:21:09:2a:94:0d:e6:d4:38:f1:7d:80:79:8b:
03:3d:aa:7a:15:fb:3f:b2:3f:f5:b7:9c:d0:fd:7a:
51:65:e5:f4:2b:5c:17:f9:9a:19:32:96:bc:a1:0d:
4d:89:66:f2:04:7a:c0:9f:76:71:cb:7a:2c:10:f6:
d9:92:82:4a:6d:d8:05:87:ac:33:e8:1b:e4:3c:9b:
16:83:4d:2a:22:8a:c3:98:39:f1:ea:15:99:0f:5b:
11:3a:ce:b5:6a:09:14:b5:df:2d:d2:e8:2d:de:62:
97:57:36:73:4d:8d:78:8a:46:d9:a7:89:66:58:91:
d9:8c:38:df:b1:2b:72:92:3f:d0:e2:fd:d5:58:c8:
ca:29:7b:d2:de:e3:2a:11:6f:31:ff:f9:3d:1d:74:
d9:52:3d:df:4f:bd:70:e9:44:ec:5a:9d:82:fa:cd:
e2:ff
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha256WithRSAEncryption
2f:bb:f5:d4:6c:15:6e:76:28:d4:bb:b4:8f:aa:51:1d:29:1f:
16:1f:b4:77:7b:88:8c:33:4e:2f:8a:6b:df:21:85:d0:3a:80:
ac:3f:18:3f:2b:76:e0:f1:6a:d1:fe:5d:ff:86:18:f3:df:c3:
e0:72:3e:c4:a9:a4:4e:ed:b7:f1:66:c4:9a:28:a9:8b:8c:9d:
fd:52:28:1e:00:c7:b7:03:ba:d7:6f:8f:d7:01:aa:c9:e8:d9:
9a:2c:76:e4:15:bc:c6:1e:16:d8:76:49:35:1a:9c:fc:eb:e7:
43:29:7a:ff:35:d8:bd:ad:44:ae:12:b6:f2:18:ba:8a:6a:a5:
c0:be:19:cb:41:40:a0:59:7d:aa:21:f1:19:a8:e8💿9d:ed:
3b:11:a3:a2:9f:c4:e6:8c:b9:c5:bf:a2:20:85:ee:70:fe:d0:
ab:24:5e:0d:ba:09:99:29:5f:1f:bf:e2:80:ef:3b:fa:56:4d:
7f:bd:89:03:cd:36:3d:4e:bd:99:44:72:dc:15:65:61:55:28:
95:bf:33:ae:df:73:fd:74:aa:91:3a:9f:e3:96:66:eb:57:e3:
69💿94:64:fe:29:0f:38:8c:b8:26:fd:ca:45:dc:e3:6e:95:
eb:0c:de:fd:da:7f:25:63:d2:45:79:14:9f:1a:da:31:44:d1:
40:c9:67:e3

  1. openssl x509 -signkey mykey.key -in mycsr.csr -req -days 365 -out certificate.pem

Signature ok
subject=CN = Jan Kowalski, SN = Kowalski, GN = Jan, O = Testowa firma, C = PL, L = Mazowieckie, serialNumber = NIP-1801908070, description = Jan Kowalski NIP-1801908070

  1. openssl x509 -text -noout -in certificate.pem

Certificate:
Data:
Version: 1 (0x0)
Serial Number:
6a:83:9d:77:cc:85:3c:c7:2e:b1:47:09:07:c8:f7:65:5e:29:a2:2e
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN = Jan Kowalski, SN = Kowalski, GN = Jan, O = Testowa firma, C = PL, L = Mazowieckie, serialNumber = NIP-1801908070, description = Jan Kowalski NIP-1801908070
Validity
Not Before: Feb 15 13:16:54 2022 GMT
Not After : Feb 15 13:16:54 2023 GMT
Subject: CN = Jan Kowalski, SN = Kowalski, GN = Jan, O = Testowa firma, C = PL, L = Mazowieckie, serialNumber = NIP-1801908070, description = Jan Kowalski NIP-1801908070
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:f6:f0:88:ef:2e:7f:44:2c:79:b3:3c:1c🆎fe:
24:d6:db:80:4d:3d:50:6f:6a:7a:66:68:f0:69:51:
2e:87:e1:e4:f4:d9:1d:2e:49🆎79:98:16:57:cd:
06:3f:5d:97:d4:6e:eb:5d:97:8e:ec:e2:f2:e8:a1:
e6:75:aa:7f:ae:17:32:3a:c9:8d:01:80:c9:74:28:
7a:6d:98:0b:23:a5:5f:53:38:23:56:c7:33:05:f9:
e4:f0:21:09:2a:94:0d:e6:d4:38:f1:7d:80:79:8b:
03:3d:aa:7a:15:fb:3f:b2:3f:f5:b7:9c:d0:fd:7a:
51:65:e5:f4:2b:5c:17:f9:9a:19:32:96:bc:a1:0d:
4d:89:66:f2:04:7a:c0:9f:76:71:cb:7a:2c:10:f6:
d9:92:82:4a:6d:d8:05:87:ac:33:e8:1b:e4:3c:9b:
16:83:4d:2a:22:8a:c3:98:39:f1:ea:15:99:0f:5b:
11:3a:ce:b5:6a:09:14:b5:df:2d:d2:e8:2d:de:62:
97:57:36:73:4d:8d:78:8a:46:d9:a7:89:66:58:91:
d9:8c:38:df:b1:2b:72:92:3f:d0:e2:fd:d5:58:c8:
ca:29:7b:d2:de:e3:2a:11:6f:31:ff:f9:3d:1d:74:
d9:52:3d:df:4f:bd:70:e9:44:ec:5a:9d:82:fa:cd:
e2:ff
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
8f:7c:83:fc:00:ec:d2:05:61:9f:33:ee:0f:7a:95:37:e3:0f:
f6:03:80:43:6d:46:4e:94:d4:4e:84:75:83:65:4b:5d:b9:16:
f5:55:87:da:10:3b:73:4d:5f:f5:f0:64:ca:35:d5:09:94:97:
81:36:12:75:6b:61:05:c5:6d:84:1a:b8:33:34:df:2f:0a:62:
06:69:3a:fc:ea:f0:61:28:e7:c7:33:13:8c:42:5c:e5:8b:97:
e9:c7:9f:5b:d8:4e:d2:8d:be:33:cf:71:58:7c:54:fb:8b:f4:
5b:63:ac:d0:fa:62:3a:eb:58:d8:fa:07:28:9c:75:eb:2e🆎
dd:03:f2:b4:66:73:e2:2b:af:39:fa:c3:ff:2a:a5:25:01:1f:
bc:35:c4:70:d6:c9:39:50:9d:16:37:88:09:95:d1:bb:86:50:
c9:31:c4:d3:0d:27:26:0c:89:2b:6e:9f:70:49:3b:a6:87:59:
47:15:61:dd:ec:a5:30:27:1e:5e:64:d7:cd:68:a8:80:33:74:
4f:ee:ae:8b:0a:83:8f:e9:b8:55:d5:95:49:62:05:57:f9:c0:
8a:e0:2b:fe:ab:ea:e8:08:66:22:04:ca:44:d5:43:a9:6a:59:
2c:06:57:b2:a2:10:29:ff:26:3d:20:a8:64:d8:ec:b6:4f:85:
43:4a:90:01

  1. openssl pkcs12 -export -out keyStore.p12 -inkey mykey.key -in certificate.pem

następnie wywołuję żądanie /api/online/Session/AuthorisationChallenge i podstawiam dane do xml:

<?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
<Timestamp>2022-02-15T13:17:52.436Z</Timestamp>
<Challenge>20220215-CR-5BED009452-BF962F725E-80</Challenge>
<Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
ns2:Identifier1801908070</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>
<Type>SerialNumber</Type>
</ns3:Context>
</ns3:InitSessionSignedRequest>

podpisany plik wygląda następująco:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns3:initsessionsignedrequest xmlns:ns3="http://ksef.mf.gov.pl/schema/gtw/svc/online/auth/request/2021/10/01/0001" 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">
<ns3:Context>
    <Timestamp>2022-02-15T13:17:52.436Z</Timestamp>
    <Challenge>20220215-CR-5BED009452-BF962F725E-80</Challenge>
    <Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
        <ns2:Identifier>1801908070</ns2:Identifier>
    </Identifier>
    <DocumentType>
        <ns2:Service>KSeF</ns2:Service>
        <ns2:FormCode>
            <ns2:SystemCode>FA (1)</ns2:SystemCode>
            <ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
            <ns2:TargetNamespace>http://crd.gov.pl/wzor/2021/11/29/11089/</ns2:TargetNamespace>
            <ns2:Value>FA</ns2:Value>
        </ns2:FormCode>
    </DocumentType>
    <Type>SerialNumber</Type>
</ns3:Context>

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f">
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="xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f-ref0" 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:DigestValuexKt+f2N++PlFCvr4kkI6UdEFK5ub6qiQAiY14XQreu0=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f-signedprops">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
ds:DigestValuetsFB6sZDnX/3+ncUYxozy1fccWCsX8CvBA0uwz+/ZMk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f-sigvalue">
37BF1K3dMMo5neS3MPTpuSezNR37wnB8fFcQxsjS+YaoT4lba8jid/kGMc90HdjYz3l4znBahzeg
TJKLmzr9BaoXUv7UwKa5hRFDf03VVlVXd/E0CkpXDePMx8aBS9mR/Lg3lsJa006jP7h1amdqTIN6
eT3yBKq3sMQdKvJkoDuk069ayxTBOwHG7goZzFJE0uJ/qI2uxfuLFJkpDumSHBTzbBFy/XzTjSGQ
N6Vn5KNH6IKCwagWDSA4K0iumYYpLsqQJCaEViDwmdZe6/cFN6P/WUlJ6KeTpANkwShbMCB5pC19
XCeRkwfRRMYFtdXAA9OHYI3/pqvIH/kOVg2PZg==
</ds:SignatureValue>
ds:KeyInfo
ds:X509Data
ds:X509Certificate
MIID7TCCAtUCFCo6ZpfZbxEGDIb+BxMax3HmpDL5MA0GCSqGSIb3DQEBCwUAMIGyMRUwEwYDVQQD
DAxKYW4gS293YWxza2kxETAPBgNVBAQMCEtvd2Fsc2tpMQwwCgYDVQQqDANKYW4xFjAUBgNVBAoM
DVRlc3Rvd2EgZmlybWExCzAJBgNVBAYTAlBMMRQwEgYDVQQHDAtNYXpvd2llY2tpZTEXMBUGA1UE
BRMOTklQLTE4MDE5MDgwNzAxJDAiBgNVBA0MG0phbiBLb3dhbHNraSBOSVAtMTgwMTkwODA3MDAe
Fw0yMjAyMTQxMjA5MTlaFw0yMzAyMTQxMjA5MTlaMIGyMRUwEwYDVQQDDAxKYW4gS293YWxza2kx
ETAPBgNVBAQMCEtvd2Fsc2tpMQwwCgYDVQQqDANKYW4xFjAUBgNVBAoMDVRlc3Rvd2EgZmlybWEx
CzAJBgNVBAYTAlBMMRQwEgYDVQQHDAtNYXpvd2llY2tpZTEXMBUGA1UEBRMOTklQLTE4MDE5MDgw
NzAxJDAiBgNVBA0MG0phbiBLb3dhbHNraSBOSVAtMTgwMTkwODA3MDCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAOA9v5Fb09S7mXhP7nMsu7FD1VyDs4uBR8BqMxChkBNh/UKrOjGAz79C
EDOzoVLcCxvC0H+WKvUnhGPBYeVGD16qw3bMtyH0o1HCS6CkELd6atZNIrYs8imp1iK3YvFKZNdz
bsnZfMKClPBR6751lWlDKFG5IJC+c6aVu9fqvGja3zNHbej3BQo7Ih7eGsjj33RogfZ3lwcusSeh
5cPygRfaQSl0m1klR2Q4K0MZOVq1DCimPgOUQOgzwCpB6BRwbPBFeZ03ltFOjGzmaQVA2gv6Jq3d
HMYK0yLIS7yyKzhZpGxsrvGOcSnmy8ZfiSMKQvSz9mliRB40nwtRaro6tVcCAwEAATANBgkqhkiG
9w0BAQsFAAOCAQEAUpGZ7xieU+EZkO7pLjXCyxjEUgh3uzkvv6lgXZ2Cst55iSpjFTBv9wXmeED8
gIYqY6REvG0rANnQhZSIgSlgLexrZFJObqWBEKFuOUvDMHoq0MiL/UFM7R8e0h7tpgWZFF1DQ2iv
izW2DTEngglcyyRQkpijcHN3A9T1evMHVBQitWbaF/0E1pwbrnkyqFfAy+H8VJxzAOuSL8b3uiHz
7TFXGMYEtu54KkQ8NPf+9hTpWSHkvKKDW1bY8K+6SthHLuAOs76DfaTM1OQJKMmTa8MUhKUptATX
+sn994MaOjBdgq1DyMaDnM3VATjon4AGm9b0+JxVVA6tEBYWI/MoeQ==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
ds:Object<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" Target="#xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f"><xades:SignedProperties Id="xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f-signedprops">xades:SignedSignaturePropertiesxades:SigningTime2022-02-15T14:18:26.512+01:00</xades:SigningTime>xades:SigningCertificatexades:Certxades:CertDigest<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>ds:DigestValuegt4GMfvmbkM7Rr6JvzxCJx88xjm2Vz8QJMblBdWNH7Q=</ds:DigestValue></xades:CertDigest>xades:IssuerSerialds:X509IssuerName2.5.4.13=#0c1b4a616e204b6f77616c736b69204e49502d31383031393038303730,2.5.4.5=#130e4e49502d31383031393038303730,L=Mazowieckie,C=PL,O=Testowa firma,2.5.4.42=#0c034a616e,2.5.4.4=#0c084b6f77616c736b69,CN=Jan Kowalski</ds:X509IssuerName>ds:X509SerialNumber241079992720937646083700416374795008714188534521</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties>xades:SignedDataObjectProperties<xades:DataObjectFormat ObjectReference="#xmldsig-2b36bd38-4991-43f3-92c4-38918344f10f-ref0">xades:MimeTypetext/xml</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object>
</ds:Signature></ns3:InitSessionSignedRequest>

Fragment kodu w java którym generuję podpis:

public class FirstCertificateSelector implements KeyStoreKeyingDataProvider.SigningCertSelector{
@Override
public X509Certificate selectCertificate(List<X509Certificate> list) {
return list.get(0);
}
}

oraz

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
ClassLoader classLoader = Main.class.getClassLoader();
Document doc = docBuilder.parse("./test.xml");
KeyStoreKeyingDataProvider.SigningCertSelector certificateSelector;
KeyingDataProvider kp = new FileSystemKeyStoreKeyingDataProvider(
"pkcs12",
"./keyStore.p12",
new FirstCertificateSelector(),
new KeyStoreKeyingDataProvider.KeyStorePasswordProvider() {
@Override
public char[] getPassword() {
return new String("qwerty1234").toCharArray();
}
},
new KeyStoreKeyingDataProvider.KeyEntryPasswordProvider() {
@Override
public char[] getPassword(String s, X509Certificate x509Certificate) {
return new String("qwerty1234").toCharArray();
}
},
true);

DataObjectDesc obj = new DataObjectReference("")
.withTransform(new EnvelopedSignatureTransform())
.withDataObjectFormat(new DataObjectFormatProperty("text/xml"));

XadesSigner signer = new XadesBesSigningProfile(kp).newSigner();
SignedDataObjects toSign = new SignedDataObjects(obj);
Node el = doc.getDocumentElement();
signer.sign(toSign, el);

try {
writeXMLToFile(doc, "./test_sign.xml");
} catch (Exception e) {
System.out.println("EXCEPTION");
System.out.println(e.getMessage());
}

0

Nawet przy przyznanych rolach faktur (odczyt/zapis) pieczęć nie może wysłać faktury w imieniu innej? Na inny NIP (bez samofakturowania).
Czy komuś się udało spróbować tego? Próbowałem też z tokenem.

0

Jak pobiera się UPO? Niby piszą w dokumentacji, że "Dopiero zakończona sesja, w której nie mogą spłynąć kolejne dokumenty faktur, rozpoczyna proces wystawiania UPO.". Jednocześnie, że "Dodatkowo jeżeli proces został zakończony pozytywnie lub sesja interaktywna została zakończona a w jej trakcie została zaakceptowana co najmniej jedna faktura, operacja w wyniku dostarcza UPO". Ale po zakończeniu sesji (i otwarciu nowej, żeby dostać status starej ;p) mam tylko, że "Zakończenie etapu finalizacji i zakończenia procesu" i to wszystko... Nie ma żadnego UPO w Base64 zapisanego... (Przynajmniej testowy)

0

Kolejny temat - przetwarzanie wsadowe, do którego dokumentacja skąpa, dokumentacji żądania prawie żadnej, jak i przykładów... chcę zainicjować wysyłkę, podaję taki XML i...

"Złe kodowanie dokumentu". Ale ja tu jeszcze niczego nie koduję :| Znów jakaś pierdółka pewnie, ale jak się pracuje z taką formą dokumentacji...

Edycja: Po poprawce namespaców jest teraz niezgodność z xsd. Choć ja nie umiem dostrzec...

Edycja: Udało się poprostować.
Dla potomnych przykład przechodzącego żądania:
api_batch_Init.zip

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.