Hibiscus mit PHP ansteuern. Einfachere Wege?

 
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 15.12.2012 - 09:10 Uhr  ·  #1
Hallo zusammen,

jetzt war ich hier schon lange unterwegs und habe nach vielen Antworten für mein Problem gesucht, mich jetzt aber doch angemeldet um einen Meinungsaustausch anzustreben.

Ich möchte ganz einfach Überweisungen für meine Finanztransaktionen über PHP veranlassen.
Ich empfinde es als sehr ineffizient mich jedes mal in meine Banksoftware einloggen zu müssen um eine einfache Überweisung zu tätigen.

Überlegt habe ich mir dazu folgende Struktur:
- Meine Bank stellt eine HBCI-Schnittstelle bereit
- Hibiscus-Payment-Server (ist bereits aufgesetzt) verwaltet die HBCI-Schnitstelle und stellt eine XML-RPC Schnittstelle bereit
- PHP-Script veranlasst eine Überweisung über XML-RPC

Den Payment-Server habe ich bereits aufgesetzt, jedoch scheitere ich noch an der Zugänglichkeit (kein Interface zu sehen). Das liegt wohl daran dass ich ein ISP-Config System verwende welches auch den 8080 Port verwendet und eine eigene /var/www Struktur hat.
Jedenfalls kann ich nicht auf das Interface zugreifen. Da prüfe ich derzeit noch was das Problem sein könnte.

Vielleicht hat jemand von euch dafür eine Idee.


Ist mein Vorhaben so machbar? Gibt es vielleicht eine einfachere, zeitgünstigere Methoden, Dienstleister oder Dienste um automatisiert Überweisungen zu tätigen?


Vielen Dank für euer Feedback!


############################################EDIT

Zugriff habe ich jetzt auch aufs Panel. War tatsächlich der Fehlerhafte Port.


############################################EDIT2

Super! :)
Hibiscus läuft, habe mein Konto angelegt und bin jetzt dann gespannt ob das mit den Überweisungen klappt wie ich mir das vorstelle. Wenn es hinhaut wär das echt eine große Arbeitslast die wegfällt.


############################################EDIT3
Jetzt bin ich ins Stocken geraten. Wenn ich mit der xmlrpc.inc die Schnittstelle aufrufen möchte erreicht mich folgender Fehler:
Code
xmlrpcresp Object
(
    [val] => 0
    [valtyp] => 
    [errno] => 8
    [errstr] => CURL error: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error
    [payload] => 
    [hdrs] => Array
        (
        )

    [_cookies] => Array
        (
        )

    [content_type] => text/xml
    [raw_data] => 
)


Meine Anfrage lautet:
[php]
require_once(/xmlrpc.inc');
$client = new xmlrpc_client('https://xxx:xxx@xxx:8082/xmlrpc/');
$client->setDebug(0);
$client->setSSLVerifyHost(0);
$client->setSSLVerifyPeer(0);

$msg = new xmlrpcmsg('hibiscus.xmlrpc.konto.find');
$response = $client->send($msg);
print_r($response);
exit();
[/php]

Fehlermeldung in der Konsole:
Code
[Sat Dec 15 10:40:40 CET 2012][WARN][org.slf4j.impl.JameicaLoggerAdapter.warn] EXCEPTION
javax.net.ssl.SSLException: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DOMAIN_PARAMS_INVALID
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1860)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1843)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1362)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
        at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:630)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
Caused by: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DOMAIN_PARAMS_INVALID
        at sun.security.pkcs11.P11KeyPairGenerator.generateKeyPair(P11KeyPairGenerator.java:323)
        at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:687)
        at sun.security.ssl.ECDHCrypt.<init>(ECDHCrypt.java:63)
        at sun.security.ssl.ServerHandshaker.setupEphemeralECDHKeys(ServerHandshaker.java:1206)
        at sun.security.ssl.ServerHandshaker.trySetCipherSuite(ServerHandshaker.java:1060)
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(ServerHandshaker.java:887)
        at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:620)
        at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:167)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
        ... 3 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DOMAIN_PARAMS_INVALID
        at sun.security.pkcs11.wrapper.PKCS11.C_GenerateKeyPair(Native Method)
        at sun.security.pkcs11.P11KeyPairGenerator.generateKeyPair(P11KeyPairGenerator.java:314)
        ... 15 more


