KONTOPRUEF-Logo
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz

Beschreibung von HanftWddx

HanftWddx ist ein kostenloser COM-Server für Windows, der die Kommunikation mit dem Prüfserver durchführt und der aus fast allen Programmiersprachen/-Skripten heraus aufgerufen werden kann. Daneben ist eine ganz normale Benutzeroberfläche für Handeingabe enthalten. Sie können die Software hier herunterladen:

  • Installation:
    Rufen Sie HanftWddx.exe (mit Administratorrechten) einfach auf. Sie erhalten dann eine Windows-Oberfläche für eine Handeingabe der zu prüfenden Daten; gleichzeitig hat sich jedoch der COM-Server in Windows installiert. Wenn Sie den COM-Server "lautlos" installieren möchten (ohne Erscheinen der Benutzeroberfläche), können Sie HanftWddx /regserver aufrufen.
  • Deinstallation:
    Rufen Sie HanftWddx /unregserver (mit Administratorrechten) auf und löschen Sie danach die Datei HanftWddx.exe.
    Hinweis: Im Registry-Zweig HKEY_CURRENT_USER\Software\Hanft\HanftWddx bleiben Ihre Einstellungen (Benutzername, Kennwort, Proxy-Server etc.) für eine ggf. spätere Verwendung erhalten. Falls Sie das nicht möchten, müssen Sie diesen Registry-Zweig manuell per regedit entfernen.

Wie Sie den COM-Server benutzen können, finden Sie in den einzelnen Abschnitten unter Software-Integration (siehe Inhaltsverzeichnis links).

Vorab ein wichtiger Hinweis: Wann immer Ihre Software den COM-Server benutzt, wird in der Windows-Prozeßliste das Programm HanftWddx.exe gestartet. Dieser Programmstart dauert etliche Millisekunden und kann Serienprüfungen merklich verzögern. Sie sollten daher Ihre Software dahingehend programmieren, daß der COM-Server möglichst nur ein einziges Mal instantiiert (=gestartet) wird (also nur einmal CreateObject o.ä. aufrufen) und dann mit den diversen Prüfroutinen wie z.B. TestBlzKto diesen ein(zig)en gestarteten COM-Server verwenden.

Für eine genaue Beschreibung der Parameter- und der Ergebnisfelder sehen Sie bitte auf der Seite der Bankverbindungsprüfung bzw. der Adreßprüfung nach. Die genauen Definitionen der in HanftWddx enthaltenen Felder und Funktionen finden Sie hier:

  1. Gemeinsame Felder und Funktionen bei allen HanftWddx-Objekten
  2. Bankverbindungsprüfung
  3. Adreßprüfung
  4. USt-ID-Prüfung

1. Gemeinsame Felder und Funktionen bei allen HanftWddx-Objekten

  • Sub SetProxy(Host as String, Port as Integer, User as String, Pass as String)
    ist eine Prozedur, die den angegebenen Proxy-Server für alle folgenden Abfragen setzt (muß nur aufgerufen werden, falls ein Proxy-Server verwendet werden soll; ansonsten - oder mit leeren Parametern - wird eine direkte Verbindung hergestellt). User und Pass müssen nur in den seltenen Fällen angegeben werden, in denen Ihr Proxy-Server eine Authentifizierung verlangt, ansonsten können Sie diese Parameter einfach weg- oder leerlassen.
  • Property SSLMode as Integer
    gibt ab, ob und wie SSL (Secure Socket Layer) bei der Übertragung verwendet werden soll:
    • 0: Keine SSL-Übertragung (Voreinstellung)
      Alle Daten werden unverschlüsselt übertragen.
    • 1: Verschlüsselte SSL-Übertragung mit Zertifikatsprüfung
      SSL wird verwendet, und alle Zertifikate werden geprüft (d.h. Sie haben die Gewißheit, wirklich mit wddx.hanft.de verbunden zu sein und daß die gesamte Kette von Ihrem Rechner bis zum Prüfserver gesichert ist). Falls irgendeines der verwendeten Zertifikate nicht in Ordnung ist, wird das Ergebnis Result durch den Wert -250 (ERROR_CERTIFICATE) ersetzt, mit der Bedeutung: Das Serverzertifikat von wddx.hanft.de kann nicht geprüft werden. Den genauen Grund finden Sie im Antwortfeld resulttext. In der Regel liegt dieses Problem daran, daß in Ihrer Windows-Version das Zertifikat des Unterzeichners noch nicht installiert ist. Führen Sie ein Windows-Update durch und kreuzen Sie dort insbesondere das "Stammzertifikatupdate" an (möglicherweise wird es Ihnen nicht bei den "wichtigen", sondern bei den "optionalen" Updates angeboten). Falls Sie Ihre Windows-Version nicht updaten wollen, können Sie auch SSLMode=2 setzen; dann wird immer noch verschlüsselt übertragen, es wird jedoch nicht geprüft, ob es sich beim Server wirklich um wddx.hanft.de handelt (s.u.).
    • 2: Verschlüsselte SSL-Übertragung ohne Zertifikatsprüfung
      SSL wird verwendet (d.h. die Übertragung findet verschlüsselt statt); es werden jedoch keine Zertifikate geprüft.
  • Property Timeout as Integer
    gibt die Millisekunden an, wie lange auf eine Server-Antwort gewartet werden soll.

