Ankündigung

Einklappen
Keine Ankündigung bisher.

Externe Lib FHP - FinTS / HBCI PHP einbinden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Externe Lib FHP - FinTS / HBCI PHP einbinden

    Guten Morgen!
    Als PHP Neuling versuche ich gerade, die FinTS Lib von Markus Schindler einzubinden. Ich arbeite sonst im Backend nur mit Perl.

    Was ich habe: Win7 64 Pro, PHP 7.2.4 (cli) (built: Mar 28 2018 04:27:01) ( ZTS MSVC15 (Visual C++ 2017) x64 )
    In der Konsole funktioniert PHP an sich z. B. mit php -v einwandfrei.

    Die Datei https://github.com/mschindler83/fint...ive/master.zip habe ich mir in das Verzeichnis /php/modules/fints-hbci-php-master entpackt und dieses Script vorbereitet:
    PHP-Code:
    #
    # http://fints-hbci-php.markus-schindler.de
    #
    <?php
    $pfad 
    '***************/php/modules';
    include(
    "$pfad/fints-hbci-php-master/lib/Fhp/FinTs.php");
    include(
    "$pfad/fints-hbci-php-master/lib/Fhp/Model/StatementOfAccount/Statement.php");
    include(
    "$pfad/fints-hbci-php-master/lib/Fhp/Model/StatementOfAccount/Transaction.php");

    $fints = new FinTs(
        
    'https://banking............../fints30',                                                                    # FHP_BANK_URL,
        
    443,                                                                                                        # FHP_BANK_PORT,
        
    '********',                                                                                                    # FHP_BANK_CODE,
        
    '*****',                                                                                                    # FHP_ONLINE_BANKING_USERNAME,
        
    '**'                                                                                                        # FHP_ONLINE_BANKING_PIN
    );

    $accounts $fints->getSEPAAccounts();

    foreach (
    $accounts as $a) {
        print 
    "\n\nNächstes Konto:\n";
        if (
    $a->getAccountNumber() == $line["accountnumber"]) {
            print 
    "Saldo: ".$fints->getSaldo($a)."\n";
            print 
    "Saldo 2: ".$saldo->getAmount()."\n";
            print 
    "Währung: ".$saldo->getCurrency()."\n";
            print 
    "Datum: ".property_exists($saldo->getValuta(),"date") ? $saldo->getValuta()->date:date("Y-m-d H:i:s")."\n";
        }
    }
    ?>
    Wenn ich das starte erhalte ich:
    #
    # http://fints-hbci-php.markus-schindler.de
    #

    Fatal error: Uncaught Error: Class 'FinTs' not found in **************\test_fhp.php:10
    Stack trace:
    #0 {main}
    thrown in ***********\test_fhp.php on line 10
    Was mache ich falsch
    Danke für eure Hilfe.

  • #2
    es ist so einfach den fehler nachzuvollziehen, wenn du die Pfade aussternst
    nutze doch einfach wie angegeben den composer:
    PHP-Code:
      composer require mschindler83/fints-hbci-php 
    Injfos dazu hier:
    https://php-de.github.io/jumpto/composer/

    Kommentar


    • #3
      Zitat von tomBuilder Beitrag anzeigen
      es ist so einfach den fehler nachzuvollziehen, wenn du die Pfade aussternst
      Da lag der Fehler ja nicht.

      Das hat geholfen. Danke!

      Aber jetzt hat die Lib selbst ein Problem:
      PHP Fatal error: Uncaught Error: Call to undefined function Fhp\Adapter\curl_init() in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Adapter\Curl.php:51
      Stack trace:
      #0 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\FinTs.php(86): Fhp\Adapter\Curl->__construct('https://banking...', 443)
      #1 C:\Arbeit\Temp3\test_fhp.php(23): Fhp\FinTs->__construct('https://banking...', 443, '********', '*****', '**')
      #2 {main}
      thrown in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Adapter\Curl.php on line 51
      Wie kann ich das beheben?

      Kommentar


      • #4
        Ohne das du uns den Code zeigst mit dem der Fehler geworfen wird ist es schwer dir zu helfen.
        Vermutlich hast du den composer Autoloader nicht geladen?

        Kommentar


        • #5
          PHP Fatal error: Uncaught Error: Call to undefined function Fhp\Adapter\curl_init() in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Adapter\Curl.php:51
          http://php.net/manual/de/curl.installation.php

          Kommentar


          • #6
            Zitat von LudwigBr Beitrag anzeigen
            Ohne das du uns den Code zeigst mit dem der Fehler geworfen wird ist es schwer dir zu helfen.
            Hast Recht. Dachte das Problem wäre nicht in meinem Script. Hier der Stand:
            PHP-Code:
            #
            # http://fints-hbci-php.markus-schindler.de
            #
            <?php
            #
            require '../vendor/autoload.php';
            #

            use Fhp\FinTs;
            use 
            Fhp\Model\StatementOfAccount\Statement;
            use 
            Fhp\Model\StatementOfAccount\Transaction;
            #
            #
            #

            # für jedes beobachtete Konto: Herausfinden, was der derzeitige Kontostand ist.

            $fints = new FinTs(
                
            'https://****/fints30',                                                                                        # FHP_BANK_URL,
                
            443,                                                                                                        # FHP_BANK_PORT,
                
            '********',                                                                                                    # FHP_BANK_CODE,
                
            '*****',                                                                                                    # FHP_ONLINE_BANKING_USERNAME,
                
            '**'                                                                                                        # FHP_ONLINE_BANKING_PIN
            );

            $accounts $fints->getSEPAAccounts();

            foreach (
            $accounts as $a) {
                print 
            "\n\nNächstes Konto:\n";
                if (
            $a->getAccountNumber() == $line["accountnumber"]) {
                    print 
            "Saldo: ".$fints->getSaldo($a)."\n";
                    print 
            "Saldo 2: ".$saldo->getAmount()."\n";
                    print 
            "Währung: ".$saldo->getCurrency()."\n";
                    print 
            "Datum: ".property_exists($saldo->getValuta(),"date") ? $saldo->getValuta()->date:date("Y-m-d H:i:s")."\n";
            #        $theAccount = $a;
                
            }
            }
            Zitat von LudwigBr Beitrag anzeigen
            Vermutlich hast du den composer Autoloader nicht geladen?
            Ist das nicht dieses autoload.php ganz oben?

            Kommentar


            • #7
              Oje danke dir. 3 Milliarden Varianten.
              Kannst du mir bitte sagen, was ich in's Script schreiben muss, damit dieses curl da ist. Danke dir.

              Kommentar


              • #8
                Du musst curl installieren.
                mit
                PHP-Code:
                phpinfo(); 
                kannst Du dann testen ob es auch installiert ist.
                Anleitung zum installieren habe ich verlinkt.

                hier
                https://github.com/mschindler83/fint...r/Curl.php#L51
                wird curl aufgerufen, das muss php schon kennen, ein fallback hat die lib wohl noch nicht.

                Kommentar


                • #9
                  Zitat von mikfueddl Beitrag anzeigen
                  Kannst du mir bitte sagen, was ich in's Script schreiben muss,
                  Du musst nix in das Script schreiben, du musst aber Curl aktivieren. Das wird bei den Windows Binäries auch schon mitgeliefert. Dazu musst du in der php.ini die entsprechende Zeite auskommentieren. (load_module = curl.dll oder so ähnlich)

                  Kommentar


                  • #10
                    Zitat von erc Beitrag anzeigen

                    Du musst nix in das Script schreiben, du musst aber Curl aktivieren. Das wird bei den Windows Binäries auch schon mitgeliefert. Dazu musst du in der php.ini die entsprechende Zeite auskommentieren. (load_module = curl.dll oder so ähnlich)
                    Richtig! Und bei Linux musst du einfach das fehlende Paket installieren. Heißt je nach Distro meistens php-curl oder php7-curl. Solltest du aber so finden. Notfalls mithilfe des Packetmanagers mal danach suchen. Bei Mac OS X nimmst du entweder das mitgelieferte PHP, oder kompilierst es dir selbst dazu mit rein. Homebrew und Konsorten haben sich hier als große Hilfe erwiesen...

                    Kommentar


                    • #11
                      Zitat von erc Beitrag anzeigen
                      Dazu musst du in der php.ini die entsprechende Zeite auskommentieren. (load_module = curl.dll oder so ähnlich)
                      Meintest du einkommentieren, also aktivieren?
                      Und ich finde nichts Ähnliches, was ich ein- oder auskommentieren könnte.
                      Bitte nochmal um Hilfe, ich tappe völlig im Dunkeln.

                      Kommentar


                      • #12
                        http://php.net/manual/de/curl.installation.php#122314
                        sieht doch machbar aus.

                        Kommentar


                        • #13
                          Zitat von tomBuilder Beitrag anzeigen
                          Stimmt. Hab ich installiert. Jetzt stimmt was mit den Zertifikaten nicht:
                          PHP Fatal error: Uncaught Fhp\Adapter\Exception\CurlException: Failed connection to https://banking-rl6.s-fints-pt-rl.de/fints30: SSL certificate problem: unable to get local issuer certificate in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Adapter\Curl.php:80
                          Stack trace:
                          #0 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Connection.php(36): Fhp\Adapter\Curl->send(Object(Fhp\Message\Message))
                          #1 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Dialog\Dialog.php(121): Fhp\Connection->send(Object(Fhp\Message\Message))
                          #2 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Dialog\Dialog.php(325): Fhp\Dialog\Dialog->sendMessage(Object(Fhp\Message\Message))
                          #3 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\FinTs.php(126): Fhp\Dialog\Dialog->syncDialog()
                          #4 C:\Arbeit\Temp3\test_fhp.php(26): Fhp\FinTs->getSEPAAccounts()
                          #5 {main}
                          thrown in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Adapter\Curl.php on line 80
                          OpenSSL habe ich installiert und die Dateien libeay32.dll, ssleay32.dll und libssh2.dll sind im Ordner c:/php vorhanden.
                          Was müsste ich da jetzt machen?

                          Kommentar


                          • #14
                            Hey super, schon wieder ein Schritt weiter.
                            Ich hab für Dich mal gegoogelt, nach ner deutschen Seite:
                            https://christ.media/ssl-certificate...tificate-howto

                            Kommentar


                            • #15
                              Danke @tomBuilder!

                              Mühsam ernährt sich das Eichhörnchen.

                              Jetzt kommt das:
                              PHP Fatal error: Uncaught Fhp\Dialog\Exception\FailedRequestException: Request Failed: Unknown error in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Dialog\Dialog.php:129
                              Stack trace:
                              #0 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Dialog\Dialog.php(325): Fhp\Dialog\Dialog->sendMessage(Object(Fhp\Message\Message))
                              #1 C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\FinTs.php(126): Fhp\Dialog\Dialog->syncDialog()
                              #2 C:\Arbeit\Temp3\test_fhp.php(26): Fhp\FinTs->getSEPAAccounts()
                              #3 {main}
                              thrown in C:\Arbeit\vendor\mschindler83\fints-hbci-php\lib\Fhp\Dialog\Dialog.php on line 129
                              Was ist da jetzt falsch?

                              Kommentar

                              Lädt...
                              X