############################################EDIT4
Es läuft jetzt :)
Für Interessierte bei denen der Fehler auftritt:
Fehler war dabei, dass kein gültiges Zertifikat verwendet worden ist und somit Jetty wohl gestreikt hat. Da ich jedoch keine gesicherte Verbindung benötige da die Kommunikation zwischen PHP und Hibiscus ohnehin intern abläuft, kann man diese mit folgender Einstellung in der hibiscus/hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties umgehen.
Außerdem habe ich der Sicherheit wegen den jeweiligen TCP-Port geschlossen nachdem ich alle Einstellungen vorgenommen habe, damit man nicht mehr von außen zugreifen kann.
So sieht meine Config derzeit aus:
Code

listener.http.address=127.0.0.1
listener.http.port=XXXX
listener.http.auth=true
listener.http.ssl=false


Funktional sind derzeit die Abfragen der Konten und Saldos, Überweisungen werde ich heute auch noch testen. Bin mal gespannt was mich erwartet :)
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 16.12.2012 - 02:37 Uhr  ·  #2
So jetzt brauche ich aber wirklich Hilfe.
Wie läuft eine Überweisung mit dem Payment-Server ab?
Leider konnte ich im Forum und in den Wiki-Einträgen keine Beschreibung dazu finden.

Bisher habe ich das so verstanden:

1. Ich sende über das XML-RPC die Überweisungsinformationen an Hibiscus und erhalte bei Erfolg ein OK und ansonsten ein ERROR.

2. Der XML-RPC Listener erhält eine TAN-Abfrage und muss diese Anfrage (z.B. auf einem MySQL-Server) abspeichern.

3. Ich rufe den Zwischenspeicher auf und sende wieder ein XML-RPC-Request an Hibiscus mit der TAN.

Ist das so richtig? Übersehe ich etwas?
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 16.12.2012 - 13:47 Uhr  ·  #3
Zu der Sache mit dem TCP-Port 8080: Den kannst du in "hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties" umkonfigurieren. Dort findest du folgenden auskommentierten Bereich:

Code

# Entferne bei den folgenden beiden Zeilen das Kommentar-Zeichen
# "#" und passe die Werte an, wenn Du abweichende Einstellungen
# benoetigst.
# listener.http.address=127.0.0.1
# listener.http.port=8080


Allgemein zum Zugriff mittels PHP findest du unter https://github.com/willuhn/hibiscus.php bereits fertigen Code, den du verwenden kannst.

Zitat

Bisher habe ich das so verstanden:

1. Ich sende über das XML-RPC die Überweisungsinformationen an Hibiscus und erhalte bei Erfolg ein OK und ansonsten ein ERROR.


Korrekt.

Zitat

2. Der XML-RPC Listener erhält eine TAN-Abfrage und muss diese Anfrage (z.B. auf einem MySQL-Server) abspeichern.


Wenn du PIN/TAN verwendest, hast du - zumindest wenn du nicht nur Umsaetze abrufen sondern auch Ueberweisungen absenden willst - schon verloren. Seit der Einfuehrung von smsTAN/chipTAN ist das nicht mehr automatisierbar, da du entweder ein Handy fuer die SMS brauchst oder den TAN-Generator an den Bildschirm halten musst. Entweder du konfigurierst den Payment-Server so, dass dessen Scheduler nur neue Umsaetze abruft aber keine Ueberweisungen ausfuehrt. Das Ausfuehren der Ueberweisungen koenntest du dann von einer Desktop-Installation von Hibiscus machen, die die selbe MySQL-Datenbank verwendet und damit die von deinem PHP-Programm erstellten Ueberweisungen ebenfalls "sieht". Oder du fragst mal bei deiner Bank nach, ob es neben PIN/TAN noch eine andere Zugangsvariante fuer HBCI gibt. "Schluesseldatei" waere hier das Verfahren der Wahl, da sich das automatisieren laesst.

In diesem Zusammenhang wieder der obligatorische Warnhinweis: Ich rate davon ab, einen Hibiscus Payment-Server auf einem oeffentlich zugaenglichen Webserver im Rechenzentrum zu betreiben. Er ist eigentlich dafuer gedacht, in deinem gesicherten LAN betrieben zu werden.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 16.12.2012 - 14:50 Uhr  ·  #4
Zitat geschrieben von hibiscus
Zu der Sache mit dem TCP-Port 8080: Den kannst du in "hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties" umkonfigurieren. Dort findest du folgenden auskommentierten Bereich:

Code
# Entferne bei den folgenden beiden Zeilen das Kommentar-Zeichen
# "#" und passe die Werte an, wenn Du abweichende Einstellungen
# benoetigst.
# listener.http.address=127.0.0.1
# listener.http.port=8080


Allgemein zum Zugriff mittels PHP findest du unter https://github.com/willuhn/hibiscus.php bereits fertigen Code, den du verwenden kannst.

Zitat

Bisher habe ich das so verstanden:

1. Ich sende über das XML-RPC die Überweisungsinformationen an Hibiscus und erhalte bei Erfolg ein OK und ansonsten ein ERROR.


Korrekt.

Zitat

2. Der XML-RPC Listener erhält eine TAN-Abfrage und muss diese Anfrage (z.B. auf einem MySQL-Server) abspeichern.


Wenn du PIN/TAN verwendest, hast du - zumindest wenn du nicht nur Umsaetze abrufen sondern auch Ueberweisungen absenden willst - schon verloren. Seit der Einfuehrung von smsTAN/chipTAN ist das nicht mehr automatisierbar, da du entweder ein Handy fuer die SMS brauchst oder den TAN-Generator an den Bildschirm halten musst. Entweder du konfigurierst den Payment-Server so, dass dessen Scheduler nur neue Umsaetze abruft aber keine Ueberweisungen ausfuehrt. Das Ausfuehren der Ueberweisungen koenntest du dann von einer Desktop-Installation von Hibiscus machen, die die selbe MySQL-Datenbank verwendet und damit die von deinem PHP-Programm erstellten Ueberweisungen ebenfalls "sieht". Oder du fragst mal bei deiner Bank nach, ob es neben PIN/TAN noch eine andere Zugangsvariante fuer HBCI gibt. "Schluesseldatei" waere hier das Verfahren der Wahl, da sich das automatisieren laesst.

In diesem Zusammenhang wieder der obligatorische Warnhinweis: Ich rate davon ab, einen Hibiscus Payment-Server auf einem oeffentlich zugaenglichen Webserver im Rechenzentrum zu betreiben. Er ist eigentlich dafuer gedacht, in deinem gesicherten LAN betrieben zu werden.


Erst einmal vielen Dank für Deine Antwort.
Den Port habe ich bereits umgestellt und geblockt damit keiner zugreifen kann. Danke für den Hinweis.

Super das mit der PHP-Datei. Wäre es möglich das in der Dokumentation zu vermerken? Das würde viel Arbeit erleichtern.

Meine Bank (Sofort-Bank) unterstützt die Schlüsseldatei. Wie wäre damit zu verfahren?


Vielen Dank für Deine Hilfe.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 16.12.2012 - 15:04 Uhr  ·  #5
Ich hab das mit dem verfuegbaren PHP-Code im Wiki unter http://www.willuhn.de/wiki/dok…_im_detail vermerkt.

Zitat

Meine Bank (Sofort-Bank) unterstützt die Schlüsseldatei. Wie wäre damit zu verfahren?


Installiere die ein Hibiscus wie gewohnt lokal auf deinem Desktop-Rechner. Lege dann eine neue Bankverbindung mit dem Verfahren "Schluesseldatei" an und erstelle einen INI-Brief wie im Handbuch unter http://www.willuhn.de/wiki/doku.php?id=handbuch:setup:rdh beschrieben. Nachdem du den INI-Brief ausgedruckt und unterschrieben an die Bank gesendet hast und die Bank diesen freigeschaltet hast, kannst du die Schluessel-Datei im Webfrontend des Payment-Servers hochladen. Dabei werden die Konten automatisch mit angelegt, falls sie nicht bereits existieren. Fertig.

Achte aber darauf, die Schluessel-Datei anschliessend *NICHT* mehr auf dem Desktop zu verwenden. Eine solche Schluessel-Datei darf nicht von mehreren Rechnern aus in Kopie benutzt werden.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 16.12.2012 - 16:16 Uhr  ·  #6
Zitat geschrieben von hibiscus
Ich hab das mit dem verfuegbaren PHP-Code im Wiki unter http://www.willuhn.de/wiki/dok…_im_detail vermerkt.

Zitat

Meine Bank (Sofort-Bank) unterstützt die Schlüsseldatei. Wie wäre damit zu verfahren?


Installiere die ein Hibiscus wie gewohnt lokal auf deinem Desktop-Rechner. Lege dann eine neue Bankverbindung mit dem Verfahren "Schluesseldatei" an und erstelle einen INI-Brief wie im Handbuch unter http://www.willuhn.de/wiki/doku.php?id=handbuch:setup:rdh beschrieben. Nachdem du den INI-Brief ausgedruckt und unterschrieben an die Bank gesendet hast und die Bank diesen freigeschaltet hast, kannst du die Schluessel-Datei im Webfrontend des Payment-Servers hochladen. Dabei werden die Konten automatisch mit angelegt, falls sie nicht bereits existieren. Fertig.

Achte aber darauf, die Schluessel-Datei anschliessend *NICHT* mehr auf dem Desktop zu verwenden. Eine solche Schluessel-Datei darf nicht von mehreren Rechnern aus in Kopie benutzt werden.


Super vielen Dank. Das werde ich mal ausprobieren.

Nur um sicher zu gehen dass ich Dich nicht Falsch verstanden habe: Es gibt also nur Möglich die Überweisungen per Schlüsseldatei abzusenden. Per PIN/TAN oder ein anderes TAN-Abhängiges Verfahren ist nicht machbar, korrekt?

Wenn es ginge, könnte ich auch eine zusätzliche Abfrage der jeweilig Angeforderten TAN (egal ob smsTan oder sonstige Verfahren) einbauen. Es muss nicht "vollautomatisch" im Sinne von: "Fire and Forget" ablaufen. Ich hätte kein Problem damit wenn zunächst die TAN abgefragt werden muss damit die Transaktion von der Bank akzeptiert und ausgeführt werden kann.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 17.12.2012 - 08:28 Uhr  ·  #7
Zitat geschrieben von ErrEll
Nur um sicher zu gehen dass ich Dich nicht Falsch verstanden habe: Es gibt also nur Möglich die Überweisungen per Schlüsseldatei abzusenden.


Chipkarte wuerde u.U. zwar auch funktionieren, dazu muesste man aber den Kartenleser direkt an den Server anschliessen.

Zitat geschrieben von ErrEll
Per PIN/TAN oder ein anderes TAN-Abhängiges Verfahren ist nicht machbar, korrekt?


Korrekt.

Zitat geschrieben von ErrEll
Wenn es ginge, könnte ich auch eine zusätzliche Abfrage der jeweilig Angeforderten TAN (egal ob smsTan oder sonstige Verfahren) einbauen. Es muss nicht "vollautomatisch" im Sinne von: "Fire and Forget" ablaufen. Ich hätte kein Problem damit wenn zunächst die TAN abgefragt werden muss damit die Transaktion von der Bank akzeptiert und ausgeführt werden kann.


Dieser Ablauf laesst sich aber nicht abbilden. Auch nicht teilautomatisch. Die TAN ist auftragsbezogen und kann erst abgefragt werden, wenn der Auftrag an die Bank gesendet wird.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 17.12.2012 - 08:57 Uhr  ·  #8
Zitat geschrieben von hibiscus
Zitat geschrieben von ErrEll
Nur um sicher zu gehen dass ich Dich nicht Falsch verstanden habe: Es gibt also nur Möglich die Überweisungen per Schlüsseldatei abzusenden.


Chipkarte wuerde u.U. zwar auch funktionieren, dazu muesste man aber den Kartenleser direkt an den Server anschliessen.

Zitat geschrieben von ErrEll
Per PIN/TAN oder ein anderes TAN-Abhängiges Verfahren ist nicht machbar, korrekt?


Korrekt.

Zitat geschrieben von ErrEll
Wenn es ginge, könnte ich auch eine zusätzliche Abfrage der jeweilig Angeforderten TAN (egal ob smsTan oder sonstige Verfahren) einbauen. Es muss nicht "vollautomatisch" im Sinne von: "Fire and Forget" ablaufen. Ich hätte kein Problem damit wenn zunächst die TAN abgefragt werden muss damit die Transaktion von der Bank akzeptiert und ausgeführt werden kann.


Dieser Ablauf laesst sich aber nicht abbilden. Auch nicht teilautomatisch. Die TAN ist auftragsbezogen und kann erst abgefragt werden, wenn der Auftrag an die Bank gesendet wird.


Alles klar dann hab ich das jetzt richtig verstanden.
Ich werde heute mal den Sicherheitsschlüssel erstellen und schauen wie weit ich damit komme.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 18.12.2012 - 18:18 Uhr  ·  #9
Heute ist mir etwas komisches passiert.