Nach oben

2. Bankverbindungsprüfung

  • Sub TestBlzKto(User, Pass, Blz, Kto, Land as String, ID as Integer, Name as String)
    ist eine Prozedur, die die angegebene Bankverbindung auf Gültigkeit prüft. Der Parameter Land steht erst ab Version 2.8.0 zur Verfügung! Bitte übergeben Sie immer Land="DE", ID=0 und Name="" (Leerstring) (für zukünftige Erweiterungen vorgesehen).
  • Sub TestIban(User, Pass, Iban as String, ID as Integer, Name as String)
    ist eine Prozedur, die die angegebene IBAN auf Gültigkeit prüft. Diese Funktion steht erst ab Version 3.1.0 zur Verfügung! Bitte übergeben Sie immer ID=0 und Name="" (Leerstring) (für zukünftige Erweiterungen vorgesehen).
  • Sub TestIbanBic(User, Pass, Iban as String, Bic as String, ID as Integer, Name as String)
    ist eine Prozedur, die die angegebene IBAN und den angegebenen BIC auf Gültigkeit prüft. Diese Funktion steht erst ab Version 3.2.0 zur Verfügung! Bitte übergeben Sie immer ID=0 und Name="" (Leerstring) (für zukünftige Erweiterungen vorgesehen).
  • Sub TestBic(User, Pass, Bic as String)
    ist eine Prozedur, die den angegebenen BIC auf Gültigkeit prüft. Diese Funktion steht erst ab Version 3.2.0 zur Verfügung!
  • Sub TestCc(User, Pass, Cc as String)
    ist eine Prozedur, die die angegebene Kreditkartennummer auf Gültigkeit prüft.
  • Sub Search(User, Pass, SearchString as String, Land as String, Fragments as Integer)
    ist eine Prozedur, die Banken sucht, auf die der angegebene Suchbegriff paßt. Es können (durch Zwischenräume getrennt) auch mehrere Suchbegriffe eingegeben werden, die dann automatisch UND-verknüpft werden.
    Ist Fragments=0, so wird nur nach ganzen Wörtern gesucht; mit Fragments=1 wird auch nach Wortteilen gesucht.
    Der Parameter Land steht erst ab Version 2.8.0 zur Verfügung; bitte geben Sie hier immer "DE" an.
  • Property Result as Integer
    liefert den Fehlercode der letzten Prüfung.
  • Property Resulttext as String
    liefert das Ergebnis der letzten Prüfung als lesbaren Text.
  • Property BankName as String
    liefert den Banknamen der letzten Prüfung (falls die angegebene Bank existiert).
  • Property NewBlz as String
    liefert ggf. die Nachfolge-Bankleitzahl (falls bekannt), nach folgenden Regeln:
    • Bei gültigen Bankleitzahlen (Result>=0):
      • Feld ist leer: Normale gültige Bankleitzahl
      • Feld ist 00000000: Bankleitzahl wird demnächst ungültig;
        Nachfolge-Bankleitzahl ist nicht bekannt
      • Feld ist xxxxxxxx: Bankleitzahl wird demnächst ungültig;
        Nachfolge-Bankleitzahl ist xxxxxxxx
    • Bei ungültigen Bankleitzahlen (Result=-1):
      • Feld ist leer: Bankleitzahl ist völlig unbekannt
      • Feld ist 00000000: Bankleitzahl wurde vor kurzem ungültig;
        Nachfolge-Bankleitzahl ist nicht bekannt
      • Feld ist xxxxxxxx: Bankleitzahl wurde vor kurzem ungültig;
        Nachfolge-Bankleitzahl ist xxxxxxxx
  • Property Iban as String
    liefert die IBAN der letzten Prüfung (falls die angegebene Bankverbindung in Ordnung ist).
  • Property Bic as String
    liefert den BIC der letzten Prüfung (falls die angegebene Bankverbindung in Ordnung ist und ein BIC ermittelt werden konnte).
  • Property Banken as Array of String
    liefert nach einer Bankensuche die gefundenen Banken im Format "Bankleitzahl|Bankname" zurück, wobei im ersten Element (Index 0) die Anzahl der folgenden Banken enthalten ist.
  • Property BankenString as String
    liefert nach einer Bankensuche die gefundenen Banken in einem einzigen String zurück, getrennt mit Tilde ("~"). Das erste Feld in diesem String gibt die Anzahl der folgenden Banken an.
  • Property BicName as String
    liefert nach einer BIC-Prüfung (mit TestIbanBic oder TestBic) den zum angegebenen BIC ermittelten Banknamen. Ist dieses Feld leer, wurde der angegebene BIC nicht im SCL-Directory gefunden (d.h. möglicherweise existiert der BIC zwar irgendwo auf der Welt, ist aber nicht "SEPA-connected"). Beginnt dieses Feld mit einem Stern "*", ist die Abfrage gescheitert; nach dem Stern "*" ist die zugehörige Fehlermeldung angegeben.
  • Property BicSct as Integer
    gibt nach einer BIC-Prüfung an, ob diese Bank für ankommende SEPA-Überweisungen ("Credit Transfer") erreichbar ist.
  • Property BicSdd as Integer
    gibt nach einer BIC-Prüfung an, ob diese Bank für ankommende SEPA-Basis-Lastschriften ("Core Direct Debit") erreichbar ist.
  • Property BicB2b as Integer
    gibt nach einer BIC-Prüfung an, ob diese Bank für ankommende SEPA-Firmen-Lastschriften ("Business to Business") erreichbar ist.

