» »

Davčne blagajne

Davčne blagajne

««
4 / 27
»»

anarho ::

ce bo kdo imel se tezave z Androidom ... Base64 razred, pri kodiranju wrapa tekst po defaultu in vmes dodaja '\n', zato je potrebno izrecno uporabiti flag 'NO_WRAP'.
npr.
Base64.encodeToString(json.getBytes('UTF-8'), Base64.URL_SAFE|Base64.NO_WRAP);


imam pa sedaj drug problem. Sam uporabljam Retrofit knjiznico in OkHttp klienta za komunikacijo z REST servici. Pri posiljanju tokena pride do napake:
{"fault":{"faultstring":"ExtractVariables ExtractVariables.BpExtractVATNumberJSON: Json path parsing failed for for flow variables copy.payload","detail":{"errorcode":"steps.extractvariables.JsonPathParsingFailure"}}}

meni zgleda kot bug v OkHttp klientu. Ce mi uspe resiti javim, ce pa je kdo ze naletel na isti problem in ga uspel resiti, pa prosim delite resitev z ostalimi.

Zgornjo napako dobim tudi pri posiljanju istega tokena kot je v dokumentaciji.

lp

Zgodovina sprememb…

  • spremenil: anarho ()

Mavrik ::

Hmm, probaj pognati Charles Proxy in pogledati kako se payload razlikuje od primera?
The truth is rarely pure and never simple.

inkanet ::

@anarho

A pošiljaš na pravi URL? Url-ja za račune in poslovni prostor sta pri JSON-u različna.

....v1/cash_registers/invoices/register za Poslovni prostor
....v1/cash_registers/invoices za Račune

Zgodovina sprememb…

  • spremenilo: inkanet ()

anarho ::

Mavrik je izjavil:

Hmm, probaj pognati Charles Proxy in pogledati kako se payload razlikuje od primera?

Mi ne rata ... na androidu napravi sem nastavil proxy networka, da posreduje klice prek racunalnika in vidim requeste in response ampak prikazuje cudne znake (kvadratki ipd). sem instaliral tudi Charlijev certifikat pa se vedno isto.
Mi pa isto napako javlja tudi ce hardkodiram JWT kot je v dokumentaciji, tako da ni problem v samem tokenu.

@inkanet, posiljam na razlicne ja. ne bi pa rad se z SOAPom ukvarjal leta 2015 ... ampak ocitno bom moral :S

Zgodovina sprememb…

  • spremenil: anarho ()

Chuck Borris ::

@DamjanD za .net 3.5 sem našel tole:
http://www.componentpro.com/doc/saml/wo...
ampak pri meni nič ne pomaga, če spreminjam machine.config

anarho ::

Glede na to da google za iskalni niz BpExtractVATNumberJSON vrne samo dva rezultata (to temo in moje vprasanje na stackoverflowu), zgleda kot da napako dejansko vraca server. Probal sem tudi brez Retrofita in OkHttp-ja in s tem izkljucil moznost napake v knjiznicah ki jih uporabljam. Enako napako dobim tudi pri uporabi Android APIja (HttpsURLConnection)

{"fault":{"faultstring":"ExtractVariables ExtractVariables.BpExtractVATNumberJSON: Json path parsing failed for for flow variables copy.payload","detail":{"errorcode":"steps.extractvariables.JsonPathParsingFailure"}}}


Po opisu napake sodec (predvidevam da prvi dve crki predstavljata BusinessPremise) ni mogel sparsat VAT stevilke iz JSONa ki predstavlja poslovni prostor. Ce to drzi potem mi ni jasno kaksno VAT stevilko, ce tega ni nikjer v definiciji BusinessPremise razreda in zakaj ne vrnejo navadn response z napako da shema ni skladna?

sfuzlalo se mi bo pocas. morm spet pisat pisat na furs :(

Zgodovina sprememb…

  • spremenil: anarho ()

inkanet ::

Vem da je trivialno ampak meni je isto napako javljalo ko sem podatke za račun pošiljal na URL od poslovnega prostora. Sem še enkrat preveril in mi naredi enako.

PrimozHisof ::

Danes so sporočili iz FURS, da dela povezava na XP SP3.
Končno imajo prav... FX 3.5, Tls 1.0.

vofra ::

ima ze kdo narejen command line exe za komunikacijo s FURS za Windows (32,64),
sedaj, ko ne bo vec potrebna QR koda, bi se mogoce lotil predelave

anarho ::

inkanet dejansko tako deluje kot da posiljam na naslov od racunov, saj ocitno tezi da ne more davka extractat iz json payloada (davek seveda ni del poslovnega prostora ampak racuna) ... no to je vceraj javljalo. danes ista koda javlja 404 "Napačni parametri vnosa" :S

anarho ::

pardon ... se vedno javlja isto napako. 404:Napacni parametri vnosa javlja ce v header ne dodas charset=UTF-8

perci ::

sedaj, ko ne bo vec potrebna QR koda, bi se mogoce lotil predelave
QR koda ne bo potrebna, če boš namesto tega zagotovil zapis zahtevnaih podatkov v kodi PDF417 ali kodi 128.

vofra ::

res, ampak pred tem rabim

>command line exe za komunikacijo s FURS za Windows (32,64)

izgleda, da tega se nihce nima, sem nasel ene tri hrvaske, ki pa (se) niso prilagojene nasem (FURSovem) sistemu

PrimozHisof ::

Chuck Borris je izjavil:

@DamjanD za .net 3.5 sem našel tole:
http://www.componentpro.com/doc/saml/wo...
ampak pri meni nič ne pomaga, če spreminjam machine.config

kaj če dodaš v registry še OID-e od SHA256, FX 4.0?
Nam še ni uspelo podpisati na 4.0. Smo predelali c#, ampak ni uspeha. Pa tudi če dvakrat kreiraš podpis na istih podatkih, je vsakič drugačen...tako Digest kot Signature..kaj je to za ena logika??

grandibal ::

Jaz podpisujem xml z libxmlsec in ga parsam z libxml2, pa mi noče parsati dokumenta, če je notri kakšen šumnik.
Če poskusim uporabiti latin1 encoding pa dobim vrnjeno Digitalni podpis ni ustrezen, brez šumnika pa gre normalno čez.

Ostalim deluje s šumniki normalno?

Mavrik ::

grandibal je izjavil:

Jaz podpisujem xml z libxmlsec in ga parsam z libxml2, pa mi noče parsati dokumenta, če je notri kakšen šumnik.
Če poskusim uporabiti latin1 encoding pa dobim vrnjeno Digitalni podpis ni ustrezen, brez šumnika pa gre normalno čez.

Ostalim deluje s šumniki normalno?


Ne razumem kaj počneš z latin1 (v 21. stoletju?!) če je v glavi definiran UTF-8 kot encoding?
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

grandibal ::

Mavrik je izjavil:

Ne razumem kaj počneš z latin1 (v 21. stoletju?!) če je v glavi definiran UTF-8 kot encoding?


To je bila samo ena izmed možnosti ki sem jih poizkusil, z UTF-8 mi noče parsati xmlja.

Strato5 ::

Tole s tole QR kodo je čedalje bolj annoying in vedno manj zanimivo...
sprobal sem že dve knjižnici za generiranje in če nastavim vse po specifikacijah (error correction L, version 3 itd) potem mi ena knjižnica generira kodo v velikosti 33x33 modulov (kar ni version 3, možno da knjižnica avtomatsko prilagodi verzijo količini podatkov ali kaj?...), druga knjižnica mi pa vrne dataoverflow exception... pač kao da je ZOI#davčna#časIzdaje vse skupaj preveč podatkov za version 3 QR kodo...

Vedno bolj imam občutek da so zadeve pisali kar neki politiki, brez da bi se posvetovali s "strokovnjaki".

V planu imam danes poslat še en mail na FURS, ker imm še nekaj drugih vprašanj zanje. Bom javil ko/če dobim kak odgovor.

LP, Matija7

vuego ::

Sej imaš prav. 29x29 je premalo za zahtevane podatke. Baje bo popravek v pravilniku.

theanswer3 ::

Sej sem napisal na eni od prejšnjih strani, da rabite generirat 33x33 kodo. Uradni odgovor iz fursa je bil to.

perci ::

Kot je bilo že večkrat povedano, se pripravlja sprememba pravilnika in vsebina kode ter vrste kod se bodo spremenile.

Zdej ne vem, kako ste vi navajeni delat, ampak če bi bil jaz na vašem mestu, ne bi tikal dela, ki se tiče generiranja in izpisa kod, dokler mi ne javijo končne rešitve.

PrimozHisof ::

dela nam povezava in tudi podpis na .NET Framework 4.0. !


Problem je bil naslednji

CryptoConfig.AddAlgorithm(GetType(System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...

to ne dela na FX 4.0. .... NI TEGA RAZREDA System.Deployment.Internal.CodeSigning

če pa kreiramo svoj C# DLL (osnovna koda je v VB) za description pa je OK

CryptoConfig.AddAlgorithm(GetType(HiFursLib.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
 
namespace HiFursLib
{ 
     public class RSAPKCS1SHA256SignatureDescription : SignatureDescription 
     { 
         /// <summary> 
         /// Registers the http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 algorithm 
         /// with the .NET CrytoConfig registry. This needs to be called once per 
         /// appdomain before attempting to validate SHA256 signatures. 
         /// </summary> 
         public static void Register()
         { 
             CryptoConfig.AddAlgorithm( 
                 typeof(RSAPKCS1SHA256SignatureDescription), 
                 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"); 
         } 
 
 
         /// <summary> 
         /// .NET calls this parameterless ctor 
         /// </summary> 
         public RSAPKCS1SHA256SignatureDescription()
         { 
             KeyAlgorithm = "System.Security.Cryptography.RSACryptoServiceProvider"; 
             DigestAlgorithm = "System.Security.Cryptography.SHA256Managed"; 
             FormatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureFormatter"; 
             DeformatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter"; 
         } 
 
 
         public override AsymmetricSignatureDeformatter CreateDeformatter(AsymmetricAlgorithm key)
         { 
             var asymmetricSignatureDeformatter =
(AsymmetricSignatureDeformatter)CryptoConfig.CreateFromName(DeformatterAlgorithm); 
             asymmetricSignatureDeformatter.SetKey(key); 
             asymmetricSignatureDeformatter.SetHashAlgorithm("SHA256"); 
             return asymmetricSignatureDeformatter; 
         } 
 
 
         public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
         { 
             var asymmetricSignatureFormatter =
(AsymmetricSignatureFormatter)CryptoConfig.CreateFromName(FormatterAlgorithm); 
             asymmetricSignatureFormatter.SetKey(key); 
             asymmetricSignatureFormatter.SetHashAlgorithm("SHA256"); 
             return asymmetricSignatureFormatter; 
         } 
     } 
 } 
 

Zgodovina sprememb…

anarho ::

Jaz lahko potrdim da smo uspešno implementirali celoten proces na Androidu s pomočjo REST storitev in JSON sporočil.
Nekaj opozoril za ostale ki bodo sli po podpobni poti.

Base64 v Androidu po defaultu dodaja '\n' pri kodiranju sporočil, zato je potrebno pri enkripciji uporabljati dodaten flag NO_WRAP.
Ce bo kdo uporabljal Retrofit knjiznico, priporocam da v @Body vstavlja TypedInput in ne String saj le tega knjiznica se enkrat pretvori v JSON in pri tem zamenja nekatere znake (kot npr enačaj) s primernim UNICODEom. Lahko se tudi nastavi lasten Gson converter z uporabo nastavitve 'disableHtmlEscaping()'.

Malce nejasno je v dokumentaciji zapisano kaj se pravzaprav podpisuje zato se enkrat ... podpisuje se:
BASE64URL(UTF8(JWS Header)) + "." + BASE64URL(Payload)

lp

Zgodovina sprememb…

  • spremenil: anarho ()

perci ::

no, zdej boš moral pa še mal popravit zadevo, ko pride nov pravilnik :)

anarho ::

te spremembe ne bodo bistveno vplivale na proces fiskalizacije racunov in registracije prostorov ... kokr razumem se bo spremenil algoritem za generiranje ZOIja kar pa za sabo povlece spremembo ene ali dveh vrstic kode.

perci ::

nekaj se govori o dvosmernem TLS :)

miran123 ::

Je kdo kaj naredil da bi importal
WSDL: FiscalVerification.wsdl

in preko tega delal.

miran123 ::

<?php
  
    $url = 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers';
    $Cert = '/home/usb/Desktop/php/test-tls.cer';
    $xml_string = file_get_contents('/home/usb/Desktop/php/PrimerDokumentacijaPrijavaProstoraXmlPodpisan.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();
  
?>


Uporabil sem objavljen primer na nihovi strani
PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml

Pa mi javi tole:

PHP Fatal error:  Uncaught exception 'Exception' with message 'CODECURL: SSL certificate problem: self signed certificate in certificate chain' in /home/usb/Desktop/php/fis.php:38
Stack trace:
#0 {main}
  thrown in /home/usb/Desktop/php/fis.php on line 38

Zgodovina sprememb…

  • spremenilo: miran123 ()

sajmons ::

Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.

Se še komu to dogaja?

miran123 ::

Prijava prostora.
Tole mi javi moj program
***********************************
TLS handshake successful
Response: 200 OK, data...
188...
Finished.
Disconnected.
***********************************


Tole je pa odgovor iz durs serverja:
*************************************************
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657740899</body></html>
**************************************************



Poslal sem DURS PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml
in uporabil test-tls.cer

Zgodovina sprememb…

  • spremenilo: miran123 ()

sajmons ::

miran123: Kakšen pa je ta requested URL?

grandibal ::

miran123 je izjavil:


Poslal sem DURS PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml
in uporabil test-tls.cer


Zgleda kot da uporabiš napačen certifikat, poskusi še z ostalimi.

theanswer3 ::

sajmons je izjavil:

Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.

Se še komu to dogaja?

Preveri če se TaxNumber in BusinessPremiseID na XML-u od poslovnega prostora ujemata s tistima na XML-u od računa.

miran123 ::

sajmons je izjavil:

miran123: Kakšen pa je ta requested URL?


https://blagajne-test.fu.gov.si:9002/v1/cash_registers

miran123 ::

unit mainhttcptest;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, lNet, lHTTP,
  lNetComponents, ExtCtrls, StdCtrls, Buttons, Menus, lHTTPUtil;
  
type

  { TMainForm }

  TMainForm = class(TForm)
    ButtonSendRequest: TButton;
    EditURL: TEdit;
    HTTPClient: TLHTTPClientComponent;
    LabelURI: TLabel;
    SSL: TLSSLSessionComponent;
    MainMenu1: TMainMenu;
    MemoHTML: TMemo;
    MemoStatus: TMemo;
    MenuItemExit: TMenuItem;
    MenuItemAbout: TMenuItem;
    MenuItemHelp: TMenuItem;
    MenuItemFile: TMenuItem;
    MenuPanel: TPanel;
    PanelSep: TPanel;
    procedure ButtonSendRequestClick(Sender: TObject);
    procedure EditURLKeyPress(Sender: TObject; var Key: char);
    procedure HTTPClientDisconnect(aSocket: TLSocket);
    procedure HTTPClientDoneInput(ASocket: TLHTTPClientSocket);
    procedure HTTPClientError(const msg: string; aSocket: TLSocket);
    function HTTPClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar;
      ASize: dword): dword;
    procedure HTTPClientProcessHeaders(ASocket: TLHTTPClientSocket);
    procedure MenuItemAboutClick(Sender: TObject);
    procedure MenuItemExitClick(Sender: TObject);
    procedure SSLSSLConnect(aSocket: TLSocket);
  private
    HTTPBuffer: string;
    procedure AppendToMemo(aMemo: TMemo; const aText: string);
    { private declarations }
  public
    { public declarations }
  end; 

var
  MainForm: TMainForm;

implementation

{ TMainForm }

procedure TMainForm.HTTPClientError(const msg: string; aSocket: TLSocket);
begin
  MessageDlg(msg, mtError, [mbOK], 0);
end;

procedure TMainForm.HTTPClientDisconnect(aSocket: TLSocket);
begin
  AppendToMemo(MemoStatus, 'Disconnected.');
end;

procedure TMainForm.ButtonSendRequestClick(Sender: TObject);
var
  aHost, aURI: string;
  aPort: Word;
  XMLFile: TStrings;
  request:TClientRequest;
begin
  HTTPBuffer := '';
  SSL.SSLActive := DecomposeURL('https://blagajne-test.fu.gov.si:9002/v1/cash_registers', aHost, aURI, aPort);


  HTTPClient.Host := aHost;       //aHost = 'blagajne-test.fu.gov.si'
  HTTPClient.URI  := aURI;        //aURI = '/v1/cash_registers'
  HTTPClient.Port := aPort;       // aPort = 9002

    XMLFile:= TStringList.Create;
   try
   XMLFile.LoadFromFile('/home/usb/Desktop/php/PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml'); //tole je nespremenjen na dursu.

  // HTTPClient.Method:= hmPost;



   HTTPClient.AddExtraHeader(XMLFile.Text);

   XMLFile.Clear;
   XMLFile.LoadFromFile('/home/usb/Desktop/php/key/test-tls.cer');
 // XMLFile.LoadFromFile('/home/usb/Desktop/php/key/sitest-ca.cer');
  //  XMLFile.LoadFromFile('/home/usb/Desktop/php/key/TaxCATest.cer');

   HTTPClient.AddExtraHeader(XMLFile.Text);

   finally
     XMLFile.Free;
   end;


  HTTPClient.SendRequest;
end;

procedure TMainForm.EditURLKeyPress(Sender: TObject; var Key: char);
begin
  if Key = #13 then
    ButtonSendRequestClick(Sender);
end;

procedure TMainForm.HTTPClientDoneInput(ASocket: TLHTTPClientSocket);
begin
  aSocket.Disconnect;
  AppendToMemo(MemoStatus, 'Finished.');
end;

function TMainForm.HTTPClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar;
  ASize: dword): dword;
var
  oldLength: dword;
begin
  oldLength := Length(HTTPBuffer);
  setlength(HTTPBuffer,oldLength + ASize);
  move(ABuffer^,HTTPBuffer[oldLength + 1], ASize);
  MemoHTML.Text := HTTPBuffer;
  MemoHTML.SelStart := Length(HTTPBuffer);
  AppendToMemo(MemoStatus, IntToStr(ASize) + '...');
  Result := aSize; // tell the http buffer we read it all
end;

procedure TMainForm.HTTPClientProcessHeaders(ASocket: TLHTTPClientSocket);
begin
  AppendToMemo(MemoStatus, 'Response: ' + IntToStr(HTTPStatusCodes[ASocket.ResponseStatus]) +
                    ' ' + ASocket.ResponseReason + ', data...');
end;

procedure TMainForm.MenuItemAboutClick(Sender: TObject);
begin
  MessageDlg('Copyright (c) 2006-2008 by Ales Katona and Micha Nelissen. All rights deserved :)',
             mtInformation, [mbOK], 0);
end;

procedure TMainForm.MenuItemExitClick(Sender: TObject);
begin
  Close;
end;

procedure TMainForm.SSLSSLConnect(aSocket: TLSocket);
begin
  MemoStatus.Append('TLS handshake successful');
end;

procedure TMainForm.AppendToMemo(aMemo: TMemo; const aText: string);
begin
  aMemo.Append(aText);
  aMemo.SelStart := Length(aMemo.Text);
end;

initialization
  {$I mainhttcptest.lrs}

end.                  





<?xml version="1.0" encoding="utf-8"?><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:BusinessPremiseRequest Id="data">
			<fu:Header>
				<fu:MessageID>d9e022a8-362c-4aba-857d-c2b4e79295bd</fu:MessageID>
				<fu:DateTime>2015-10-01T12:07:28</fu:DateTime>
			</fu:Header>
			<fu:BusinessPremise>
				<fu:TaxNumber>99999862</fu:TaxNumber>
				<fu:BusinessPremiseID>36CF</fu:BusinessPremiseID>
				<fu:BPIdentifier>
					<fu:RealEstateBP>
						<fu:PropertyID>
							<fu:CadastralNumber>365</fu:CadastralNumber>
							<fu:BuildingNumber>12</fu:BuildingNumber>
							<fu:BuildingSectionNumber>3</fu:BuildingSectionNumber>
						</fu:PropertyID>
						<fu:Address>
							<fu:Street>Dunajska cesta</fu:Street>
							<fu:HouseNumber>24</fu:HouseNumber>
							<fu:HouseNumberAdditional>B</fu:HouseNumberAdditional>
							<fu:Community>Ljubljana</fu:Community>
							<fu:City>Ljubljana</fu:City>
							<fu:PostalCode>1000</fu:PostalCode>
						</fu:Address>
					</fu:RealEstateBP>
				</fu:BPIdentifier>
				<fu:ValidityDate>2100-08-25</fu:ValidityDate>
				<fu:SoftwareSupplier>
					<fu:TaxNumber>24564444</fu:TaxNumber>
				</fu:SoftwareSupplier>
				<fu:SpecialNotes>Primer prijave poslovnega prostora</fu:SpecialNotes>
			</fu:BusinessPremise>
		<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><Reference URI="#data"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>mqBkm+EhzlSunaTRw289IQ8/013GIQsKcFavXymJu4k=</DigestValue></Reference></SignedInfo><SignatureValue>NRVae9V4z9GGLQk96rUi5GE2dBiqtwHivYvK0nFSftP7wONIRwSOxQUfPTXZMGTUYxaWDolayO3n1Sm3uAfWhdHQWSWJmwaSJiHlOl8M4dbKciR7tsZpQEA75i1pRn7L7xcmBkAbDUKSU9kPsopQ3ZqmYGjozLs76ByEe//h2r1dCrDVARpCjCOmjhmUVcXqiNKUWU+f+HB1t2uL6GTq4zN3jw7mK/r5aDqGHfMkKdh9VYUdEMNkkXnZWoR9aHIsLeaC0SJM5ulk5UWaDYH23nhxE3cOSQp5TQNqrAlHNQAiXYybp61XfNTpeiq7M1ccUWCAuRNKhtswj6y5Ic4QQg==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>CN=Tax CA Test, O=state-institutions, C=SI</X509IssuerName><X509SerialNumber>2575988469811686647</X509SerialNumber></X509IssuerSerial><X509SubjectName>CN="ITM STORITVE, ŠPELA PERGAR S.P.", SERIALNUMBER=1, OU=99999862, OU=DavPotRacTEST, O=state-institutions, C=SI</X509SubjectName></X509Data></KeyInfo></Signature></fu:BusinessPremiseRequest>
	</soapenv:Body>
</soapenv:Envelope>



Tole javi program
TLS handshake successful
Response: 200 OK, data...
188...
Finished.
Disconnected.


Tole dobimi od durs serverja.

<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657626593</body></html>

DamijanD ::

@PrimozHisof: Meni in Chucku Borrisu tudi deluje na 4.0, nisva pa uporabila lastne implementacije opisa, ampak sva kar uporabila Security.Cryptography.dll

S tem je meni delovalo tudi na XPjih (SP3 + POSReady 2009 registry vnos + KB3055973)

@Chucku Borris: Ni mi uspelo, da bi zadeva delovala v 3.5, ampak ni tak velik problem, ker (na srečo) ni bilo težav pri portanju aplikacije v 4.0. Tako, da jaz se s 3.5 ne bom več ukvarjal... Si ti imel kaj več uspeha?

@miran123: Kako importat wsdl je opisal Chuck na prvi ali drugi strani. Jaz s tem echo lahko delam, ni mi pa jasno kako bi podpisoval te objekte, tako da jaz delam ročne webrequeste.

sajmons ::

Sem preveril že nekajkrat :(

theanswer3 je izjavil:

sajmons je izjavil:

Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.

Se še komu to dogaja?

Preveri če se TaxNumber in BusinessPremiseID na XML-u od poslovnega prostora ujemata s tistima na XML-u od računa.

vuego ::

Odstrani tag "closingTag" iz BusinessPremise XML-ja in poizkusi ponovno.

Če je ta tag prisoten pomeni, da je enota zaprta.

lp

sajmons ::

Vuego: svaka čast! To je bilo to. Kam ti pošljem pir? :)

vuego je izjavil:

Odstrani tag "closingTag" iz BusinessPremise XML-ja in poizkusi ponovno.

Če je ta tag prisoten pomeni, da je enota zaprta.

lp

51M3K ::

Tudi jaz se ukvarjam z enim problemom, katerega sem že zasledil v tej temi, rešitve pa še nimam.

Podpisujem XML za poslovni prostor, pa vedno dobim odgovor, da digitalni podpis ni ustrezen.

<fu:ErrorCode>S003</fu:ErrorCode>
<fu:ErrorMessage>Digitalni podpis ni ustrezen</fu:ErrorMessage>


Imam XML z ustrezno vsebino http://pastebin.com/xDCEqCWS
Podpisujem skoraj enako kot je v testnem primeru s potrdilom, ki so mi ga poslali http://pastebin.com/nxDkJx6B
(razlika je samo, da naložim certifikat iz datoteke, ne izberem ga iz shrambe in da uporabim del kode iz Security.Cryptography.dll za definicijo SHA256, ker je v frameworku 4.0 ni)
Dobim podpisan XML, ki ga pošljem na strežnik http://pastebin.com/4U0HTtcg
in dobim odgovor, da podpis ni ustrezen.

Če kdo kaj ve, se priporočam.

Lp, S.
Loading...

sajmons ::

Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);

// sledi koda za podpis

51M3K ::

sajmons je izjavil:

Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);

// sledi koda za podpis


To imam že od začetka, žal ni v tem problem.

p.s.: Zgoraj ko sem objavil XML na pastebin, je SoftwareSupplier TaxNumber dolga 7 znakov in ne ustreza shemi; to sem naredil samo za zakritje informacij, drugače je vsebina pri podpisovanju in pošiljanju ustrezna.
Loading...

sajmons ::

Kaj pa pravi schema validator?

51M3K je izjavil:

sajmons je izjavil:

Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);

// sledi koda za podpis


To imam že od začetka, žal ni v tem problem.

p.s.: Zgoraj ko sem objavil XML na pastebin, je SoftwareSupplier TaxNumber dolga 7 znakov in ne ustreza shemi; to sem naredil samo za zakritje informacij, drugače je vsebina pri podpisovanju in pošiljanju ustrezna.

51M3K ::

Vsebina ustreza shemi, vse je ok. Pravim samo, da sem zgoraj, ko sem objavil kodo, nepodpisan in podpisan XML, za zakritje informacij spremenil nekatere podatke v XMLju in sem dal v SoftwareSupplier TaxNumber 1234567, moral pa bi dat 12345678, da bi blo ok, da ne bo kdo mislil, da mi zaradi tega ne dela.
Loading...

sajmons ::

51m3k: Mislim, da imaš problem v podpisu, ker moj izgleda precej drugače http://pastebin.com/9UaACa0L

grandibal ::

@51M3K
Kaj pa če spremeniš
<fu:BusinessPremiseRequest Id="test">
v
<fu:BusinessPremiseRequest Id="data">
in potem URI
<Reference URI="#data">
?
Mislim, da je "test" za Račun, "data" pa za Poslovni prostor, če ima to sploh kaj veze.

sajmons ::

Mislim da nima, ker meni je tudi s "test" šlo skozi.

