KONTOPRUEF-Logo

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. Besuchen Sie die Windows-Update-Website und installieren Sie insbesondere das Stammzertifikatupdate. 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. Als Land können Sie DE (Deutschland) oder AT (Österreich) angeben. Der Parameter Land steht erst ab Version 2.8.0 zur Verfügung! Bitte übergeben Sie immer 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 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.
    Als Land können Sie DE (Deutschland) oder AT (Österreich) angeben. Der Parameter Land steht erst ab Version 2.8.0 zur Verfügung! Im Falle von Österreich wird immer auch nach Fragmenten gesucht, und es kann nur ein einziger Suchtext angegeben werden!
  • 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.

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")
ErgebnisAlsZahl = KtoPruef.Result
ErgebnisAlsText = KtoPruef.Resulttext
ErgebnisBankName = KtoPruef.BankName

Nach oben

3. Adreßprüfung

  • Property Rewrite as Integer
    erkennt, wenn auf 1 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.
    • Wir empfehlen, stets Rewrite=1 zu benutzen!
  • 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