Ich habe heute eine mTan SMS von meiner Bank erhalten weil in der Überweisungstabelle in MySQL ein Auftrag aufgeführt war. Ich war total in Panik weil ich dachte dass jemand fremdes Zugriff auf mein Konto hat.

Dann ist mir aber klar geworden dass das der Payment-Server war der nach der richtigen TAN für die Überweisung fragte.

Ich dachte das sei nicht möglich?
Wir werden die Tan-Abfragen denn in der Desktop-Version abgehandelt? Ist das nicht ein ähnliches Schema?
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 18.12.2012 - 23:01 Uhr  ·  #10
Zitat geschrieben von ErrEll
Ich dachte das sei nicht möglich?


Das Eingeben der TAN auf dem Server ist nicht moeglich. Was du gemacht hast, ist die Ueberweisung durch den Server an die Bank senden lassen. Die veranlasst dann die SMS. Da der Server aber keine Moeglichkeit hat, die SMS vom Benutzer zu erfragen, fuehrt der Auftrag zu einem Fehler bzw. Timeout.

Zitat geschrieben von ErrEll
Wir werden die Tan-Abfragen denn in der Desktop-Version abgehandelt? Ist das nicht ein ähnliches Schema?


Nein. Auf dem Desktop hat man eine direkte Interaktions-Moeglichkeit. Wie soll der Server denn das Eingabefeld anzeigen, wenn das ganze im Hintergrund laeuft? Er kann ja nicht einfach ein Browser-Fenster bei dir aufmachen.

Du programmierst doch selbst auch. In PHP. Vergleichbares Beispiel: Du rufst via XML-RPC den Payment-Server auf und uebergibst ihm die Ueberweisung. Und noch waehrend dein Funktionsaufruf an den Payment-Server laeuft (der Aufruf also noch nicht zurueckgekehrt ist und deine Ergebnis-Webseite noch nicht angezeigt wurde) fragt der Payment-Server dein PHP-Script nach einer TAN. Wie willst du diese Abfrage im Browser-Fenster anzeigen, wenn der oben genannte Funktionsaufruf ja noch laeuft?
Und jetzt kommt noch erschwerend hinzu, dass normalerweise gar kein Browser-Fenster existiert, weil das ganze im Hintergrund auf dem Server passiert. Vergleichbares Beispiel: Auf dem Server laeuft ein Cron-Job. Wie soll der von dir die TAN holen?
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 18.12.2012 - 23:18 Uhr  ·  #11
Zitat geschrieben von hibiscus
Wie willst du diese Abfrage im Browser-Fenster anzeigen, wenn der oben genannte Funktionsaufruf ja noch laeuft?
Und jetzt kommt noch erschwerend hinzu, dass normalerweise gar kein Browser-Fenster existiert, weil das ganze im Hintergrund auf dem Server passiert. Vergleichbares Beispiel: Auf dem Server laeuft ein Cron-Job. Wie soll der von dir die TAN holen?


Ich verstehe. Der Server sendet also die Überweisung und befindet sich, bis zum Timeout weil keine TAN-Eingabe erfolgt, in einer Verbindung mit der Bank?

Teilt die Schnittstelle der Bank nicht mit, dass die Überweisung erfolgreich empfangen worden ist und beendet dann die Verbindung?

Falls dem nicht so sein sollte gibt es eine ganz einfache Lösung. Bevor ich diese aber ausführe warte ich erst einmal auf Deine Antwort.


Vielen Dank :)
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 18.12.2012 - 23:32 Uhr  ·  #12
Zitat geschrieben von ErrEll
Ich verstehe. Der Server sendet also die Überweisung und befindet sich, bis zum Timeout weil keine TAN-Eingabe erfolgt, in einer Verbindung mit der Bank?


Korrekt. Wobei ich davon ausgehe - ohne den Code jetzt gecheckt zu haben, dass der ganze Vorgang von Hibiscus schlicht abgebrochen wird, weil Hibiscus keine Moeglichkeit hat, irgendwen nach der TAN zu fragen.

Zitat geschrieben von ErrEll
Teilt die Schnittstelle der Bank nicht mit, dass die Überweisung erfolgreich empfangen worden ist und beendet dann die Verbindung?


Die Frage verstehe ich nicht.

Zitat geschrieben von ErrEll
Falls dem nicht so sein sollte gibt es eine ganz einfache Lösung. Bevor ich diese aber ausführe warte ich erst einmal auf Deine Antwort.