51M3K ::

Ne, referenca nima vpliva, čeprav sem tudi to že poizkusil.

sajmons, najina podpisa sta razen podpisa (ki je isto dolg) in ostalih stvari, ki se ločijo glede na enega in drugega popolnoma enaka: http://pastebin.com/WazRe4zU
Loading...

sajmons ::

51M3K: ja, mogoče vsebinsko, ampak moj je kot si najbrž opazil brez praznih znakov (whitespace-ov) problem maš v neustrezni kanonikalizaciji.
XML Signature @ Wikipedia

grandibal ::

Meni v Delphi XE3 s komponento HTTPReqResp vrne vredu response, če pa uporabim INDY 10 IdHTTP komponento, pa vrne tole.

<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657630949</body></html>

Ali je kdo dobival tak odgovor, pa mu je uspelo rešit?
««
4 / 27
»»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne - PHP

Oddelek: Programiranje
116059 (1105) vsepocenv
»

C# davčno potrjevanje

Oddelek: Programiranje
163902 (3371) windigo
»

E-račun

Oddelek: Programiranje
217035 (3798) ivanhoe5x
»

PHP davčna blagajna

Oddelek: Programiranje
187610 (5634) brble
»

[JAVA] HTTPS client

Oddelek: Programiranje
173030 (1760) peterv6i

Več podobnih tem