Übertragung der fertigen XML per VBA

    • Übertragung der fertigen XML per VBA

      Hallo

      Ich erstelle (ca. 50 Rechnungen monatlich) relativ schnell per VBA. Die XML-Dateien sind somit schon vorhanden, und werden seit mind. 2 Jahren per Dateiupload hochgeladen.
      Nun will ich aber auf Webservice umstellen.
      Leider hab ich da nichts gefunden, das mir weitergeholfen hat.

      natürlich will ich dies in der gleichen Software (MS Access) gleich in einem wischen hochladen.
      Hat hier jemand Codefragmente, mit denen ich die generierten XML-Dateien übertragen kann ?

      Es gibt ein Word Plugin, da sehe ich in der Beschreibung aber nur, wie ich dies ausfülle, ist dort der code für den Upload auch enthalten, sodaß ich diesen nutzen könnte ?

      Sollte es bereits eine Lösung/Beschreibung geben, dann sorry, habe trotz suche nichts gefunden.

      lg Roland
    • Hallo Roland,
      keine Ahnung wie das im Detail geht, aber im Thread eRechnung.gv.at Webservice-Einlieferung auf der Commandline siehst du wie man es "generisch" auf der Commandline macht.
      Wenn du es also schaffst die SOAP-Nachricht korrekt zusammen zu basteln, musst du "nur noch" einen HTTPS-Verbindung zu unserem Server aufbauen (Achtung: nur TLS 1.x und KEIN SSL v3), und es per HTTP POST rüberschicken. Die Antwort ist synchron wieder eine SOAP-Nachricht in der dann drin steht, ob es technisch okay war oder nicht.

      Fertiges Code-Snippet für VBA hab ich nicht.

      lg Philip
    • Hallo Philip

      Irgendwie komme ich nicht weiter.

      Ich habe aktuell:
      <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <env:Header><wsse:Security><wsse:UsernameToken><wsse:Username>s000irgendwas</wsse:Username><wsse:Password>*habIch*</wsse:Password></wsse:UsernameToken></wsse:Security></env:Header><env:Body><erb:deliverInvoiceInvoiceInput xmlns:erb="http://erb.eproc.brz.gv.at/ws/invoicedelivery/201306/"><erb:Invoice encoding="UTF-8">PD9***Inhalt_gekürzt**I6SW52b2ljZT4=</erb:Invoice><erb:Settings test="true" language="de"/></erb:deliverInvoiceInvoiceInput></env:Body></env:Envelope>

      in einer wurscht als UTF-8 Datei.
      VBA Code, der mir das an txm.portal.at/at.gv.bmf.erb.test/V2 versucht hochzuladen
      Da bekomme ich als Antwort den Fehler 500 (heißt für mich, ich schaffe es dort anzudocken und etwas hinzuschicken)

      curl installiert, mit folgendem befehl:
      curl -H "Content-Type: text/xml; charset=utf-8" -X POST -d @ausgabe.txt -k txm.portal.at/at.gv.bmf.erb.test/V2
      bekomme ich einen timeout:
      curl: (7) Failed to connect to txm.portal.at port 80: Timed out

      Der angepinnte Thread ist aus 2013/2014, vielleicht gabs da inzwischen weitere Änderungen, die dort nicht mehr enthalten sind ?

      Gibt es auch die Möglichkeit eines direkten Teschnischen supports (per Mail oder so) ?

      lg Roland
    • Hallo

      So weit komme ich garnicht, ich versuche etwas an

      Quellcode

      1. https://txm.portal.at/at.gv.bmf.erb.test/V2

      zu schicken, aber es wird hier schon mal nichts angenommen, ich bekomme als responseText das gleiche, wie wenn ich die URL im Browser aufrufe.

      Die eigentliche Authentifizierung erfolgt ja erst im XML Statement (zumindest steht dies so in der Anleitung)

      In einem anderen Projekt gebe ich noch ein paar Headerdaten beim Aufruf mit (Nicht erst im zu sendenden XML)

      Roland
    • Hallo,

      Okay, blöde Sache.
      1. Ist der XML-Header "<?xml version="1.0" encoding="utf-8"?>" enthalten und in einer eigenen Zeile?
      2. Die notwendigen HTTP-Header sind in dem referenzierten Thread enthalten:

      Content-Type: text/xml; charset=utf-8
      SOAPAction: "http://erb.eproc.brz.gv.at/ws/documentupload/20121205/wsupload/uploadDocumentRequest"

      (SOAP Action mit Quotes!)

      hth, P. Helger
    • Hallo

      so, mal wieder etwas zeit gehabt, ich komme weiter, bekomme nun folgende Fehelrinfo:

      HTML-Quellcode

      1. <SOAP-ENV:Fault><faultcode>Client.Authorization</faultcode><faultstring>Authorization Failure.</faultstring></SOAP-ENV:Fault>



      Die 2 Header sind gesetzt:


      Quellcode

      1. sURL = "https://txm.portal.at/at.gv.bmf.erb.test/V2"
      2. With xmlHtp
      3. .Open "POST", sURL, False
      4. .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
      5. .setRequestHeader "SOAPAction", "http://erb.eproc.brz.gv.at/ws/documentupload/20121205/wsupload/uploadDocumentRequest"
      6. .send upload
      7. antwort = .responseText
      8. End With

      den folgenden Code übermittle ich dann per send:


      XML-Quellcode

      1. <?xml version="1.0" encoding="utf-8"?>
      2. <env:Envelope xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"
      3. xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
      4. xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
      5. xmlns:xsd="http://www.w3.org/2001/XMLSchema/">
      6. <env:Header>
      7. <wsse:Security>
      8. <wsse:UsernameToken>
      9. <wsse:Username>s000y*******</wsse:Username>
      10. <wsse:Password>sf*******</wsse:Password>
      11. </wsse:UsernameToken>
      12. </wsse:Security>
      13. </env:Header>
      14. <env:Body>
      15. <deliverInvoiceInvoiceInput xmlns="http://erb.eproc.brz.gv.at/ws/invoicedelivery/201306/">
      16. <!-- Die Base64-codierte e-Rechnung mit dem Originalzeichensatz UTF-8: -->
      17. **...W1lbnQ+DQo8L2ViOkludm9pY2U+
      18. <!-- test="true" bedeutet Test-Flag gesetzt: -->
      19. <Settings test="true"/>
      20. </deliverInvoiceInvoiceInput>
      21. </env:Body>
      22. </env:Envelope>
      Alles anzeigen

      Wo müsste die Authorisation rein, wenn nicht hier ?
      Die zugangsdaten sind aus der Bestätigung "Webservicekonto Zugangsdaten für Firma XXXXXXXXXXX"

      lg Roland
    • Hallo Roland,

      schaut gut aus bis auf 2 Dinge:
      1. Haben Sie die Freischaltung für das Test-Webservice? Siehe erechnung.gv.at/erb?locale=de_AT&p=tec_test_ws Abschnitt Test-Endpunkt|Voraussetzungen?
      2. De RequestHeader "SOAPAction" muss die Anführungszeichen enthalten. Leider weiß ich nicht wie man in VBA korrekt maskiert, aber sinngemäß hier mit einem Backslash maskiert: "\"http://erb.eproc.brz.gv.at/ws/documentupload/20121205/wsupload/uploadDocumentRequest\""


      hth und vg

      P. Helger
    • Hallo

      Ich habs mit und ohne den Anführungszeichen probiert, in beiden fällen bekomme ich die gleiche Fehlermeldung mit der Authentifikation.
      Werde per mail anfragen, da ich die Option der testrechnung bei der Webservicerechte Verwaltung garnicht habe.

      R.

      PS: in VBA kann ich Anführungszeichen entweder über den ansi-code chr(34) oder mit "" machen, am anfang vom String kommen da 3 Anführungszeichen direkt hintereinander zusammen. eine Maskierung wie in Java z.b. wäre mir nicht bekannt (habs aber auch noch nicht geprüft)