Obiges ist eine symbolische Schreibweise; in ASP, MS-Access oder Visual Basic etc. sieht der tatsächliche Aufruf ungefähr wie folgt aus:

Dim KtoPruef as Variant
Set KtoPruef = CreateObject("HanftWddx.KtoPruef")
KtoPruef.SetProxy("mein.proxy.de", 3128) ' nur falls benötigt
KtoPruef.SSLMode = 1 ' nur falls gewünscht
KtoPruef.TestBlzKto("Benutzername","Kennwort","Bankleitzahl","Kontonummer", "DE", 0, "")
ErgebnisAlsZahl = KtoPruef.Result
ErgebnisAlsText = KtoPruef.Resulttext
ErgebnisBankName = KtoPruef.BankName

Nach oben

3. Adreßprüfung

  • Property Rewrite as Integer
    erkennt, wenn gesetzt, auch Orte in falscher Schreibweise als gültig, d.h. z.B. nicht nur "Nürnberg", sondern auch "nürnberg", "Nuernberg", "nuernberg" oder gar "nuern-berg". Der postalisch korrekte Ortsname wird dann im Feld Rewritten (s.u.) zurückgeliefert.
    Bei Rewrite=0 (Voreinstellung) muß der Ortsname exakt passend übergeben werden (also mit richtiger Groß- und Kleinschreibung, Umlauten etc.), damit er als gültig erkannt wird – ansonsten wird Result=4 ("Postleitzahl gilt nur für andere Orte") zurückgeliefert.
    Insgesamt gibt es folgende Möglichkeiten für Rewrite:
    1. Es werden nur die "kurzen" Ortsnamen (wie z.B. "Rothenburg") als gültig akzeptiert, und Groß- und Kleinschreibung und Umlaute müssen ebenfalls 100% stimmen.
    2. Groß- und Kleinschreibung und Umlaute sind egal; es wird aber trotzdem nur der "kurze" Ortsname akzeptiert; der "schöne" (kurze!) Ortsname wird im Feld "Rewritten" zurückgegeben (also hin: "ro-then/BURG", zurück: "Rothenburg")
    3. wie 1, aber zusätzlich wird nun auch der lange Ortsname (ebenfalls in "unschöner" Schreibweise) akzeptiert (also z.B. "ROTHEN/burg,ob'der'TauBER"); das Feld "Rewritten" liefert stets den "kurzen" Ortsnamen zurück ("Rothenburg"), egal, ob der Kunde den kurzen oder langen Namen eingegeben hat
    4. wie 2, es wird aber immer der "lange" Ortsname im Feld "Rewritten" zurückgegeben ("Rothenburg ob der Tauber"), egal, ob der Kunde den kurzen oder langen Namen eingegeben hat.
    Wer also die Varianten Rewrite=2 oder Rewrite=3 nutzt, hat in jedem Fall die Gewißheit, daß "kurze" und "lange" Ortsnamen gleichermaßen akzeptiert werden. Mit der Unterscheidung 2 oder 3 kann man sich dann noch aussuchen, ob man z.B. seine Kundendatenbank einheitlich mit den "kurzen" oder "langen" Namen aufbauen will.
  • Sub Check(User, Pass, Plz, Ort as String)
    ist eine Prozedur, die die angegebene Plz-/Ort-Kombination auf Gültigkeit prüft.
  • Sub CheckStr(User, Pass, Plz, Ort, Str as String)
    ist eine Prozedur, die die angegebene Plz-/Ort-/Straße-Kombination auf Gültigkeit prüft.
  • Sub CheckStrHnr(User, Pass, Plz, Ort, Str, Hnr as String)
    ist eine Prozedur, die die angegebene Plz-/Ort-/Straße-/Hausnummer-Kombination auf Gültigkeit prüft.
  • Sub CheckPof(User, Pass, Plz, Ort, Pof as String)
    ist eine Prozedur, die die angegebene Plz-/Ort-/Postfach-Kombination auf Gültigkeit prüft.
  • Sub GetPlzType(User, Pass, Plz as String)
    ist eine Prozedur, die in die Ergebnisfelder den Typ der angegebenen Postleitzahl schreibt.
  • Property Result as Integer
    liefert den Fehlercode der letzten Prüfung.
  • Property Resulttext as String
    liefert das Ergebnis der letzten Prüfung als lesbaren Text.
  • Property Rewritten as String
    liefert, falls Rewrite=1 (s.o.) und die Postleitzahl-/Ort-Kombination in Ordnung ist, den Ortsnamen in der postalisch gültigen Form zurück (d.h. mit Umlauten, Groß-/Kleinschreibung etc.).
  • Property Str46 as String
    liefert, falls eine Straße geprüft und gefunden wurde, den (maximal 46 Zeichen langen) Straßennamen in der postalisch gültigen Form zurück (d.h. mit Umlauten, Groß-/Kleinschreibung etc.) – stets in der Form "...str.". Falls Sie also Ihre Kundendatenbanken lieber mit "...straße" füllen möchten, müssen Sie vor dem Abspeichern noch "str." in "straße" konvertieren.
  • Property Str22 as String
    liefert, falls eine Straße geprüft und gefunden wurde, den (ggf. abgekürzten, maximal 22 Zeichen langen) Straßennamen in der postalisch gültigen Form zurück (d.h. mit Umlauten, Groß-/Kleinschreibung etc.) – stets in der Form "...str.". Falls Sie also Ihre Kundendatenbanken lieber mit "...straße" füllen möchten, müssen Sie vor dem Abspeichern noch "str." in "straße" konvertieren.
  • Property Ortsteil as String
    liefert den Ortsteil zur angegebenen Adresse, falls er eindeutig ermittelt werden kann.
  • Property PlzOut as String
    liefert die korrekte Postleitzahl zur angegebenen Adresse, falls sie eindeutig ermittelt werden kann.
  • Property Orte as Array of String
    liefert, falls Result=4 ist, die "passenden" Ortsnamen zur angegebenen Postleitzahl der letzten Prüfung in einem Array, wobei im ersten Element (Index 0) die Anzahl der folgenden Orte enthalten ist.
  • Property OrteString as String
    liefert, falls Result=4 ist, die "passenden" Ortsnamen zur angegebenen Postleitzahl der letzten Prüfung in einem einzigen String, getrennt mit Tilde ("~"). Das erste Feld in diesem String gibt die Anzahl der folgenden Orte an. Der String kann also z.B. wie folgt aussehen:
    • 0
    • 1~Nürnberg
    • 2~Erlangen~Buckenhof
    • 3~Schwabach~Rednitzhembach~Kammerstein
    • usw.
  • Property AlteOrte as Array of String
    liefert, falls Result=4 ist, die ehemaligen und aktuellen Ortsnamen zur angegebenen Postleitzahl der letzten Prüfung in einem Array, wobei im ersten Element (Index 0) die Anzahl der folgenden Orte enthalten ist. Ein Eintrag hat die Form "±|Ehemaliger Ortsname|Aktueller Ortsname", wobei in der ersten Spalte "+" steht, wenn eine Übereinstimmung mit dem abgefragten Ortsnamen erkannt wurde, ansonsten "-".
  • Property AlteOrteString as String
    liefert, falls Result=4 ist, die ehemaligen und aktuellen Ortsnamen zur angegebenen Postleitzahl der letzten Prüfung wie oben, jedoch in einem einzigen String, getrennt mit Tilde ("~"). Das erste Feld in diesem String gibt die Anzahl der folgenden Einträge an. Der String kann also z.B. wie folgt aussehen:
    • 0
    • 1~+|Almoshof|Nürnberg
    • 2~-|Büchenbach|Erlangen~-|Tennenlohe|Buckenhof
    • usw.

