Forum » Programiranje » Davčne blagajne
Davčne blagajne
PrimozHisof ::
Evo, pa smo tam...Zakaj se ustavi??
testiranje funkcije ECHO
navodila: http://datoteke.durs.gov.si/dpr/index.h...
Dim _sNaslov As String
_sNaslov = "https://blagajne-test.fu.gov.si:9002/v1...
Dim request As HttpWebRequest = CType(WebRequest.Create(_sNaslov), HttpWebRequest)
request.ContentType = "text/xml; charset=utf-8"
request.Accept = "text/xml"
request.Method = "POST"
request.Timeout = 10000
Dim cert_path As String = "C:\TEMP\test-tls.cer" 'TLS sertifikat
Dim cert As X509Certificate2
cert = New X509Certificate2(cert_path, "")
request.ClientCertificates.Add(cert)
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
' Create a new XML document.
Dim xmlDoc As New XmlDocument()
Dim xb
xb = System.Text.Encoding.UTF8.GetBytes(My.Resources.xmlString)
request.GetRequestStream().Write(xb, 0, xb.length)
'to je še OK
Try
'TU SE ZADEVA USTAVI !
Dim resp = request.GetResponse()
'TU SE ZADEVA USTAVI !
Dim stread As StreamReader = New StreamReader(resp.GetResponseStream())
Dim st As String = stread.ReadToEnd()
MsgBox(st)
Catch ex As Exception
MsgBox(ex.Message)
End Try
testiranje funkcije ECHO
navodila: http://datoteke.durs.gov.si/dpr/index.h...
Dim _sNaslov As String
_sNaslov = "https://blagajne-test.fu.gov.si:9002/v1...
Dim request As HttpWebRequest = CType(WebRequest.Create(_sNaslov), HttpWebRequest)
request.ContentType = "text/xml; charset=utf-8"
request.Accept = "text/xml"
request.Method = "POST"
request.Timeout = 10000
Dim cert_path As String = "C:\TEMP\test-tls.cer" 'TLS sertifikat
Dim cert As X509Certificate2
cert = New X509Certificate2(cert_path, "")
request.ClientCertificates.Add(cert)
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
' Create a new XML document.
Dim xmlDoc As New XmlDocument()
Dim xb
xb = System.Text.Encoding.UTF8.GetBytes(My.Resources.xmlString)
request.GetRequestStream().Write(xb, 0, xb.length)
'to je še OK
Try
'TU SE ZADEVA USTAVI !
Dim resp = request.GetResponse()
'TU SE ZADEVA USTAVI !
Dim stread As StreamReader = New StreamReader(resp.GetResponseStream())
Dim st As String = stread.ReadToEnd()
MsgBox(st)
Catch ex As Exception
MsgBox(ex.Message)
End Try
- spremenil: PrimozHisof ()
bacardi ::
Mislim, da sva nekje na istem.
Sporočiš, če ugotoviš kaj novega. Misliš, da je težava pri njih?
Lp,
Jure
Sporočiš, če ugotoviš kaj novega. Misliš, da je težava pri njih?
Lp,
Jure
Strato5 ::
Tudi meni se je zataknilo...
moja koda je objavljena v drugi temi (verjetno se je tale objavila nekje vmes ko sem jaz pisal svojo :) Davčne blagajne - PHP
meni vse zgleda kot da se poveže pa vse ok potem pa dobim response napačni parametri vnosa.
Ko sem z verbose opcijo pa logom probal debugirat celo zadevo mi je zgledalo kot da bi jaz pošiljal xml got, nazaj pa dobival JSON odgovor, ki ga curl seveda ne zna dešifrirat...
Če kdo dobi kako idejo ali uspe tole rešit, ali pa vsaj potrdit da je problem na njihovi strani, naj prosim javi.
LP, Matija7
Pa kolkor sem gledal, soapreuest za echo metodo ni treba da je podpisan. vsaj v navodilih kjer je primer echorequesta, ni podpisan.
če pa bi bil problem v podpisu, bi bil odgovor verjetno neveljaven ali neobstoječ podpis ali kaj v tem smislu ne pa "napačni parametri vnosa"...
Poslal sem tudi že mail z vprašanjem ampak zaenkrat od njih še nimam odgovora.
moja koda je objavljena v drugi temi (verjetno se je tale objavila nekje vmes ko sem jaz pisal svojo :) Davčne blagajne - PHP
meni vse zgleda kot da se poveže pa vse ok potem pa dobim response napačni parametri vnosa.
Ko sem z verbose opcijo pa logom probal debugirat celo zadevo mi je zgledalo kot da bi jaz pošiljal xml got, nazaj pa dobival JSON odgovor, ki ga curl seveda ne zna dešifrirat...
Če kdo dobi kako idejo ali uspe tole rešit, ali pa vsaj potrdit da je problem na njihovi strani, naj prosim javi.
LP, Matija7
Pa kolkor sem gledal, soapreuest za echo metodo ni treba da je podpisan. vsaj v navodilih kjer je primer echorequesta, ni podpisan.
če pa bi bil problem v podpisu, bi bil odgovor verjetno neveljaven ali neobstoječ podpis ali kaj v tem smislu ne pa "napačni parametri vnosa"...
Poslal sem tudi že mail z vprašanjem ampak zaenkrat od njih še nimam odgovora.
Zgodovina sprememb…
- spremenilo: Strato5 ()
Yoda Master ::
WSDL poglej. V headerju ti manjka še SOAPAction="/echo"
There is no emotion, there is peace.
There is no ignorance, there is knowledge.
There is no passion, there is serenity.
There is no death, there is the Force.
bacardi ::
Jaz sem imel težavo drugje. Mogoče bo komu pomagalo:
SecurityProtocolType.Tls ne velja.
"System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;"
Potrebno je uporabiti Framework 4.5, ki podpira TLS1.2
"System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;"
Lp,
Jure
SecurityProtocolType.Tls ne velja.
"System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;"
Potrebno je uporabiti Framework 4.5, ki podpira TLS1.2
"System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;"
Lp,
Jure
Strato5 ::
Yoda Master je izjavil:
WSDL poglej. V headerju ti manjka še SOAPAction="/echo"
zdravo,
tudi če definiram soapaction še vedno dobim odgovor "napačni parametri vnosa"... možno pa je da delam kje kako brezvezno napako.
koda ki jo uporabljam:
PHP:
<?php $url = 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers'; $Cert = '/Users/matija/Desktop/TestDB/test-tls.cer'; $xml_string = file_get_contents('/Users/matija/Desktop/TestDB/echoRequest.xml'); $xml = new DOMDocument(); $xml->loadXML($xml_string); $header = array( "Content-Type: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: \"/Echo\"" ); $conn = curl_init(); $settings = array( CURLOPT_URL => $url, CURLOPT_CONNECTTIMEOUT_MS => 3000, CURLOPT_TIMEOUT_MS => 3000, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $xml, CURLOPT_FRESH_CONNECT => true, CURLOPT_HTTPHEADER => $header, // secure this! CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_CAINFO => $Cert ); curl_setopt_array($conn, $settings); if ($rawResponse = curl_exec($conn)) { print_r($rawResponse); } else { throw new Exception('CODECURL: ' . curl_error($conn)); } echo "\n".$xml->saveXML(); ?>
XML requesta:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/"> <soapenv:Header> </soapenv:Header> <soapenv:Body> <fu:EchoRequest>test1</fu:EchoRequest> </soapenv:Body> </soapenv:Envelope>
poskusil sem tudi definirati soapaction v headerju requesta pa je bil rezultat isti :S
za pomoč bom zelo hvaležen.
LP, Matija7
Yoda Master ::
Daj probaj to:
<?php $url = 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers'; $Cert = '/Users/matija/Desktop/TestDB/test-tls.cer'; $xml_string = file_get_contents('/Users/matija/Desktop/TestDB/echoRequest.xml'); $xml = new DOMDocument(); $xml->loadXML($xml_string); $header = array( "Content-Type: text/xml; charset=UTF-8", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: \"/echo\"" ); $conn = curl_init(); $settings = array( CURLOPT_URL => $url, CURLOPT_CONNECTTIMEOUT_MS => 3000, CURLOPT_TIMEOUT_MS => 3000, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $xml, CURLOPT_FRESH_CONNECT => true, CURLOPT_HTTPHEADER => $header, // secure this! CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_CAINFO => $Cert ); curl_setopt_array($conn, $settings); if ($rawResponse = curl_exec($conn)) { print_r($rawResponse); } else { throw new Exception('CODECURL: ' . curl_error($conn)); } echo "\n".$xml->saveXML(); ?>
There is no emotion, there is peace.
There is no ignorance, there is knowledge.
There is no passion, there is serenity.
There is no death, there is the Force.
Utk ::
Zakaj niso naredili tako, da se na furs pošlje e-račun, če že imamo standard za to in v večini programov to že narejeno? Bi bilo preveč enostavno?
Strato5 ::
Strato5 ::
Zakaj niso naredili tako, da se na furs pošlje e-račun, če že imamo standard za to in v večini programov to že narejeno? Bi bilo preveč enostavno?
to se pa pomoje vsi sprašujemo :)
ampak mogli so nardit tak da so lahko nekomu plačali da je postavil čisto nov sistem... denar more krožit (seveda je bil izvajalec verjetno že vnaprej določen...)
klasika pač. komplicirajo povsod kjer ne bi bilo potrebno.
Utk ::
Sej tist njihov sistem bi morali glih tako plačat, samo ostali bi imeli z njim manj dela. Ne pa da fantazirajo o 50 evrih stroška...ja za tiste, ki že imajo internet, računalnik, ne-iglični tiskalnik. Pa še za te dvomim, da bo tako poceni.
Strato5 ::
Metoda echo vrne kar ji pošlješ.
ja to sem pričakoval ampak po predlagani spremembi na SOAPAction ="echo" (z malo začetnico) dobivam prazen response...
request:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/"> <soapenv:Header> </soapenv:Header> <soapenv:Body> <fu:EchoRequest>test123</fu:EchoRequest> </soapenv:Body> </soapenv:Envelope>
Response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:fu="http://www.fu.gov.si/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <fu:EchoResponse></fu:EchoResponse> </soapenv:Body> </soapenv:Envelope>
kaj točno naj si mislim pa ne vem ...
ve kdo kak točno morem definirat SOAPAction ko pošiljam račun ali podatke o poslovnem prostoru?
LP, Matija7
EDIT: rešil problem z echo metodo. iz $xml_string sem kreiral DOMDocument in potem $xml_string loadal not potem pa v curlu POST-al ta DOMDocument. z $xml_string pa deluje kot je treba.
Zgodovina sprememb…
- spremenilo: Strato5 ()
technolog ::
Ne štekam, zakaj SOAP klice delate direkt. Uporabte knjižnico, obstaja za vse jezike.
Pa pustmo to, da so glupi, ker uporabljajo SOAP, ampak pač, javna uprava.
Pa pustmo to, da so glupi, ker uporabljajo SOAP, ampak pač, javna uprava.
MH0 ::
Meni echo vrne poslani string. Sem pa na .NET.
Prav vidim, da so v shemah proprerty-ji v angleščini, dokumentacija pa v slovenščini? :-/
Prav vidim, da so v shemah proprerty-ji v angleščini, dokumentacija pa v slovenščini? :-/
Strato5 ::
Ne štekam, zakaj SOAP klice delate direkt. Uporabte knjižnico, obstaja za vse jezike.
Pa pustmo to, da so glupi, ker uporabljajo SOAP, ampak pač, javna uprava.
direkt delam SOAP klice, ker je tako lažja integracija sprogramom za izdajanje začunov s katerim želim to povezat (narejen je na Filemaker platformi)
Ja tisto da so propertyji v angleščini in dokumentacija v slovenščini prav vidiš :) tudi meni je blo glupo. predvsem zato, ker so hrvati tudi propertyje prevedli v hrvaščino, naši pa so zgleda skopirali hrvaški sistem ampak samo nekje do polovice :D
bacardi ::
Zakaj niso naredili tako, da se na furs pošlje e-račun, če že imamo standard za to in v večini programov to že narejeno? Bi bilo preveč enostavno?
Ugibam. Zato, ker v e-racun ne zajeme vseh informacij, ki jih oni zelijo zajeti. V mislih imejte, da ta sistem ni samo za preverjanje koliko davka kdo placa ampak kdo in kje izda racun ( delo na crno).
Zakonska podliga omogoca uporabo inf. Tudi v te namene.
Lp,
Jure
mkrin ::
Pozdravljeni,
Jaz imam enake težave. Pri requestu za echo vrne napako. Tudi preko programa SoapUI mi za Hrvaško verzijo deluje brez problemov, pri Slovenski pa mi vrača napako tipa: "SSLHandshakeException: Received fatal alert: handshake_failure", čeprav pri poizvedbi "Echo".
Sumim neke težave pri certifikatu za vzpostavitev TLS seje. Certifikat "blagajne-test.fu.gov.si" dodam in je stanje potrdila da je izdajatelja tega potrdila nemogoče najti. Ko dodam še izdajatelja "sitest-ca" certifikat je potem ta ustrezen in certifikat "blagajne-test.fu.gov.si" neustrezen.
Sem tudi poslal vprašanje, vendar tudi jaz še nimam odgovora.
Lp
Jaz imam enake težave. Pri requestu za echo vrne napako. Tudi preko programa SoapUI mi za Hrvaško verzijo deluje brez problemov, pri Slovenski pa mi vrača napako tipa: "SSLHandshakeException: Received fatal alert: handshake_failure", čeprav pri poizvedbi "Echo".
Sumim neke težave pri certifikatu za vzpostavitev TLS seje. Certifikat "blagajne-test.fu.gov.si" dodam in je stanje potrdila da je izdajatelja tega potrdila nemogoče najti. Ko dodam še izdajatelja "sitest-ca" certifikat je potem ta ustrezen in certifikat "blagajne-test.fu.gov.si" neustrezen.
Sem tudi poslal vprašanje, vendar tudi jaz še nimam odgovora.
Lp
MH0 ::
Meni, če ne ignoriram certifikatov, deluje tako, da imam v trusted root cirtificate store uvožen samo sitest-ca. S test-tls.cer pa se nikjer ne ukvarjam.
Strato5 ::
tudi za metodo echo rabiš vzpostavit TLS povezavo kar pomeni, da moreš za vzpostavit povezavo uporabit test-tls.cer datoteko, ki jo dobiš na njihovi strani.
meni dela ok, če vzpostavim povezavo z uporabo test-tls.cer certifikata.
meni dela ok, če vzpostavim povezavo z uporabo test-tls.cer certifikata.
MH0 ::
V MS .NET svetu pa izgleda, da smo bolj razvajeni in veliko stvari dela kar samo po sebi. :-) Seveda pa se vse zalomi, ko je treba komunicirati z nečim kar je država kupila od kakšnih znancev.
PrimozHisof ::
še vedno v temi: VB NET , FRAMEWORK 3.5
s tole kodo spodaj se ne morem povezati niti na lokalni webservice, nimam pojma kaj bi bilo
tole smo pa dobili od furs
>>Spoštovani,
Navedeno uporabljamo na Furs za test:
public void Execute(Object stateInfo)
{
//try
//{
HttpWebRequest request = CreateWebRequest(_sporocilo);
// Disconnect and close the client
//client.Close();
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
using (Stream stream = request.GetRequestStream())
{
StreamWriter sw = new StreamWriter(stream, new System.Text.UTF8Encoding(false, true));
_soapEnvelopeXml.Save(sw);
}
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
Console.WriteLine(soapResult);
Console.WriteLine("soap:" + _stevec.ToString());
}
response.Close();
}
//IAsyncResult asyncResult = request.BeginGetResponse(null, null);
//asyncResult.AsyncWaitHandle.WaitOne();
//string soapResult;
//using (WebResponse webResponse = request.EndGetResponse(asyncResult))
//{
// using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
// {
// soapResult = rd.ReadToEnd();
// }
// Console.Write(soapResult);
//}
//}
//catch (Exception e)
//{
// Console.WriteLine(e.Message);
//}
}
public static HttpWebRequest CreateWebRequest(Sporocilo sporocilo)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://blagajne-test.fu.gov.si:9002/v1...
if (sporocilo == Sporocilo.PP)
webRequest.Headers.Add(@"SOAPAction: /invoices/register");
else
webRequest.Headers.Add(@"SOAPAction: /invoices");
//webRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
webRequest.ContentType = "text/xml; charset=UTF-8";
//webRequest.Proxy = new WebProxy("http://localhost:8888/", true);
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
webRequest.KeepAlive = true;
return webRequest;
}
// The following method is invoked by the RemoteCertificateValidationDelegate.
// This allows you to check the certificate and accept or reject it
// return true will accept the certificate
public static bool ValidateServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// Accept all certificates
return true;
}
s tole kodo spodaj se ne morem povezati niti na lokalni webservice, nimam pojma kaj bi bilo
tole smo pa dobili od furs
>>Spoštovani,
Navedeno uporabljamo na Furs za test:
public void Execute(Object stateInfo)
{
//try
//{
HttpWebRequest request = CreateWebRequest(_sporocilo);
// Disconnect and close the client
//client.Close();
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
using (Stream stream = request.GetRequestStream())
{
StreamWriter sw = new StreamWriter(stream, new System.Text.UTF8Encoding(false, true));
_soapEnvelopeXml.Save(sw);
}
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
Console.WriteLine(soapResult);
Console.WriteLine("soap:" + _stevec.ToString());
}
response.Close();
}
//IAsyncResult asyncResult = request.BeginGetResponse(null, null);
//asyncResult.AsyncWaitHandle.WaitOne();
//string soapResult;
//using (WebResponse webResponse = request.EndGetResponse(asyncResult))
//{
// using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
// {
// soapResult = rd.ReadToEnd();
// }
// Console.Write(soapResult);
//}
//}
//catch (Exception e)
//{
// Console.WriteLine(e.Message);
//}
}
public static HttpWebRequest CreateWebRequest(Sporocilo sporocilo)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://blagajne-test.fu.gov.si:9002/v1...
if (sporocilo == Sporocilo.PP)
webRequest.Headers.Add(@"SOAPAction: /invoices/register");
else
webRequest.Headers.Add(@"SOAPAction: /invoices");
//webRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
webRequest.ContentType = "text/xml; charset=UTF-8";
//webRequest.Proxy = new WebProxy("http://localhost:8888/", true);
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
webRequest.KeepAlive = true;
return webRequest;
}
// The following method is invoked by the RemoteCertificateValidationDelegate.
// This allows you to check the certificate and accept or reject it
// return true will accept the certificate
public static bool ValidateServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// Accept all certificates
return true;
}
Zgodovina sprememb…
- spremenil: PrimozHisof ()
PrimozHisof ::
to so zgleda headerji
za poslovni prostor:
webRequest.Headers.Add(@"SOAPAction: /invoices/register");
za račune:
webRequest.Headers.Add(@"SOAPAction: /invoices");
za poslovni prostor:
webRequest.Headers.Add(@"SOAPAction: /invoices/register");
za račune:
webRequest.Headers.Add(@"SOAPAction: /invoices");
mkrin ::
Najlepša hvala za vaše odgovore.
Sedaj se mi uspe povezati z dodajanjem certifikata:
X509Certificate cert_file = X509Certificate.CreateFromCertFile("C:\\test-tls.cer");
request.ClientCertificates.Add(cert_file);
Pošiljanje mi sedaj uspe (kar mi pred dodajanjem certifikata ni delovalo):
requestStream.Write(by, 0, by.Length);
Sedaj dobim napako pri odgovoru:
request.GetResponse()
The remote server returned an error: (404) Not Found.
Bom poskusil še s testnim XML-jem iz specifikacij, da nisem narobe sestavim XML.
Ali je potrebno še kaj drugega dodati ?
Najlepša hvala
Sedaj se mi uspe povezati z dodajanjem certifikata:
X509Certificate cert_file = X509Certificate.CreateFromCertFile("C:\\test-tls.cer");
request.ClientCertificates.Add(cert_file);
Pošiljanje mi sedaj uspe (kar mi pred dodajanjem certifikata ni delovalo):
requestStream.Write(by, 0, by.Length);
Sedaj dobim napako pri odgovoru:
request.GetResponse()
The remote server returned an error: (404) Not Found.
Bom poskusil še s testnim XML-jem iz specifikacij, da nisem narobe sestavim XML.
Ali je potrebno še kaj drugega dodati ?
Najlepša hvala
inkanet ::
Sam dostopam do testnega okolja preko Oracle PL/SQL in dobivam enake odgovore:
Za blagajne-test.fu.gov.si:9002/v1/cash_registers - 404 Not found Napačani parametri vnosa
Za blagajne-test.fu.gov.si:9002/v1/cash_registers/echo - Odgovor je enak poslanemu sporočilu
Enako mi dela tudi z uporabo DHC (Dev HTTP Client) razširitve za Chrome.
Poslal sem mail na njihovo podporo pred 2 dnevoma pa ni odgovora. Mislim da je težava na njihovi strani.
Za blagajne-test.fu.gov.si:9002/v1/cash_registers - 404 Not found Napačani parametri vnosa
Za blagajne-test.fu.gov.si:9002/v1/cash_registers/echo - Odgovor je enak poslanemu sporočilu
Enako mi dela tudi z uporabo DHC (Dev HTTP Client) razširitve za Chrome.
Poslal sem mail na njihovo podporo pred 2 dnevoma pa ni odgovora. Mislim da je težava na njihovi strani.
Zgodovina sprememb…
- spremenilo: inkanet ()
Chuck Borris ::
Hvala vsem za odgovore. Meni je uspelo dobiti nazaj odgovor.
Prilagam primer kode.
Zelo pomembno: deluje samo v .net 4.5 (v .net 4 ali .net 3.5 ne deluje!!) - zato ker samo .net 4.5 podpira tls12
Prilagam primer kode.
Zelo pomembno: deluje samo v .net 4.5 (v .net 4 ali .net 3.5 ne deluje!!) - zato ker samo .net 4.5 podpira tls12
public static string davcnaEcho() { String response_str = ""; X509Certificate2 certificate = new X509Certificate2("C:\\DavčnaBlagajna\\test-tls.cer"); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate); //PRVI NAČIN -- WEB_SERVICE try { // add web reference --> http://datoteke.durs.gov.si/dpr/files/wsdl_v1/FiscalVerification.wsdl DavcnaBlagajnaSlo.FiscalVerificationService fiskal = new DavcnaBlagajnaSlo.FiscalVerificationService(); fiskal.Url = "https://blagajne-test.fu.gov.si:9002/v1/cash_registers"; fiskal.ClientCertificates.Add(certificate); response_str = "1: " + fiskal.echo("<fu:EchoRequest>test</fu:EchoRequest>"); } catch (Exception x) { response_str = "1: err1: " + x.Message; } //DRUGI NAČIN -- HttpWebRequest try { Uri uri = new Uri("https://blagajne-test.fu.gov.si:9002/v1/cash_registers"); HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest; if (request != null) { request.ClientCertificates.Add(certificate); request.Method = "POST"; request.Accept = "text/xml"; request.KeepAlive = true; request.ContentType = "text/xml; charset=utf-8"; request.Headers.Add(@"SOAPAction: /echo"); byte[] by = UTF8Encoding.UTF8.GetBytes(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:fu=""http://www.fu.gov.si/"" xmlns:xd=""http://www.w3.org/2000/09/xmldsig#""><soapenv:Body><fu:EchoRequest>test</fu:EchoRequest></soapenv:Body></soapenv:Envelope>"); request.ContentLength = by.Length; using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(by, 0, by.Length); } HttpWebResponse response = request.GetResponse() as HttpWebResponse; if (response != null) { using (StreamReader rd = new StreamReader(response.GetResponseStream())) { response_str = response_str = response_str + System.Environment.NewLine + "2: "+ rd.ReadToEnd(); } response.Close(); } } } catch (WebException x) { response_str = response_str + System.Environment.NewLine + "2: err1: " + x.Message; } System.Console.Out.WriteLine(response_str ); } public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }
Zgodovina sprememb…
- spremenil: Chuck Borris ()
PrimozHisof ::
Chuck Borris je izjavil:
Hvala vsem za odgovore. Meni je uspelo dobiti nazaj odgovor.
Prilagam primer kode.
Zelo pomembno: deluje samo v .net 4.5 (v .net 4 ali .net 3.5 ne deluje!!) - zato ker samo .net 4.5 podpira tls12
Če je to gotovo potem odpade VisualStudio2008, očitno bo treba na 2013.
Lp
Stepox ::
Za dostop do strežnika je potreben TLS 1.2 posledično .net 4.5.
Zaradi .net 4.5 odpadejo tudi Windows XP.
Zaradi .net 4.5 odpadejo tudi Windows XP.
Chuck Borris ::
Mislim, da je minimalna zahteva VisualStudio2012 (v tem delam jaz).
Tls12 pa je podprt z Windows 7 (https://msdn.microsoft.com/en-us/librar...)
Tls12 pa je podprt z Windows 7 (https://msdn.microsoft.com/en-us/librar...)
PrimozHisof ::
Za dostop do strežnika je potreben TLS 1.2 posledično .net 4.5.
Zaradi .net 4.5 odpadejo tudi Windows XP.
Niso normalni!! Kaj pa vse kase Windows CE, XP...!?
povezat na lokalni server uspelo: manjkal Close
StreamWriter sw = new StreamWriter(stream, new System.Text.UTF8Encoding(false, true));
_soapEnvelopeXml.Save(sw);
sw.close()
}
Zgodovina sprememb…
- spremenil: PrimozHisof ()
MH0 ::
Seveda tudi za njihov primer na http://datoteke.durs.gov.si/dpr/files/e... javi Digitalni podpis ni ustrezen. :-(
Ups, ni res.
Ups, ni res.
Zgodovina sprememb…
- spremenilo: MH0 ()
perci ::
Niso normalni!! Kaj pa vse kase Windows CE, XP...!?
Kaj pa bi ti? Raje uporabljal varnostno kompromitirane kriptografske protokole?
Zgodovina sprememb…
- spremenil: perci ()
PrimozHisof ::
dodani so tudi novi certifikati
http://datoteke.durs.gov.si/dpr/index.h...
PA SAJ NISO BANKA!!! Gre za neko potrjevanje računov za 5 EUR, ki so (celo) plačani!
http://datoteke.durs.gov.si/dpr/index.h...
Niso normalni!! Kaj pa vse kase Windows CE, XP...!?
Kaj pa bi ti? Raje uporabljal varnostno kompromitirane kriptografske protokole?
PA SAJ NISO BANKA!!! Gre za neko potrjevanje računov za 5 EUR, ki so (celo) plačani!
Zgodovina sprememb…
- spremenil: PrimozHisof ()
perci ::
Neumnost.
Če račun ni pravilno izdan, lahko sledi kazen v maksimalnem znesku 125.000 EUR. Potem pa ti dokazuj kdo je/ni kdaj kej naredu in kdo je/ni posegal v dokument.
Če tko pogledaš, mora bit zadeva bolj secure kot banka, ker nihče (pri zdravi pameti) nima 125k EUR na računu na vpogled.
Če račun ni pravilno izdan, lahko sledi kazen v maksimalnem znesku 125.000 EUR. Potem pa ti dokazuj kdo je/ni kdaj kej naredu in kdo je/ni posegal v dokument.
Če tko pogledaš, mora bit zadeva bolj secure kot banka, ker nihče (pri zdravi pameti) nima 125k EUR na računu na vpogled.
technolog ::
Sej za protokol pa res ne rabiš podpore operacijskega sistema, samo pravo knjižnico priloženo.
Se vid, da so v windows svetu vse stvari na glavo postavljene.
Pa še to: Ker debil je v letu 2015 izbral SOAP za komunikacijo?
Se vid, da so v windows svetu vse stvari na glavo postavljene.
Pa še to: Ker debil je v letu 2015 izbral SOAP za komunikacijo?
Zgodovina sprememb…
- spremenil: technolog ()
PrimozHisof ::
Neumnost.
Če račun ni pravilno izdan, lahko sledi kazen v maksimalnem znesku 125.000 EUR. Potem pa ti dokazuj kdo je/ni kdaj kej naredu in kdo je/ni posegal v dokument.
Če tko pogledaš, mora bit zadeva bolj secure kot banka, ker nihče (pri zdravi pameti) nima 125k EUR na računu na vpogled.
Če so že hekerji na tem področju, se bodo verjetno ukvarjali s kako banko...je bolj profitabilno :)
Sej za protokol pa res ne rabiš podpore operacijskega sistema, samo pravo knjižnico priloženo.
Super, kako to narediš v .NET?
Zgodovina sprememb…
- spremenil: PrimozHisof ()
perci ::
Vpraš razvijalce kateri protokol bi najraje uporabili. Večina bo odgovorila SOAP. Je pa tudi možnost JSON sporočil, če želiš.
technolog ::
Sej ti pravim, v windows svetu so stvari messed up. Na linuxu vedno gre.
Verjetno se bo dalo na nek način pohekat, če se bo komu, ki mora 200 Windows XP blagajn vzdrževat to bolj splačalo.
@perci: Ja, to bodo rekli .NETovci. Javanci bi najbrž raje videli RMI oz. kaj podobnega. Se pa strinjam, da mora bit varnost in avtentikacija na prvem mestu.
Verjetno se bo dalo na nek način pohekat, če se bo komu, ki mora 200 Windows XP blagajn vzdrževat to bolj splačalo.
@perci: Ja, to bodo rekli .NETovci. Javanci bi najbrž raje videli RMI oz. kaj podobnega. Se pa strinjam, da mora bit varnost in avtentikacija na prvem mestu.
Zgodovina sprememb…
- spremenil: technolog ()
perci ::
Če so že hekerji na tem področju, se bodo verjetno ukvarjali s kako banko...je bolj profitabilno :)
Dej mal pamet v roke pa razmišljaj.
Situacija: Pride inšpektor in ti da 100 jurjev kazni, ker nisi pravilno poslal računa v potrditev. Potem ti rečeš, da si ti ta račun pravilno poslal v potrditev, ampak ga je finančna uprava ustrezno "popravila", zato da bi ti lahko zaračunala kazen. To je lahko naredila, ker uporablja zastarele protokole in je posledično pridobila tvoj privatni ključ. Finančna uprava reče, da tega ni storila. Kdo bo zdej komu lahko kaj dokazal?
In prekrška ne bo. Zelo simpl.
Kapiraš zdej?
mkrin ::
@Chuck Borris - hvala, pozabil sem na header: request.Headers.Add(@"SOAPAction: /echo");
@PrimozHisof - certifikati so sedaj ustrezni, za FrameWork pa se dobi package, vendar nisem pa prepričan da bo s 4.5 potem deloval TLS.
http://www.microsoft.com/en-us/download...
@PrimozHisof - certifikati so sedaj ustrezni, za FrameWork pa se dobi package, vendar nisem pa prepričan da bo s 4.5 potem deloval TLS.
http://www.microsoft.com/en-us/download...
PrimozHisof ::
Ja. Potem lahko odpremo odpad za XP računalnike in CE/Embedded blagajne.
Kupimo za 1 EURO - pa ja je kaj zlata na vezjih :)
Probali s 4.0 na XP, pa ne gre, mscorlib.dll napaka
Kupimo za 1 EURO - pa ja je kaj zlata na vezjih :)
...za FrameWork pa se dobi package, vendar nisem pa prepričan da bo s 4.5 potem deloval TLS.http://www.microsoft.com/en-us/download...
Probali s 4.0 na XP, pa ne gre, mscorlib.dll napaka
Zgodovina sprememb…
- spremenil: PrimozHisof ()
PrimozHisof ::
Smo pa zlinkali testno v VisualStudio 2015 na windows8 Framework 4.5 in špila.... :) :) :)
MH0 ::
PrimozHisof je izjavil:
Smo pa zlinkali testno v VisualStudio 2015 na windows8 Framework 4.5 in špila.... :) :) :)
Podpisovanje ti tudi deluje?
PrimozHisof ::
Zaenkrat smo testirali le echo (TLS12 zajebaval), na eDavkih so pa zdaj 4 certifikati, moramo še sprobat
Spura ::
Chuck Borris je izjavil:
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
Well that's a nice security hole.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne - PHPOddelek: Programiranje | 6203 (1249) | vsepocenv |
» | C# davčno potrjevanjeOddelek: Programiranje | 4321 (3790) | windigo |
» | E-računOddelek: Programiranje | 7422 (4185) | ivanhoe5x |
» | PHP davčna blagajnaOddelek: Programiranje | 8044 (6068) | brble |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3167 (1897) | peterv6i |