Próbował już ktoś tworzyć aplikacje do wysyłania JPK zgodnie ze specyfikacją MF? Przebrnąć przez te wszystkie kompresje, kodowanie, generowanie xml, podpis elektroniczny i podłączenie się do bramki?
Hej. Czy jak liczycie HashValue z sekcji Document dla pliku JPK-VAT-TEST-0000.xml udostępnionego przez ministerstwo to dostajecie taką samą wartość jak w pliku InitUpload.xml przygotowanym przez MF, tj. (ZZEMD0SHu8b3AeRIOU30OcT9+nrxFTWHaXNdqnif9FQ=)?
@Przemek78 Dzięki za odpowiedź, bardzo mi pomogłeś. Ja użyłem SHA1CryptoServiceProvider a to przecież jest SHA1. Zaćmienie. My Fault. @angelson Jak tylko przez to przebrnę to się podzielę kodem. Wszyscy jedziemy na tym samym wózku :)
hej. Poniżej przedstawiam kod z c# z poszczególnymi krokami pozwalającymi na przygotowanie zaszyfrowanych plików. Kod jest wyjątkowo prymitywny, ale chodzi mi tylko o to aby ktoś, kto przebrnął już przez ten proces,spojrzał na poszczególne kroki i zwrócił uwagę, w których momentach moje podejście jest złe. Bardzo proszę o rewizję kodu.
@Gibonowski proszę podziel się swoim kodem do wysyłania. Ja używam poniższej metody do wysłania przykładowego pliku i ciągle dostaję 400. Proszę o jakieś wskazówki bo już nie mam pomysłu.
public string postXMLData(string destinationUrl) { try {
Witam Kolejny dzień walki czas zacząć. Próbuję wysłać plik InitUpload z podpisem i dostaję info od serwera:
{"Message":"Podpis jest w innym formacie niż XAdES-BES","Code":111,"RequestId":"zwOClt/+PpQ="}
Do wygenerowania podpisu używam poniższej metody. Czy ktoś mógłby zerknąc i powiedzieć co robię źle. Albo czy ktoś może podzielić się kodem dodającym poprawny podpis?
public static bool sign(string FileName, string SignedFileName) { RSACryptoServiceProvider Key = new RSACryptoServiceProvider(); X509Certificate2 x509 = new X509Certificate2(); x509.Import(@"c:\Xml\test-e-dokumenty.mf.gov.pl_ssl.crt"); // Wczytaj. XmlDocument doc
hmm. A teraz mam info: {"Message":"Przesłany plik jest niezgody ze schematem xsd","Code":140,"RequestId":"uSz9yD1UmjI=","Errors":["Could not find schema information for the element 'Signatures'.","Could not find schema information for the attribute 'Id'."]} Czy ktoś może podpowiedzieć o co może chodzić?
@Liferov Dzięki za udostępnienie kodu do podpisu. Podpis rzeczywiście wyglada dobrze ale... Wysyłając InitUpload dostaję komunikat: {"Message":"Podpis jest w innym formacie niż XAdES-BES","Code":111,"RequestId":"gUlu1p5t1IQ="}
Porównałem ten podpis z podpisem wygenerowanym w programie Szafir (z którego podpisane pliki InitUpload) przechodzą) i jest różnica w podpisie od węzła QualifyingProperties. W podpisie udostępnionym przez Ciebie nie ma przedrostków xades: a w podpisie z Szafira są. Czy w tym celu modyfikowałeś Microsoft.Xades? Czy to można jakoś
@kemot13, @aksapon2 ja mam dokładnie to samo. Od 7:39 wisi 120.
{"Code":120,"Description":"Sesja została poprawnie zakończona. Dane zostały poprawnie zapisane. Trwa weryfikacja dokumentu","Details":"","Timestamp":"2016-08-08T07:39:51.5721251+00:00","Upo":""}
@Gibonowski Mógłbyś zamieścić przykładowy plik JPK.xml. Ten z ministerstwa ma tylko nagłówek :( Nagłówek mam tak samo jak w pliku z ministerstwa więc coś nie tak w węzłach sprzedaży ... :(
@Gibonowski Wielka prośba o spojrzenie na plik JPK_VAT - http://speedy.sh/t3Vcr/JPK-VAT-TEST-0000.xml Dzisiaj server wali cały czas kodem 401 Plik niezgodny ze schematem xsd. Cholera wydaje mi się że plik jest zgodny ze schematem xsd. Nagłówek pliku skopiowałem z twojego przykładowego xml'a.
#programowanie #sap #erp #jpk
@angelson Jak tylko przez to przebrnę to się podzielę kodem. Wszyscy jedziemy na tym samym wózku :)
Poniżej przedstawiam kod z c# z poszczególnymi krokami pozwalającymi na przygotowanie zaszyfrowanych plików.
Kod jest wyjątkowo prymitywny, ale chodzi mi tylko o to aby ktoś, kto przebrnął już przez ten proces,spojrzał na poszczególne kroki i zwrócił uwagę, w których momentach moje podejście jest złe.
Bardzo proszę o rewizję kodu.
static public bool CreateJPK()
{
try
{
// generate one-time encryption key
AesCryptoServiceProvider aesEncryption = new AesCryptoServiceProvider();
aesEncryption.KeySize = 256;
aesEncryption.BlockSize =
public string postXMLData(string destinationUrl)
{
try
{
XmlDocument requestXml = new XmlDocument();
requestXml.Load(@"C:\Xml\initupload-enveloping.xades.xml");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(requestXml.OuterXml);
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response =
string readText = File.ReadAllText(@"C:\Xml\initupload-enveloping.xades.xml");
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(readText);
ale dalej mam 400, proszę jeszcze o jakieś sugestie ...
response = (HttpWebResponse)request.GetResponse();
I idzie do obsługi błędu. W którym miejscu powinna być ta dodatkowa informacja?
Kolejny dzień walki czas zacząć.
Próbuję wysłać plik InitUpload z podpisem i dostaję info od serwera:
{"Message":"Podpis jest w innym formacie niż XAdES-BES","Code":111,"RequestId":"zwOClt/+PpQ="}
Do wygenerowania podpisu używam poniższej metody. Czy ktoś mógłby zerknąc i powiedzieć co robię źle. Albo czy ktoś może podzielić się kodem dodającym poprawny podpis?
public static bool sign(string FileName, string SignedFileName)
{
RSACryptoServiceProvider Key = new RSACryptoServiceProvider();
X509Certificate2 x509 = new X509Certificate2();
x509.Import(@"c:\Xml\test-e-dokumenty.mf.gov.pl_ssl.crt");
// Wczytaj.
XmlDocument doc
{"Code":401,"Description":"Weryfikacja negatywna – dokument niezgodny ze schematem xsd","Details":"ERROR_VALIDATE","Upo":"","Timestamp":"2016-07-28T10:57:20+00:00"}
Jak sobie z tym poradziłeś?
Dodam że podpisałem plik InitUpload.xml ze strony ministerstwa
{"Message":"Przesłany plik jest niezgody ze schematem xsd","Code":140,"RequestId":"uSz9yD1UmjI=","Errors":["Could not find schema information for the element 'Signatures'.","Could not find schema information for the attribute 'Id'."]}
Czy ktoś może podpowiedzieć o co może chodzić?
X509Certificate2 x509 = new X509Certificate2();
x509.Import(@"c:\Xml\test-e-dokumenty.mf.gov.plssl.crt");
I przy próbie podpisu dostaję komunikat:
Klucz podpisujący nie został załadowany._
Czy ty też używasz tego certyfikatu czy masz kwalifikowany?
Co ewentualnie może być nie tak?
{"Message":"Podpis jest w innym formacie niż XAdES-BES","Code":111,"RequestId":"gUlu1p5t1IQ="}
Porównałem ten podpis z podpisem wygenerowanym w programie Szafir (z którego podpisane pliki InitUpload) przechodzą) i jest różnica w podpisie od węzła QualifyingProperties. W podpisie udostępnionym przez Ciebie nie ma przedrostków xades: a w podpisie z Szafira są.
Czy w tym celu modyfikowałeś Microsoft.Xades? Czy to można jakoś
{"Code":120,"Description":"Sesja została poprawnie zakończona. Dane zostały poprawnie zapisane. Trwa weryfikacja dokumentu","Details":"","Timestamp":"2016-08-08T07:39:51.5721251+00:00","Upo":""}
Pozdrawiam wszystkich. ;)
{"Code":401,"Description":"Weryfikacja negatywna – dokument niezgodny ze schematem xsd","Details":"ERRORVALIDATE","Timestamp":"2016-08-09T10:18:05+00:00","Upo":""}_
To oznacza że plik udało się odszyfrować i rozpakować czy wcale tak nie musi być?
Nagłówek mam tak samo jak w pliku z ministerstwa więc coś nie tak w węzłach sprzedaży ... :(
Poniżej fragment kodu
using (var client2 = new HttpClient())
{
string xml = File.ReadAllText(@"C:\Xml\InitUpload.xml.XAdES");
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(xml);
//string a = "https://test-e-dokumenty.mf.gov.pl/api/Storage/InitUploadSigned?enableValidateQualifiedSignature=false";
string a = "https://e-dokumenty.mf.gov.pl/api/Storage/InitUploadSigned";
client2.BaseAddress = new Uri(a);
var httpContent = new StringContent(xml, Encoding.UTF8, "application/xml");
var result = client2.PostAsync("", httpContent).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
content = resultContent;
httpStatusCode = result.StatusCode;
if (httpStatusCode == System.Net.HttpStatusCode.OK)
Dzisiaj server wali cały czas kodem 401 Plik niezgodny ze schematem xsd. Cholera wydaje mi się że plik jest zgodny ze schematem xsd. Nagłówek pliku skopiowałem z twojego przykładowego xml'a.