Und die waere?
obnutzer
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 1095
Dabei seit: 03 / 2010
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 06:50 Uhr  ·  #13
Zitat geschrieben von ErrEll
Teilt die Schnittstelle der Bank nicht mit, dass die Überweisung erfolgreich empfangen worden ist und beendet dann die Verbindung?

Bei einer Zweischrittkommunikation nicht. Da reicht der Client erst den Auftrag ein und bekommt dann von der Bank die TAN-Abfrage zurück. Diese wird dann normalerweise mit einer falschen oder einer richtigen TAN beantwortet oder der ganze Request läuft wegen Nichteingabe also wg. Timeout ab.
Ein "Überweisung ist fertig, da kommt nichts mehr"-Befehl gibt es nicht bei HBCI. Soetwas macht man bei EBICS mit der T-Berechtigung. Da kann ein Teilnehmer einfach nur etwas einreichen und es bleibt auf dem Bankrechner liegen, bis es einer unterschreibt. Für Automationen absolut genial. Leider häuftig bankseitig nicht umsonst und der Paymentserver spricht auch leider kein EBICS.
Bei HBCI hingegen müssen alle Aufträge vollständig unterschrieben eingereicht werden, andernfalls wird die ganze Einreichung mit Fehler abgewiesen.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 12:34 Uhr  ·  #14
Zitat geschrieben von obnutzer
Zitat geschrieben von ErrEll
Teilt die Schnittstelle der Bank nicht mit, dass die Überweisung erfolgreich empfangen worden ist und beendet dann die Verbindung?

Bei einer Zweischrittkommunikation nicht. Da reicht der Client erst den Auftrag ein und bekommt dann von der Bank die TAN-Abfrage zurück. Diese wird dann normalerweise mit einer falschen oder einer richtigen TAN beantwortet oder der ganze Request läuft wegen Nichteingabe also wg. Timeout ab.
Ein "Überweisung ist fertig, da kommt nichts mehr"-Befehl gibt es nicht bei HBCI. Soetwas macht man bei EBICS mit der T-Berechtigung. Da kann ein Teilnehmer einfach nur etwas einreichen und es bleibt auf dem Bankrechner liegen, bis es einer unterschreibt. Für Automationen absolut genial. Leider häuftig bankseitig nicht umsonst und der Paymentserver spricht auch leider kein EBICS.
Bei HBCI hingegen müssen alle Aufträge vollständig unterschrieben eingereicht werden, andernfalls wird die ganze Einreichung mit Fehler abgewiesen.


Das war das was ich wissen wollte. Wieso akzeptiert die HBCI-Schnittstelle überhaupt eine Überweisung uns sendet auch noch eine smsTAN an mich wenn es eh nicht funktioniert. Ist mir unerklärlich. Da hat wohl jemand bei der Bank schlecht Programmiert oder einfach nicht nachgedacht.

Also muss ich mich nach einer PHP-EBCIS Schnittstelle umsehen wenn ich das umsetzen möchte was ich machen muss. Habt ihr eine Empfehlung für mich?

Wenn ich das ganze zum laufen gebracht habe kann ich dann auch offenlegen wie ich das alles umgesetzt habe.
obnutzer
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 1095
Dabei seit: 03 / 2010
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 12:43 Uhr  ·  #15
Zitat geschrieben von ErrEll
Wieso akzeptiert die HBCI-Schnittstelle überhaupt eine Überweisung uns sendet auch noch eine smsTAN an mich wenn es eh nicht funktioniert. Ist mir unerklärlich. Da hat wohl jemand bei der Bank schlecht Programmiert oder einfach nicht nachgedacht.

Die Aussage ist ja Quatsch. Woher soll das Banksystem wissen, dass nach der Überweisung keine TAN-Eingabe folgt? Der Ablauf ist so spezifiziert. Das Problem liegt auf deiner Seite. Du reichst eine Überweisung mit dem Wissen ein, dass du die TAN-Abfrage garnicht beantworten können wirst. hibiscus hatte dich da aber drauf hingewiesen.

Zitat geschrieben von ErrEll
Also muss ich mich nach einer PHP-EBCIS Schnittstelle umsehen wenn ich das umsetzen möchte was ich machen muss. Habt ihr eine Empfehlung für mich?

Der Markt ist dahingehend extrem mager. Aber würde mich auch interessieren.
Von Subsembly gibt es eine EBICS CMD, die ist aber ebenso schwer mit PHP anzusprechen. Und dann gibt es noch eine Reihe Automatisierungslösungen die aber von 3 bis 5stellig Geld kosten.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10865
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 12:44 Uhr  ·  #16
Zitat geschrieben von ErrEll
Das war das was ich wissen wollte. Wieso akzeptiert die HBCI-Schnittstelle überhaupt eine Überweisung uns sendet auch noch eine smsTAN an mich wenn es eh nicht funktioniert. Ist mir unerklärlich. Da hat wohl jemand bei der Bank schlecht Programmiert oder einfach nicht nachgedacht.


Wieso denn das? Das Senden der Ueberweisung erfolgt in mehreren Schritten aber in einer Sitzung.

Etwa so:

1) Sitzung oeffnen
2) Client sendet Ueberweisung an Bank
3) Bank sendet SMS an Handy und einen Identifier an Client
4) Client kriegt SMS und sendet die TAN zusammen mit dem Identifier an Bank
5) Bank prueft TAN und fuehrt Ueberweisung aus
6) Sitzung schliessen.

Zitat geschrieben von ErrEll
Also muss ich mich nach einer PHP-EBCIS Schnittstelle umsehen wenn ich das umsetzen möchte was ich machen muss. Habt ihr eine Empfehlung für mich?


Nochmal: Nimm das Verfahren "Schluesseldatei". Du hast doch selbst gesagt, dass deine Bank das unterstuetzt. Ich weiss nicht, warum du dich am PIN/TAN-Verfahren so festgebissen hast, obwohl es erwiesenermassen nicht zur Automatisierung taugt.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 13:34 Uhr  ·  #17
Zitat geschrieben von obnutzer
Die Aussage ist ja Quatsch. Woher soll das Banksystem wissen, dass nach der Überweisung keine TAN-Eingabe folgt? Der Ablauf ist so spezifiziert.

Naja weil HBIC auf dem Banksystem läuft? (if TAN == smsTAN {ERROR} etc.)

Naja egal.

Ich schau dann mal was es für alternativen gibt. Finde es schon schlimm genug dass es da auf dem Markt wirklich überhaupt nichts gibt.
obnutzer
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 1095
Dabei seit: 03 / 2010
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 19:33 Uhr  ·  #18
Zitat geschrieben von ErrEll
Naja weil HBIC auf dem Banksystem läuft? (if TAN == smsTAN {ERROR} etc.)

Und? Du scheinst an der Stelle noch ein grundlegendes Verständnisproblem zu haben. Sagt dir Client/Server aka Request/Response etwas? Ich versuche es mal damit zu erklären:

Das Banksystem bekommt von deinem Paymentserver den Request, eine Zahlung einreichen zu wollen. Darauf reagiert das Banksystem gemäß Spezi korrekt indem es als Response eine TAN anfordert, das ist Schritt 1 im Zweischrittverfahren.
Dann muss der Paymentserver den nächsten Request in Form einer TAN-Einreichung absenden, kann er aber nicht, weil er den Benutzer nicht danach fragen kann. Das wäre Schritt 2 im Zweischrittverfahren.

Woher soll das Banksystem denn wissen, dass das nichts mehr kommen kann? Wo sollte die Bedingung if TAN == smsTAN {ERROR} her kommen? Im übrigen ist sie falsch, denn if TAN kann nicht funktionieren, weil garkeine TAN kommen kann.
Die Bedingung müsste eher lauten if Client == Paymentserver && Verfahren == smsTAN {ERROR}
Aber du wirst nicht ernsthaft erwarten, dass jede Bank in ihrem System von allen Produkten alle Fähigkeiten pflegt, oder?
Was ist denn nun mit der Schlüsseldatei? Warum verwendest du das Verfahren denn nicht?

Zitat geschrieben von ErrEll
Ich schau dann mal was es für alternativen gibt. Finde es schon schlimm genug dass es da auf dem Markt wirklich überhaupt nichts gibt.