Obiges ist eine symbolische Schreibweise; in ASP, MS-Access oder Visual Basic etc. sieht der tatsächliche Aufruf ungefähr wie folgt aus:

Dim myAddress as Variant
Set myAddress = CreateObject("HanftWddx.Address")
myAddress.SetProxy("mein.proxy.de", 3128) ' nur falls benötigt
myAddress.SSLMode = 1 ' nur falls gewünscht
myAddress.Check("Benutzername","Kennwort","Postleitzahl","Ortsname")
ErgebnisAlsZahl = myAddress.Result
ErgebnisAlsText = myAddress.Resulttext
if ErgebnisAlsZahl = 4 then ' Ortsliste übernehmen (Anzahl in .Orte[0])
  i = 1
  while myAddress.Orte[i] <> "" ' noch ein Ort
    ErgebnisOrte[i] = myAddress.Orte[i]
    i = i + 1 
  wend
endif

Nach oben

4. USt-ID-Prüfung

  • Sub Check(aUStID as String)
    ist eine Prozedur, die die angegebene USt-ID auf Gültigkeit prüft.
  • Property Result as Integer
    liefert den Fehlercode der letzten Prüfung wie folgt:
    • 0: USt-ID ist in Ordnung.
    • 1: USt-ID existiert nicht.
    • 2: Fehler bei der Prüfung (z.B. Server nicht erreichbar, aber auch bei unsinnigen USt-IDs wie "XXYYZZTT")
  • Property Resulttext as String
    liefert bei Result=0 oder 1 alle Ergebnisfelder der Server-Antwort im Format
    countryCode~vatNumber~requestDate~valid~name~address
    und bei Result=2 eine Klartextfehlermeldung des Betriebssystems oder des Servers (je nach Fehlerort).
    • In der Server-Antwort sind zwar die Felder name und address vorgesehen, um den Inhaber der USt-ID anzuzeigen; diese werden jedoch zumindest für deutsche USt-IDs aus Datenschutzgründen vom Server leider nicht ausgefüllt; bei manchen ausländischen IDs (z.B. aus Österreich oder Polen) finden Sie hier Name und Adresse der geprüften Firma. Falls Sie die eingebaute HanftWddx-Benutzeroberfläche benutzen, erscheint bei Vorhandensein dieser Daten ein "Info"-Button, mit dem Sie diese Angaben anzeigen können.

Hinweis: Die Prüfung findet direkt auf dem Server der Europäischen Kommission statt und ist von KONTOPRUEF vollkommen unabhängig!

Nach oben

Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz