eRechnung.gv.at Webservice-Einlieferung auf der Commandline

  • Hallo zusammen!

    Nachdem es immer wieder Fragen zu Thema Webservice-Einlieferung gibt, darf ich an dieser Stelle einen einfachen Weg vorschlagen, wie die Einlieferung per Webservice funktioniert.
    Als Voraussetzung benötigen Sie auf jeden Fall den USP-Webservice-User wie er auf https://www.erechnung.gv.at/erb?locale=de_AT&p=tec_test_ws beschrieben ist.

    [size=14]Webservice 2.0
    [/size]

    Danach befüllen Sie folgenden Template-SOAP-Request mit den im Anschluß erklärten Platzhaltern:

    [font='Courier New, Courier, mono']<?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oa…-secext-1.0.xsd">
    <env:Header>
    <wsse:Security>
    <wsse:UsernameToken>
    <wsse:Username>$USERNAME$</wsse:Username>
    <wsse:Password>$PASSWORD$</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="$ENCODING$">$BASE64$</erb:Invoice>
    <erb:Settings test="$TEST$" language="de"/>
    </erb:deliverInvoiceInvoiceInput>
    </env:Body>
    </env:Envelope>[/font]

    $USERNAME$ - der Webservice Benutzername
    $PASSWORD$ - das Passwort des Webservice Benutzers
    $ENCODING$ - das Encoding der verwendeten XML-Datei
    $BASE64$ - die Base64-binary kodierte XML-Rechnung
    $TEST$ - true (für eine Test-Einlieferung) oder false (für eine Echt-Einlieferung)

    Anschließend können Sie mit folgendem Befehl die Einlieferung starten:

    [font='Courier New, Courier, mono']curl -H "Content-Type: text/xml; charset=utf-8" -X POST -d @test.xml -k https://txm.portal.at/at.gv.bmf.erb.test/V2[/font]

    Hinweis: curl ist ein Kommandozeilen-Programm welches von http://curl.haxx.se/ gratis heruntergeladen werden kann (Windows, Linux etc.)
    Hinweis: der Aufruf geht davon aus, dass es die Datei "test.xml" im dem Verzeichnis gibt, in dem der Befehl abgesetzt wird (@test.xml heißt soviel wie "lese den Inhalt der Datei test.xml")
    Hinweis: das Encoding in der curl-Commandline muss mit dem Encoding des Template-XMLs übereinstimmen (hier in beiden Fällen utf-8)
    Hinweis: hier wird der Test-Endpunkt verwendet (https://txm.portal.at/at.gv.bmf.erb.test/V1) - für die Produktion muss stattdessen https://txm.portal.at/at.gv.bmf.erb/V1 verwendet werden! Achtung, es MUSS https verwendet werden - es gibt keine automatische Weiterleitung von http auf https.
    Hinweis: die SOAP-Nachricht MUSS UTF-8 kodiert sein!
    Hinweis: [font='Consolas, Courier New, Courier, monospace']<env:Envelope[/font] muss eine lange Zeile sein, und darf sich nicht über mehrere Zeilen erstrecken
    Hinweis: die SOAP-Action wird für V2 nicht mehr benötigt!
    Hinweis: für alle die Schwierigkeiten mit den SOAP-Nachrichten gibt es jetzt den SOAP-Tester: https://test.erechnung.gv.at/erb/de_AT/soap_tester

    Für curl etc. gibts keinen Support von mir!

    vg P. Helger

  • Guten Morgen,
    danke für die cURL Anweisung!

    Eine organisatorische Frage:
    beim Einliefern braucht man ja UserName und Passwort des WebServiceBenutzers.

    Wie geht man hier organisatorisch am vernünftigsten vor?
    Ein Unternehmen legt mehrere? Webservice-Benutzer für mehrere Bereiche (Divisions, Rechnungslegungsversantwortliche)? an.
    Nicht der Einbringer (zb. der Rechnungssachbearbeiter) muß sich identifizieren, sonden ein vom Unternehmen benannter (named) User.

    Man will ja auch nicht, daß der WebService-benutzer in die Einkommenssteuer des Unternehmens schauen darf/soll.

    Liege ich da einigermaßen richtig??

    Danke

    Franz Reinisch

    ps.: gestern gab es abends laufend Ausfälle beim Anmelden am USP-Portal.
    Da muß man dann auch wohl einges an Prüfungen einbauen, was zu tun ist, wenn diverse "Komponenten" der Batch-Einbrungung nicht laufen.
    403er waren es gestern!!
    http://www.maint.at/bilder/saegeza…on_20131023.jpg

  • Man will ja auch nicht, daß der WebService-benutzer in die Einkommenssteuer des Unternehmens schauen darf/soll.


    Man kann im USP spezifisch einstellen, welche Rechte ein WebService-Benutzer haben soll. Es ist möglich einzustellen, dass dieser nur Rechnungen einbringen darf.

  • Hallo Hr. Helger!

    Danke für das Script!

    ich habe die Einbringung einer E-Testrechnung mit Ihrem command-script versucht.

    Irgend etwas mache ich da falsch!

    Ich habe den ganzen Code als test.xml mit der xml-E-Rechnung in das gleich verzeichnis wie -curl- abgelegt.

    Die Ersatzfelder wie

    $USERNAME$ --- mit meinem usernamen

    $PASSWORD$ --- mit meinem Password

    $ENCODING$ --- mit 'ISO-8859-1'

    $BASE64$ --- mit dem namen des E-Rechnungs-XML -Files und

    $TEST$ ---- mit 'true'

    ausgefüllt.

    Nach dem Aufruf in der cmd-Zeile (Eingabeaufforderung).... curl -H ... bekomme ich eine Fehlermeldung.

    Die Meldung:

    curl: no URL specified!

    curl: try 'curl --help' or 'curl --manual' for more information


    Ist in dem oben angeführten Script oder im Aufruf noch irgend ein Fehler oder fehlt noch was??

  • Hr. Helger!

    Das wird ein echt langer String!

    Bei dem von Ihnen angegebener Web-Adresse gibt es die Möglichkeit den XML-File als binary_file abzulegen.

    Kann man eventuell diesen Filename (base64.bin) anstatt des Strings verwenden??

    Man könnte den XML-File mittels programm automatisch Base64-encoden und den bin-file ausgeben und dann diese mit curl versenden:

  • Danke Herr Helger und helfen Sie auch beim cURL, das erhäht das B...guthaben ;-))))

    Eine von mir abgeschickte Testrechnung mit Echtdaten hat an den Rechnungssender eine Mail gesendet: (passt eh!!)

    Zitat

    Ihre E-Rechnung mit der Rechnungsnummer 201300332 wurde erfolgreich
    angenommen.

    Mit freundlichen Grüßen,
    Ihr ER>B-Team, https://www.erb.gv.at


    Der arme Kerl wußte natürlich von NICHTS davon und das Wort TEST ERB im Subject wurde nicht wahrgenommen.

    Da ist eben die Frage aufgetaucht, ob ich als ebInterface (Software-Modul) Anbieter einfach irgendwelche Rechnungen versenden darf.
    OK- ganz gut, Ich brauch das für die erste Phase, bis es ausreichend WebService Accounts gibt, aber in Wirklichkeit könnte ich IRGENDWELCHE Rechnungen versenden und ÄRGER verursachen.

    Stimmt der ABlauf so wirklich???
    Müßte nicht ich ein genehmigter Webservicebenutzer (E-Rechnungs-Einbringer) meiner Kunden sein??

    Soweit unser Stand

    f. Reinisch

    ps.: und die Dienststellen weigern sich, die Daten rauszurücken, Justiz, Staatsanwaltschaften und Landesgerichte.
    Das wir ein Langer Abend dann am 2.1.2014 ;-))
    Da kommen wir alle zu Ihnen ins Büro !!!!!

  • Das wird ein echt langer String!

    Bei dem von Ihnen angegebener Web-Adresse gibt es die Möglichkeit den XML-File als binary_file abzulegen.

    Kann man eventuell diesen Filename (base64.bin) anstatt des Strings verwenden??

    Man könnte den XML-File mittels programm automatisch Base64-encoden und den bin-file ausgeben und dann diese mit curl versenden:

    Ja, das ist ein echt langer String! Aber deshalb ist das auch Maschine-zu-Maschine Kommunikation und nicht Mensch-zu-MAschine Kommunikation :)
    Aus einer XML-Datei standardisiert eine andere Datei zu referenzieren, und es dann noch von cURL auflösen zu lassen übersteigt meine Kenntnisse der Batch/Shell-Programmierung. Daher schreiben Sie die lange Wurst einfach an die Stelle rein - deshalb ist es ja eine Vorlage!

    vg P. Helger

  • @LIS.Reinisch sie haben als Firma einen Webservice-Benutzer, und tragen daher auch die Verantwortung für diesen.
    Am besten verwenden Sie zum Testen Ihre eigene Email-Adresse (/Invoice/BIller/Address/Email) statt die eines Kunden - dadurch wird die Wahrscheinlichkeit das sich jemand verwirrt fühlt statistisch nicht unrelevant gesenkt!

    Bzgl. Dienststellen: wie bereits in anderen Threads erwähnt: wenn Sie eine Lieferantennummer ergattert haben (z.B. per Brief), dann können Sie diese für alle Dienststellen des Bundes verwenden - ich hoffe das erleichert sie ein bisschen.

    Bzgl. 2.1.2014: ein paar Leute haben schon Platz - aber wir haben eine gemütliche Cafeteria - mit "Kaffee"-Automat.

    vg P. Helger

  • <h1>Internal Server Error</h1>
    <p>The server encountered an internal error or
    misconfiguration and was unable to complete
    your request.</p>
    <p>Please contact the server administrator.

    da 500 ist zum testen doch ein wenig WENIG ist, bitte ich um die EmailAdresse des Server Administrators,
    damit er mir die Details zu JETZT, 27.10.2013, 20:40 senden kann, damit ich weiter spielen kann.

    Franz Reinisch
    http://www.lis.aero

  • Guten Idee,
    aber:
    wir halten die Kunden an, jetzt scheunigst ihre Adressdaten auf Stand zu bringen.
    Dazu gehören auch die Emailadressen der unterschiedlichen Rechnungssteller.
    NEIN, nicht eine Firma stellt Rechnung, sondern die Personen der Firma.

    Genau das ist ja das (nicht technische, sondern ) organisatoriche AHA-Erlebnis.
    Technisch macht man eine Kommentarzeile bein Absender rein und schreibt die eigene Email rein, das ist zu schaffen, ABER:

    Ich darf e-Rechnungen von IRGENDJEMANDEN versenden, nur weil ich bei MIR als Einbringer freigeschaltet bin.

    Na dann probieren wir es mal.

    Reinisch
    http://www.lis.aero

  • da 500 ist zum testen doch ein wenig WENIG ist, bitte ich um die EmailAdresse des Server Administrators,
    damit er mir die Details zu JETZT, 27.10.2013, 20:40 senden kann, damit ich weiter spielen kann.


    Siehe https://www.erb.gv.at/index.jsp?p=info_channel_ws, Tab "Webservice 1.2", ganz unten:

    Zitat
    • HTTP 500 - Konto nicht vorhanden
    • HTTP 500 - Konto hat das notwendige Recht nicht zugewiesen
    • HTTP 302 - Passwort nicht korrekt
    • HTTP 302 - Konto ist gesperrt, da der User zu oft (4 mal) ein falsches Passwort mitgeschickt hat (Entsperrung im USP notwendig)

    hth P. Helger

  • <TAG>

    ich bin ja ziemllich hartnäckig, was das festbeissen in einen Lösungsvorgang betrifft,
    aber diese ganze USP-Anmelderei und Webservice-Rechte etc. - da bin ich echt gespannt, auf unseren 2.1. in der Kantine.

    reinisch

    Einmal editiert, zuletzt von LIS.Reinisch (29. Oktober 2013 um 15:39)

  • Sehr geehrter Herr Helger!

    Habe versucht, den Webservice laut Ihrer Beschreibung mit cURL zu realisieren. Prinzipiell bin ich der Meinung, dass ich alles richtig gemacht habe, bekomme beim Aufruf aber immer HTTP 500 Error (Konto nicht vorhanden). Ich habe dazu 100%ig die richtigen Webservice-Zugangsdaten. Beim USP Service Center hänge ich nur in der Warteschleife (anscheinend ist der Teufel los). Können sie mir hier vielleicht weiterhelfen, wie ich feststellen kann, warum USP der Meinung ist, dass mein Konto nicht vorhanden sei. Muss ich im USP noch etwas freischalten?


    Besten Dank im Voraus


    R. Lingg

  • Sehr geehrter Herr Helger!

    Mittlerweile habe ich den Verdacht, dass der HTTP 500 gar nichts mit dem Benutzerkonto zu tun hat - ich kann nämlich ein File mit Blödsinn übergeben und bekomme auch HTTP 500 Error.

    Deshalb habe ich Ihnen mein test.xml im Anhang. es ist im Originalzustand außer dem Passwort. Könnten sie mir das bitte Überprüfen und mir mitteilen, wo der Fehler liegt.

    Das wäre super.

    Besten Dank


    R.Lingg

  • Sehr geehrter Herr Helger!


    Meine beiden vorherigen Messages haben sich erledigt.

    Es war ein Zeichensatzproblem. Ich habe alles auf utf-8 umgestellt - und hat tadellos funktioniert.

    Eine Frage noch: Wenn ich Rechnungen mit dem Testflag übergebe, bekomme ich dann keine Emailbenachrichtigung, dass der Import erfolgreich bzw fehlerhaft war?

    Ich habe zwar einen [size=10]uploadDocumentResponse beim Aufruf mit cURL erhalten aber keine Emailbenachrichtigung.[/size]


    [size=10]Besten Dank[/size]

    [size=10]Mit freundlichen Grüßen[/size]

    [size=10]R.Lingg[/size]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!