Da scheiden sich die Geister. Angesichts der Vielzahl der Onlinebankingnutzer und insbesondere des jetzt schon sehr hohen Supportaufwands sowie des enormen Schadenpotentials in diesem Bereich wäre es sicher nicht wünschenswert, wenn nun auch noch jeder der ein paar Zeilen PHP zustande bringt sein Onlinebanking halbautomatisiert auf einen Webserver verlegen würde. Gerade PHP gilt nun nicht gerade als Sprache für professionelle Entwickler.
Ganz davon abgesehen, dass in den Nutzungsbedingungen jeder deutschen Bank steht, dass Sicherungsmedien (dazu gehört auch die PIN) nicht elektronisch gespeichert werden dürfen. Von daher ist HBCI/FinTS für solche Zwecke in mehrfacher Hinsicht völlig ungeeignet.
ErrEll
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 19
Dabei seit: 12 / 2012
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 19.12.2012 - 20:45 Uhr  ·  #19
Dann haben wir uns wohl missverstanden.

Zitat
4) Client kriegt SMS und sendet die TAN zusammen mit dem Identifier an Bank

Warum kann ich mit PHP nicht die gewünschte TAN nachsenden? Das ist die zentrale Frage.

Könnte der Payment-Server nicht eine TAN aus einer Tabelle der Datenbank ziehen und diese dann an die Bank senden?

Sagen wir mal, dass wir bei Schritt 4 hängen, also die Bank vom Clienten eine TAN erwartet:
Sobald ich eine TAN per SMS erhalten habe, trage ich diese über PHP mittels XML-RPC ein.
Der Payment-Server wartet so lange bis eine TAN vorhanden ist (mittels einer Warteschlange damit die Sitzung erhalten bleibt) und Timed nach einer bestimmten Zeit aus.

Ist das etwa nicht umsetzbar?

Zitat
kann er aber nicht, weil er den Benutzer nicht danach fragen kann

Doch, kann er. Einfach einen Eintrag in die DB dass die Überweisung für den Empfang einer TAN bereit ist.

Zitat
Woher soll das Banksystem denn wissen, dass das nichts mehr kommen kann?

Von dieser Tatsache bin ich ausgegangen als ich es so verstanden habe dass die Bank keine smsTAN per HBCI unterstützt.

Zitat
Was ist denn nun mit der Schlüsseldatei? Warum verwendest du das Verfahren denn nicht?

Ich hab leider keine Informationen dazu gefunden wie ich das Verfahren mit PHP umsetzen kann.
obnutzer
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 1095
Dabei seit: 03 / 2010
Betreff:

Re: Hibiscus mit PHP ansteuern. Einfachere Wege?

 · 
Gepostet: 20.12.2012 - 06:13 Uhr  ·  #20
Zitat geschrieben von ErrEll
Sagen wir mal, dass wir bei Schritt 4 hängen, also die Bank vom Clienten eine TAN erwartet:
Sobald ich eine TAN per SMS erhalten habe, trage ich diese über PHP mittels XML-RPC ein.
Der Payment-Server wartet so lange bis eine TAN vorhanden ist (mittels einer Warteschlange damit die Sitzung erhalten bleibt) und Timed nach einer bestimmten Zeit aus.

Für smsTAN vielleicht denkbar. Bei chipTAN wird es schon wieder schwieriger, weil der Flickercode oder Startwert an den Client zurück gegeben werden muss.
Voraussetzung wäre aber, dass Hibiscus an dein Script einen Zeiger zurück gibt, damit das PHP im nächsten Request mit der TAN-Nummer einen Bezug hat. Und das ist - soweit ich es verstanden habe - derzeit nicht implementiert. Mal schauen, was hibiscus dazu sagt.

Zitat geschrieben von ErrEll
Von dieser Tatsache bin ich ausgegangen als ich es so verstanden habe dass die Bank keine smsTAN per HBCI unterstützt.

HBCI (auch FinTS genannt) ist der Name der Schnittstelle. Wenn die Bank kein smsTAN über HBCI anbieten würde könntest du auch kein anderes Programm verwenden sondern nur und ausschließlich das Browserbanking der Bank. Wäre das für dich wünschenswert? Es gibt tatsächlich solche Banken.

Zitat geschrieben von ErrEll
Ich hab leider keine Informationen dazu gefunden wie ich das Verfahren mit PHP umsetzen kann.

Nein, nicht in PHP sondern als Sicherungsmedium in Hibiscus. Du initialisierst den Benutzer mittels INI-Brief, dabei erzeugt Hibiscus eine Unterschriftsdatei auf einem Laufwerk, dann läßt du diesen von der Bank freischalten und ab sofort kann Hibiscus statt einer TAN die Unterschriftsdatei zum Unterschreiben verwenden. Damit wärst du das Zweischrittverfahren und die TAN-Abfrage los.
Gewählte Zitate für Mehrfachzitierung:   0