From c4eaaa966a9d13acd7237734aa42eecb87d4dca1 Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Wed, 12 Apr 2023 22:16:52 +0200 Subject: [PATCH] removed fints-hbci, white-cup-filled-by-coffee.jpg --- .../fints-hbci-php/vendor/autoload.php | 7 - .../vendor/composer/ClassLoader.php | 445 ----- .../fints-hbci-php/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 9 - .../vendor/composer/autoload_namespaces.php | 10 - .../vendor/composer/autoload_real.php | 47 - .../vendor/composer/autoload_static.php | 26 - .../vendor/composer/installed.json | 88 - .../fints-hbci-php/COMPATIBILITY.md | 1697 ----------------- .../mschindler83/fints-hbci-php/LICENSE | 21 - .../mschindler83/fints-hbci-php/README.md | 40 - .../lib/Fhp/Adapter/AdapterInterface.php | 18 - .../fints-hbci-php/lib/Fhp/Adapter/Curl.php | 106 - .../fints-hbci-php/lib/Fhp/Adapter/Debug.php | 56 - .../Adapter/Exception/AdapterException.php | 12 - .../Fhp/Adapter/Exception/CurlException.php | 40 - .../fints-hbci-php/lib/Fhp/Connection.php | 46 - .../DataElementGroups/EncryptionAlgorithm.php | 56 - .../Fhp/DataElementGroups/HashAlgorithm.php | 42 - .../lib/Fhp/DataElementGroups/KeyName.php | 35 - .../DataElementGroups/SecurityDateTime.php | 36 - .../SecurityIdentificationDetails.php | 28 - .../Fhp/DataElementGroups/SecurityProfile.php | 28 - .../DataElementGroups/SignatureAlgorithm.php | 41 - .../fints-hbci-php/lib/Fhp/DataTypes/Bin.php | 66 - .../fints-hbci-php/lib/Fhp/DataTypes/Dat.php | 56 - .../fints-hbci-php/lib/Fhp/DataTypes/Kik.php | 48 - .../fints-hbci-php/lib/Fhp/DataTypes/Kti.php | 76 - .../fints-hbci-php/lib/Fhp/DataTypes/Ktv.php | 58 - .../fints-hbci-php/lib/Fhp/Deg.php | 36 - .../fints-hbci-php/lib/Fhp/Dialog/Dialog.php | 339 ---- .../Exception/FailedRequestException.php | 96 - .../fints-hbci-php/lib/Fhp/FinTs.php | 418 ---- .../lib/Fhp/Message/AbstractMessage.php | 134 -- .../lib/Fhp/Message/Message.php | 196 -- .../fints-hbci-php/lib/Fhp/Model/Account.php | 219 --- .../lib/Fhp/Model/SEPAAccount.php | 141 -- .../fints-hbci-php/lib/Fhp/Model/Saldo.php | 97 - .../Model/StatementOfAccount/Statement.php | 134 -- .../StatementOfAccount/StatementOfAccount.php | 83 - .../Model/StatementOfAccount/Transaction.php | 359 ---- .../Fhp/Parser/Exception/MT940Exception.php | 12 - .../fints-hbci-php/lib/Fhp/Parser/MT940.php | 229 --- .../lib/Fhp/Response/GetAccounts.php | 60 - .../lib/Fhp/Response/GetSEPAAccounts.php | 56 - .../lib/Fhp/Response/GetSaldo.php | 70 - .../Fhp/Response/GetStatementOfAccount.php | 102 - .../lib/Fhp/Response/Initialization.php | 12 - .../lib/Fhp/Response/Response.php | 377 ---- .../lib/Fhp/Segment/AbstractSegment.php | 108 -- .../fints-hbci-php/lib/Fhp/Segment/HKEND.php | 41 - .../fints-hbci-php/lib/Fhp/Segment/HKIDN.php | 51 - .../fints-hbci-php/lib/Fhp/Segment/HKKAZ.php | 63 - .../fints-hbci-php/lib/Fhp/Segment/HKSAL.php | 48 - .../fints-hbci-php/lib/Fhp/Segment/HKSPA.php | 43 - .../fints-hbci-php/lib/Fhp/Segment/HKSYN.php | 47 - .../fints-hbci-php/lib/Fhp/Segment/HKVVB.php | 68 - .../fints-hbci-php/lib/Fhp/Segment/HNHBK.php | 52 - .../fints-hbci-php/lib/Fhp/Segment/HNHBS.php | 45 - .../fints-hbci-php/lib/Fhp/Segment/HNSHA.php | 51 - .../fints-hbci-php/lib/Fhp/Segment/HNSHK.php | 90 - .../fints-hbci-php/lib/Fhp/Segment/HNVSD.php | 61 - .../fints-hbci-php/lib/Fhp/Segment/HNVSK.php | 84 - .../lib/Fhp/Segment/NameMapping.php | 119 -- .../lib/Fhp/Segment/Segment.php | 35 - .../lib/Fhp/Segment/SegmentInterface.php | 24 - .../lib/Tests/Fhp/ConnectionTest.php | 47 - .../EncryptionAlgorithmTest.php | 28 - .../DataElementGroups/HashAlgorithmTest.php | 15 - .../Fhp/DataElementGroups/KeyNameTest.php | 16 - .../SecurityDateTimeTest.php | 15 - .../SecurityIdentificationDetailsTest.php | 17 - .../DataElementGroups/SecurityProfileTest.php | 14 - .../SignatureAlgorithmTest.php | 13 - .../lib/Tests/Fhp/DataTypes/BinTest.php | 22 - .../lib/Tests/Fhp/DataTypes/DatTest.php | 23 - .../lib/Tests/Fhp/DataTypes/KikTest.php | 13 - .../lib/Tests/Fhp/DataTypes/KtiTest.php | 14 - .../lib/Tests/Fhp/DataTypes/KtvTest.php | 14 - .../fints-hbci-php/lib/Tests/Fhp/DegTest.php | 20 - .../lib/Tests/Fhp/FinTsTest.php | 42 - .../lib/Tests/Fhp/Message/MessageTest.php | 91 - .../lib/Tests/Fhp/Model/AccountTest.php | 53 - .../lib/Tests/Fhp/Model/SEPAAccountTest.php | 25 - .../lib/Tests/Fhp/Model/SaldoTest.php | 28 - .../StatementOfAccountTest.php | 33 - .../StatementOfAccount/StatementTest.php | 58 - .../StatementOfAccount/TransactionTest.php | 37 - .../Tests/Fhp/ResponseTest/ResponseTest.php | 51 - .../fints-hbci-php/lib/Tests/TestInit.php | 33 - .../mschindler83/fints-hbci-php/phplint.sh | 31 - .../fints-hbci-php/phpunit.xml.dist | 24 - .../fints-hbci-php/vendor/psr/log/LICENSE | 19 - .../vendor/psr/log/Psr/Log/AbstractLogger.php | 128 -- .../log/Psr/Log/InvalidArgumentException.php | 7 - .../vendor/psr/log/Psr/Log/LogLevel.php | 18 - .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 - .../psr/log/Psr/Log/LoggerAwareTrait.php | 26 - .../psr/log/Psr/Log/LoggerInterface.php | 123 -- .../vendor/psr/log/Psr/Log/LoggerTrait.php | 140 -- .../vendor/psr/log/Psr/Log/NullLogger.php | 28 - .../log/Psr/Log/Test/LoggerInterfaceTest.php | 140 -- .../fints-hbci-php/vendor/psr/log/README.md | 45 - .../templates/white-cup-filled-by-coffee.jpg | Bin 145455 -> 0 bytes 104 files changed, 8928 deletions(-) delete mode 100644 www/plugins/fints-hbci-php/vendor/autoload.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/ClassLoader.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/LICENSE delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/autoload_classmap.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/autoload_namespaces.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/autoload_real.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/autoload_static.php delete mode 100644 www/plugins/fints-hbci-php/vendor/composer/installed.json delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/COMPATIBILITY.md delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/LICENSE delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/README.md delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/AdapterInterface.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Curl.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Debug.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Exception/AdapterException.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Exception/CurlException.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Connection.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/EncryptionAlgorithm.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/HashAlgorithm.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/KeyName.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityDateTime.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityIdentificationDetails.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityProfile.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SignatureAlgorithm.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Bin.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Dat.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kik.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kti.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Ktv.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Deg.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Dialog.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Exception/FailedRequestException.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/FinTs.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/AbstractMessage.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/Message.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Account.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/SEPAAccount.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Saldo.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Statement.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/StatementOfAccount.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Transaction.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Parser/Exception/MT940Exception.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Parser/MT940.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetAccounts.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSEPAAccounts.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSaldo.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetStatementOfAccount.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/Initialization.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/Response.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/AbstractSegment.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKEND.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKIDN.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKKAZ.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKSAL.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKSPA.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKSYN.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKVVB.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNHBK.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNHBS.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNSHA.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNSHK.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNVSD.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNVSK.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/NameMapping.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/Segment.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/SegmentInterface.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/ConnectionTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/EncryptionAlgorithmTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/HashAlgorithmTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/KeyNameTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityDateTimeTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityIdentificationDetailsTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityProfileTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SignatureAlgorithmTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/BinTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/DatTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KikTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtiTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtvTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DegTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/FinTsTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Message/MessageTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/AccountTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SEPAAccountTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SaldoTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementOfAccountTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/TransactionTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/ResponseTest/ResponseTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/TestInit.php delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/phplint.sh delete mode 100644 www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/phpunit.xml.dist delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/LICENSE delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/AbstractLogger.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/InvalidArgumentException.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LogLevel.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerAwareInterface.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerAwareTrait.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerInterface.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerTrait.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/NullLogger.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php delete mode 100644 www/plugins/fints-hbci-php/vendor/psr/log/README.md delete mode 100644 www/themes/new/templates/white-cup-filled-by-coffee.jpg diff --git a/www/plugins/fints-hbci-php/vendor/autoload.php b/www/plugins/fints-hbci-php/vendor/autoload.php deleted file mode 100644 index 2107f7b6..00000000 --- a/www/plugins/fints-hbci-php/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath.'\\'; - if (isset($this->prefixDirsPsr4[$search])) { - foreach ($this->prefixDirsPsr4[$search] as $dir) { - $length = $this->prefixLengthsPsr4[$first][$search]; - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/www/plugins/fints-hbci-php/vendor/composer/LICENSE b/www/plugins/fints-hbci-php/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/www/plugins/fints-hbci-php/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/www/plugins/fints-hbci-php/vendor/composer/autoload_classmap.php b/www/plugins/fints-hbci-php/vendor/composer/autoload_classmap.php deleted file mode 100644 index 7a91153b..00000000 --- a/www/plugins/fints-hbci-php/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/mschindler83/fints-hbci-php/lib'), -); diff --git a/www/plugins/fints-hbci-php/vendor/composer/autoload_real.php b/www/plugins/fints-hbci-php/vendor/composer/autoload_real.php deleted file mode 100644 index fecf5a5a..00000000 --- a/www/plugins/fints-hbci-php/vendor/composer/autoload_real.php +++ /dev/null @@ -1,47 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitbdcab6487556631ed3c158e0e8422e44::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - return $loader; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/composer/autoload_static.php b/www/plugins/fints-hbci-php/vendor/composer/autoload_static.php deleted file mode 100644 index 3bed9977..00000000 --- a/www/plugins/fints-hbci-php/vendor/composer/autoload_static.php +++ /dev/null @@ -1,26 +0,0 @@ - - array ( - 'Fhp' => - array ( - 0 => 'plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib' - ) - ), - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixesPsr0 = ComposerStaticInitbdcab6487556631ed3c158e0e8422e44::$prefixesPsr0; - - }, null, ClassLoader::class); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/composer/installed.json b/www/plugins/fints-hbci-php/vendor/composer/installed.json deleted file mode 100644 index e692c060..00000000 --- a/www/plugins/fints-hbci-php/vendor/composer/installed.json +++ /dev/null @@ -1,88 +0,0 @@ -[ - { - "name": "psr/log", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-10-10T12:19:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ] - }, - { - "name": "mschindler83/fints-hbci-php", - "version": "1.0.4", - "version_normalized": "1.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/mschindler83/fints-hbci-php.git", - "reference": "e58cb825c178d4c39a8974a9dd93abbc8094551f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mschindler83/fints-hbci-php/zipball/e58cb825c178d4c39a8974a9dd93abbc8094551f", - "reference": "e58cb825c178d4c39a8974a9dd93abbc8094551f", - "shasum": "" - }, - "require": { - "php": ">=5.3.2", - "psr/log": "~1.0" - }, - "suggest": { - "monolog/monolog": "Allow sending log messages to a variety of different handlers" - }, - "time": "2017-02-15T13:48:21+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Fhp": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP Library for the protocols fints and hbci", - "homepage": "http://fints-hbci-php.markus-schindler.de" - } -] diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/COMPATIBILITY.md b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/COMPATIBILITY.md deleted file mode 100644 index 7f5e9446..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/COMPATIBILITY.md +++ /dev/null @@ -1,1697 +0,0 @@ -# BANK COMPATIBILITY LIST - -This library is verified to work with following banks. - -* If you can not find your bank, feel free to add it to the list. -* If you could successfully test the library with a bank, please mark it here as verified. - -## Bank List - -- [ ] 1822direkt (PIN/TAN) -- [ ] Aachener Bank eG -- [ ] Abtsgmünder Bank -Raiffeisen- -- [ ] AgrarB@nk -- [ ] akf bank GmbH & Co KG -- [ ] AKTIVBANK -- [ ] Allgäuer Volksbank Kempten-Sonthofen -- [ ] Allianz-Bank (Zndl der Oldenburgische Landesbank AG) -- [ ] Augsburger Aktienbank AG -- [ ] Augusta-Bank Raiffeisen-Volksbank -- [ ] Bad Waldseer Bank -- [ ] Baden-Württembergische Bank (BW-Bank) -- [ ] BAG Bankaktiengesellsch. Hamm -- [ ] Bank 1 Saar -- [ ] Bank f Orden u Mission Zndl vr bk Untertaunus -- [ ] Bank für Kirche und Caritas eG -- [ ] Bank für Kirche und Diakonie eG -- [ ] Bank im Bistum Essen eG -- [ ] Bank Sarasin -- [ ] Bank Schilling & Co -- [ ] Bank11Direkt GmbH -- [ ] Bankhaus Bauer -- [ ] Bankhaus C. Faisst OHG -- [ ] Bankhaus C. L. Seeliger -- [ ] Bankhaus Carl F. Plump & Co. GmbH & Co. KG -- [ ] Bankhaus E. Mayer AG -- [ ] Bankhaus Ellwanger & Geiger -- [ ] Bankhaus Hallbaum AG -- [ ] Bankhaus Jungholz Zndl der Raiffeisenbank Reutte -- [x] Bankhaus Kruber -- [ ] Bankhaus Lampe -- [ ] Bankhaus Löbbecke & Co. -- [ ] Bankhaus Ludwig Sperrer KG -- [ ] Bankhaus Max Flessa KG (Flessabank) -- [ ] Bankhaus Neelmeyer -- [x] Bankhaus Rautenschlein -- [ ] Bankverein Bebra -- [ ] Bankverein Werther AG -- [ ] Bayerische Landesbank Girozentrale -- [ ] BBBank -- [ ] Bensberger Bank eG -- [ ] Berkheimer Bank -- [ ] Berliner Sparkasse -- [x] Berliner Volksbank -- [ ] Bernhauser Bank -- [ ] Bezirkssparkasse Reichenau -- [ ] Bezirkssparkasse St. Blasien -- [ ] BHF-Bank AG -- [x] Birsteiner Volksbank -- [ ] biw Bank für Investments und Wertpapiere -- [x] BNP Paribas S.A. Niederlassung Deutschland - Consorsbank -- [ ] Bopfinger Bank Sechta-Ries -- [ ] Bordesholmer Sparkasse AG -- [ ] Borkener Volksbank eG. -- [ ] Brandenburger Bank Volksbank-Raiffeisenbank eG -- [ ] Bremer Landesbank -- [ ] Bremische Volksbank eG -- [ ] Brookmerlander Raiffeisenbank eG -- [ ] Brühler Kreditbank eG -- [ ] Budenheimer Volksbank -- [ ] BVB Volksbank Ndl d Frankfurter Volksbank -- [ ] Calenberger Kreditverein -- [ ] Cash Express Gesellschaft f Finanz-u Reisedienstleistungen -- [x] comdirect bank AG -- [ ] Commerzbank -- [ ] Crailsheimer Volksbank -alt- -- [ ] Credit- und Volksbank eG -- [x] Cronbank -- [ ] CVW - Privatbank -- [ ] Darmsheimer Bank -- [ ] Degussa Bank AG -- [ ] Dettinger Bank -- [ ] Deutsche Apotheker- und Ärztebank eG -- [ ] Deutsche Bank AG -- [x] Deutsche Bank Privat und Geschäftskunden AG -- [ ] Deutsche Genossenschafts-Hypothekenbank AG -- [x] Deutsche Kreditbank Berlin (DKB) AG -- [ ] Deutsche Skatbank Zndl VR Bank Altenburger Land -- [ ] Die Sparkasse Bremen -- [ ] Dithmarscher Volks- und Raiffeisenbank eG -- [ ] DKM Darlehnskasse Münster eG -- [ ] Donner & Reuschel Aktiengesellschaft -- [ ] Dortmunder Volksbank eG. -- [ ] Dresdner Volksbank Raiffeisenbank -- [ ] Düsseldorfer Bank eG -- [ ] Echterdinger Bank -- [ ] Eckernförder Bank eG Volksbank-Raiffeisenbank -- [ ] EDEKABANK AG -- [ ] Ehinger Volksbank -- [ ] Ehninger Bank -- [ ] Emsländische Volksbank eG -- [ ] Enztalbank -- [ ] Eppelborner Volksbank -alt- -- [ ] Erfurter Bank -- [ ] Erligheimer Bank -alt- -- [ ] Erzgebirgssparkasse -- [x] Ev. Darlehnsgenossenschaft eG -- [ ] Evangelische Kreditgenossenschaft -- [ ] Evenord-Bank -- [ ] Federseebank -- [ ] Fellbacher Bank -- [ ] Föhr-Amrumer Bank eG -- [ ] Förde Sparkasse -- [ ] Frankenberger Bank Raiffeisenbank -- [x] Frankfurter Bankgesellschaft -- [x] Frankfurter Sparkasse -- [x] Frankfurter Volksbank e.G. -- [ ] Freiberger Bank -- [ ] Freisinger Bank Volksbank-Raiffeisenbank -- [ ] Fürst Fugger Privatbank -- [ ] Fürst Fugger Privatbankiers -- [ ] Fürstlich Castell'sche Bank -- [ ] Gabler-Saliter-Bank KG -- [x] GALLINAT-BANK -- [x] GENO Broker GmbH -- [ ] Geno-Volks-Bank Essen eG. -- [ ] GenoBank DonauWald -- [ ] Genobank Mainz -- [ ] Genobank Rhön-Grabfeld -- [ ] Genobank Rhön-Grabfeld eG -- [ ] Genossenschaftsbank Meckenbeuren -- [ ] Genossenschaftsbank München -- [ ] Genossenschaftsbank Unterallgäu -- [ ] Genossenschaftsbank Weil im Schönbuch -- [ ] Genossenschaftsbank Wolfschlugen -- [ ] Geraer Bank -- [ ] Giengener Volksbank -alt- -- [ ] Gladbacher Bank AG -- [x] GLS Gemeinschaftsbank eG -- [x] Goyer & Göppel -- [ ] Grafschafter Volksbank eG -- [x] GRENKE BANK -- [x] Gries & Heissel - Bankiers -- [x] Groß-Gerauer Volksbank -- [ ] H + G BANK Heidelberg -- [ ] Hagnauer Volksbank -- [x] Hallertauer Volksbank -- [ ] Hamburger Bank v. 1861 -- [ ] Hamburger Bank von 1861 Volksbank eG -- [ ] Hamburger Sparkasse -- [x] Hannoversche Volksbank eG -- [ ] Harzsparkasse -- [ ] Hauck & Aufhäuser Privatbankiers -- [ ] Hausbank München -- [ ] Hegnacher Bank -alt- -- [ ] Heidelberger Volksbank -- [ ] Heidenheimer Volksbank -- [ ] Herner Sparkasse -- [ ] Hoerner-Bank -- [ ] HSBC Trinkaus & Burkhardt -- [ ] HSH Nordbank AG -- [ ] Hümmlinger Volksbank eG -- [x] Hüttenberger Bank -- [ ] Ibbenbürener Volksbank eG -- [x] ING-DiBa AG -- [ ] Internationales Bankhaus Bodensee -- [ ] Kasseler Bank -- [ ] Kasseler Sparkasse -- [ ] KBC-Bank -- [ ] Keine FinTS-Unterstützung -- [ ] Kerner Volksbank -- [ ] Kieler Volksbank eG -- [ ] Kölner Bank eG -- [ ] Korber Bank -- [ ] Kreis- und Stadtsparkasse Dillingen -- [ ] Kreis- und Stadtsparkasse Dinkelsbühl -- [ ] Kreis- und Stadtsparkasse Kaufbeuren -- [ ] Kreis- und Stadtsparkasse Wasserburg am Inn -- [x] Kreissparkasse Ahrweiler -- [ ] Kreissparkasse Anhalt-Bitterfeld -- [x] Kreissparkasse Augsburg -- [ ] Kreissparkasse Bautzen -- [ ] Kreissparkasse Bersenbrück -- [ ] Kreissparkasse Biberach -- [ ] Kreissparkasse Birkenfeld -- [ ] Kreissparkasse Bitburg-Prüm -- [ ] Kreissparkasse Böblingen -- [ ] Kreissparkasse Börde -- [ ] Kreissparkasse Döbeln -- [ ] Kreissparkasse Düsseldorf -- [ ] Kreissparkasse Eichsfeld -- [x] Kreissparkasse Esslingen-Nürtingen -- [ ] Kreissparkasse Euskirchen -- [ ] Kreissparkasse Freudenstadt -- [ ] Kreissparkasse Garmisch-Partenkirchen -- [ ] Kreissparkasse Gelnhausen -- [ ] Kreissparkasse Göppingen -- [ ] Kreissparkasse Gotha -- [ ] Kreissparkasse Grafschaft Bentheim zu Nordhorn -- [ ] Kreissparkasse Grafschaft Diepholz -- [ ] Kreissparkasse Groß-Gerau -- [ ] Kreissparkasse Halle (Westf.) -- [ ] Kreissparkasse Heidenheim -- [ ] Kreissparkasse Heilbronn -- [ ] Kreissparkasse Heinsberg -- [ ] Kreissparkasse Herzogtum Lauenburg -- [ ] Kreissparkasse Hildburghausen -- [ ] Kreissparkasse Höchstadt a. d. Aisch -- [x] Kreissparkasse Kaiserslautern -- [ ] Kreissparkasse Kelheim -- [x] Kreissparkasse Köln -- [ ] Kreissparkasse Kusel -- [ ] Kreissparkasse Limburg -- [ ] Kreissparkasse Ludwigsburg -- [ ] Kreissparkasse Mayen -- [ ] Kreissparkasse Melle -- [ ] Kreissparkasse Miesbach-Tegernsee -- [x] Kreissparkasse München Starnberg Ebersberg -- [ ] Kreissparkasse Nordhausen -- [ ] Kreissparkasse Northeim -- [ ] Kreissparkasse Ostalb (Aalen) -- [ ] Kreissparkasse Osterholz -- [ ] Kreissparkasse Peine -- [ ] Kreissparkasse Ravensburg -- [ ] Kreissparkasse Recklinghausen -- [ ] Kreissparkasse Reutlingen -- [ ] Kreissparkasse Rhein-Hunsrück -- [ ] Kreissparkasse Rottweil -- [ ] Kreissparkasse Saale-Orla -- [ ] Kreissparkasse Saalfeld-Rudolstadt -- [ ] Kreissparkasse Saarlouis -- [ ] Kreissparkasse Saarpfalz -- [ ] Kreissparkasse Schlüchtern -- [ ] Kreissparkasse Schongau -- [ ] Kreissparkasse Schwäbisch Hall-Crailsheim -- [ ] Kreissparkasse Schwalm-Eder -- [ ] Kreissparkasse Sigmaringen -- [ ] Kreissparkasse Soltau -- [ ] Kreissparkasse St. Wendel -- [ ] Kreissparkasse Stade -- [ ] Kreissparkasse Steinfurt -- [ ] Kreissparkasse Stendal -- [ ] Kreissparkasse Syke -- [ ] Kreissparkasse Traunstein-Trostberg -- [ ] Kreissparkasse Tübingen -- [ ] Kreissparkasse Tuttlingen -- [ ] Kreissparkasse Verden -- [ ] Kreissparkasse Vulkaneifel -- [ ] Kreissparkasse Waiblingen -- [ ] Kreissparkasse Walsrode -- [ ] Kreissparkasse Weilburg -- [ ] Kreissparkasse Wiedenbrück -- [ ] Kulmbacher Bank -- [ ] Kurhessische Landbank -- [ ] Kyffhäusersparkasse Artern-Sondershausen -- [ ] Landbank Horlofftal -- [ ] Landesbank Baden-Württemberg -- [ ] Landesbank Berlin AG -- [ ] Landeskirchliche Kredit-Genossenschaft Sachsen -- [ ] Landessparkasse zu Oldenburg -- [ ] Landsberg-Ammersee Bank -- [ ] Leutkircher Bank Raiffeisen- und Volksbank -- [ ] LevoBank Vereinte VB Lebach Eppelborn -- [ ] LIGA Bank -- [ ] Löchgauer Bank -- [ ] Lohner Bank eG -- [ ] M.M.Warburg & CO (AG & Co.) Kommanditgesellschaft auf Aktien -- [ ] Mainzer Volksbank -- [ ] Marcard,Stein & Co GmbH -- [ ] Märkische Bank -- [ ] Merck Finck & Co. -- [ ] Merkur Bank -- [ ] Mittelbrandenburgische Sparkasse in Potsdam -- [ ] MKB Mittelstandskreditbank Aktiengesellschaft -- [ ] MLP Finanzdienstleistungen -- [ ] MLP Finanzdienstleistungen Zw CS -- [ ] Münchner Bank -- [ ] Münsterländische Bank Thie & Co -- [ ] Murgtalbank Mitteltal - Obertal -alt- -- [ ] Müritz-Sparkasse -- [ ] Nassauische Sparkasse -- [ ] National-Bank -- [ ] net-m privatbank 1891 AG -- [ ] netbank AG -- [ ] NF Bank -- [ ] NIBC Bank Zndl Frankfurt am Main -- [ ] NL Bank Volks- und Raiffeisenbank eG -- [ ] Nord-Ostsee Sparkasse -- [ ] Nord/LB Hannover -- [ ] Norderstedter Bank eG -- [ ] Nordthüringer Volksbank -- [ ] norisbank GmbH -- [ ] Nufringer Bank -Raiffeisen- -- [ ] Oberbank AG -- [x] Offenbacher Volksbank -alt- -- [ ] Onstmettinger Bank -- [ ] Ostfriesische Volksbank eG -- [x] Ostsächsische Sparkasse Dresden -- [ ] Ostseesparkasse Rostock -- [ ] Paffrather Raiffeisenbank eG -- [ ] Paffrather RB eG -- [ ] Pax Bank -- [ ] PayCenter GmbH -- [ ] Postbank -- [ ] Postbank (Giro) -- [x] Postbank Geschäftskunden -- [x] PSD Bank Berlin-Brandenburg -- [x] PSD Bank Braunschweig -- [x] PSD Bank Hannover -- [x] PSD Bank Hessen-Thüringen -- [x] PSD Bank Kiel -- [x] PSD Bank Köln -- [x] PSD Bank Nord -- [x] PSD Bank Rhein-Ruhr -- [x] PSD Bank Westfalen-Lippe -- [ ] Raiba Asbach-Neustadt eG -- [ ] Raiba eG Unterwesterwald -- [ ] Raiba Lutzerather Höhe eG -- [ ] Raiba Mehring-Leiwen eG -- [ ] Raiba Rheinbach Euskirchen eG -- [ ] Raiffbk Neumarkt-St. Veit - Niederbergkirchen -- [ ] Raiffeisen Spar+Kreditbank Lauf a d Pegnitz -- [x] Raiffeisen Volksbank -- [ ] Raiffeisen- u Volksbank Dahn -- [ ] Raiffeisen- und Volksbank Bad Bramstedt eG -- [ ] Raiffeisen-Bank Bad Abbach-Saal -- [ ] Raiffeisen-Bank Bruck -- [ ] Raiffeisen-Bodenseebank -- [ ] Raiffeisen-Volksbank -- [ ] Raiffeisen-Volksbank Bad Staffelstein -- [ ] Raiffeisen-Volksbank Delmenhorst-Schierbrok eG -- [ ] Raiffeisen-Volksbank Dillingen -- [ ] Raiffeisen-Volksbank Donauwörth -- [ ] Raiffeisen-Volksbank Ebersberg -- [ ] Raiffeisen-Volksbank Fürth -- [ ] Raiffeisen-Volksbank Grafeld-Nortrup eG -- [ ] Raiffeisen-Volksbank Haßberge -- [ ] Raiffeisen-Volksbank Hermsdorfer Kreuz -- [ ] Raiffeisen-Volksbank Isen-Sempt -- [ ] Raiffeisen-Volksbank Jever eG -- [ ] Raiffeisen-Volksbank Kronach-Ludwigsstadt -- [ ] Raiffeisen-Volksbank Lichtenfels-Itzgrund -- [ ] Raiffeisen-Volksbank Miltenberg -- [ ] Raiffeisen-Volksbank Neuburg/Donau -- [ ] Raiffeisen-Volksbank Neustadt eG -- [ ] Raiffeisen-Volksbank Oder-Spree eG -- [ ] Raiffeisen-Volksbank Quedlinburg-Aschersleben eG -- [ ] Raiffeisen-Volksbank Ries -- [ ] Raiffeisen-Volksbank Saale-Orla -- [ ] Raiffeisen-Volksbank Uplengen-Remels eG -- [ ] Raiffeisen-Volksbank Varel-Nordenham eG -- [ ] Raiffeisen-Volksbank Wemding -- [ ] Raiffeisenbank -- [ ] Raiffeisenbank -alt- -- [ ] Raiffeisenbank Adelzhausen-Sielenbach -- [ ] Raiffeisenbank Aichhalden-Hardt-Sulgen -- [ ] Raiffeisenbank Aiglsbach -- [ ] Raiffeisenbank Aitrang-Ruderatshofen -- [ ] Raiffeisenbank Alsheim-Gimbsheim -- [ ] Raiffeisenbank Altdorf-Ergolding -- [ ] Raiffeisenbank Altdorf-Feucht -- [ ] Raiffeisenbank Alteglofsheim-Hagelstadt -- [ ] Raiffeisenbank Altschweier -- [ ] Raiffeisenbank Alxing-Bruck -- [x] Raiffeisenbank Alzey-Land -- [ ] Raiffeisenbank am Dreisessel -- [ ] Raiffeisenbank Am Goldenen Steig -- [ ] Raiffeisenbank am Kulm -- [ ] Raiffeisenbank am Rothsee -- [ ] Raiffeisenbank Anklam eG -- [ ] Raiffeisenbank Anzing-Forstern -alt- -- [ ] Raiffeisenbank Aresing-Hörzhausen-Schiltberg -- [ ] Raiffeisenbank Arnstorf -- [ ] Raiffeisenbank Asbach-Sorga -- [ ] Raiffeisenbank Aschaffenburg -- [ ] Raiffeisenbank Aschau-Samerberg -- [ ] Raiffeisenbank Aschberg -- [ ] Raiffeisenbank Auerbach-Freihung -- [ ] Raiffeisenbank Augsburger Land West -- [ ] Raiffeisenbank Aulendorf -- [ ] Raiffeisenbank Bachgau -- [ ] Raiffeisenbank Bad Doberan eG -- [ ] Raiffeisenbank Bad Gögging -- [x] Raiffeisenbank Bad Homburg Ndl d FrankfurterVB -- [ ] Raiffeisenbank Bad Kötzting -- [ ] Raiffeisenbank Bad Saulgau -- [ ] Raiffeisenbank Bad Schussenried -- [ ] Raiffeisenbank Bad Windsheim -- [ ] Raiffeisenbank Baiertal -- [ ] Raiffeisenbank Baisweil-Eggenthal-Friesenried -- [ ] Raiffeisenbank Bargteheide eG -- [ ] Raiffeisenbank Bauschlott -- [ ] Raiffeisenbank Beilngries -- [ ] Raiffeisenbank Berching-Freystadt-Mühlhausen -- [ ] Raiffeisenbank Berg im Gau-Langenmosen -alt- -- [ ] Raiffeisenbank Berg-Bad Steben -- [ ] Raiffeisenbank Berne-Moorriem eG -- [ ] Raiffeisenbank Beuerberg-Eurasburg -- [ ] Raiffeisenbank Bibertal-Kötz -- [ ] Raiffeisenbank Biebergrund-Petersberg -- [ ] Raiffeisenbank Bissingen -- [ ] Raiffeisenbank Böllingertal -- [ ] Raiffeisenbank Borken -- [ ] Raiffeisenbank Bretzfeld-Neuenstein -- [x] Raiffeisenbank Bruchköbel -alt- -- [ ] Raiffeisenbank Buch-Eching -- [ ] Raiffeisenbank Burghaun -- [ ] Raiffeisenbank Butjadingen-Abbehausen eG -- [ ] Raiffeisenbank Bütthard-Gaukönigshofen -- [ ] Raiffeisenbank Cham-Roding-Furth im Wald -- [ ] Raiffeisenbank Chiemgau-Nord - Obing -- [ ] Raiffeisenbank Deggendorf-Plattling -- [ ] Raiffeisenbank Dellmensingen -- [ ] Raiffeisenbank Denzlingen-Sexau -- [ ] Raiffeisenbank Dietersheim und Umgebung -- [ ] Raiffeisenbank Donau-Heuberg -- [ ] Raiffeisenbank Donau-Iller -- [ ] Raiffeisenbank Donaumooser Land -- [ ] Raiffeisenbank Donnersberg -alt- -- [ ] Raiffeisenbank Ebrachgrund -- [ ] Raiffeisenbank Ehekirchen-Oberhausen -- [ ] Raiffeisenbank Ehingen-Hochsträß -- [ ] Raiffeisenbank Eichenbühl und Umgebung -- [ ] Raiffeisenbank Elbmarsch eG -- [ ] Raiffeisenbank Elsavatal -- [ ] Raiffeisenbank Elztal -- [ ] Raiffeisenbank Emmerich eG -- [ ] Raiffeisenbank Emsland-Mitte eG -- [ ] Raiffeisenbank Erding -- [ ] Raiffeisenbank Erkelenz eG -- [ ] Raiffeisenbank Erlenmoos -- [ ] Raiffeisenbank Ersingen -- [ ] Raiffeisenbank Eschlkam-Lam-Lohberg-Neukirchen b Hl Blut -- [ ] Raiffeisenbank Eschweiler eG -- [ ] Raiffeisenbank Estenfeld-Bergtheim -- [ ] Raiffeisenbank Falkenstein-Wörth -- [ ] Raiffeisenbank Flachsmeer eG -- [ ] Raiffeisenbank Frankenhardt-Stimpfach -- [ ] Raiffeisenbank Frankenwald Ost-Oberkotzau -- [ ] Raiffeisenbank Frankenwinheim und Umgebung -- [ ] Raiffeisenbank Fränkisches Weinland -- [ ] Raiffeisenbank Frechen-Hürth -- [ ] Raiffeisenbank Freinsheim -- [ ] Raiffeisenbank Friedelsheim-Rödersheim -- [ ] Raiffeisenbank Fuchstal-Denklingen -- [ ] Raiffeisenbank Füssen-Pfronten-Nesselwang -- [ ] Raiffeisenbank Gaimersheim-Buxheim -- [ ] Raiffeisenbank Gammesfeld -- [ ] Raiffeisenbank Garrel eG -- [ ] Raiffeisenbank Geiselhöring-Pfaffenberg -- [ ] Raiffeisenbank Geisenhausen -- [ ] Raiffeisenbank Geislingen-Rosenfeld -- [ ] Raiffeisenbank Gerolsbach -- [ ] Raiffeisenbank Gmund am Tegernsee -- [ ] Raiffeisenbank Gößweinstein -alt- -- [ ] Raiffeisenbank Gotha -- [ ] Raiffeisenbank Grafenwöhr-Kirchenthumbach -- [ ] Raiffeisenbank Greding - Thalmässing -- [ ] Raiffeisenbank Grevenbroich eG -- [ ] Raiffeisenbank Griesstätt-Halfing -- [ ] Raiffeisenbank Grimma -- [x] Raiffeisenbank Groß-Rohrheim -- [ ] Raiffeisenbank Großhabersdorf-Roßtal -- [ ] Raiffeisenbank Gruibingen -- [ ] Raiffeisenbank Gymnich eG -- [ ] Raiffeisenbank Haag-Gars-Maitenbeth -- [ ] Raiffeisenbank Hagenow eG -- [ ] Raiffeisenbank Haibach-Obernau -- [ ] Raiffeisenbank Haldenwang -- [ ] Raiffeisenbank Hallbergmoos-Neufahrn -- [ ] Raiffeisenbank Hallertau -- [ ] Raiffeisenbank Handewitt eG -- [ ] Raiffeisenbank Hardt-Bruhrain -- [ ] Raiffeisenbank Hardtbg.-Alfter -- [ ] Raiffeisenbank Härten -alt- -- [ ] Raiffeisenbank Heide eG -- [ ] Raiffeisenbank Heidenheimer Alb -- [ ] Raiffeisenbank Heilsbronn-Windsbach -- [ ] Raiffeisenbank Hemau-Kallmünz -- [ ] Raiffeisenbank Hengersberg-Schöllnach -- [ ] Raiffeisenbank Heroldstatt -- [ ] Raiffeisenbank Herrnwahlthann-Teugn-Dünzling -alt- -- [ ] Raiffeisenbank Hersbruck -- [ ] Raiffeisenbank Hirschau -- [ ] Raiffeisenbank Höchberg -- [ ] Raiffeisenbank Hofkirchen-Bayerbach -- [ ] Raiffeisenbank Höhenkirchen und Umgebung -- [ ] Raiffeisenbank Hohenwart -alt- -- [ ] Raiffeisenbank Hollfeld-Waischenfeld-Aufseß -- [ ] Raiffeisenbank Holzkirchen-Otterfing -- [ ] Raiffeisenbank Horb -- [ ] Raiffeisenbank i Lkr Passau-Nord -- [ ] Raiffeisenbank Iller-Roth-Günz -- [ ] Raiffeisenbank Illertal -- [ ] Raiffeisenbank im Allgäuer Land -- [ ] Raiffeisenbank im Kreis Calw -- [ ] Raiffeisenbank im Naabtal -- [ ] Raiffeisenbank im Oberland -- [ ] Raiffeisenbank im Stiftland -- [ ] Raiffeisenbank im Südl Bayerischen Wald -- [ ] Raiffeisenbank Ingersheim -- [ ] Raiffeisenbank Irrel eG -- [ ] Raiffeisenbank Isar-Loisachtal -- [ ] Raiffeisenbank Jessen eG -- [ ] Raiffeisenbank Jettingen-Scheppach -- [ ] Raiffeisenbank Junkersdorf eG -- [ ] Raiffeisenbank Kaarst eG -- [ ] Raiffeisenbank Kaisersesch eG -- [ ] Raiffeisenbank Kaiserstuhl -- [ ] Raiffeisenbank Kalbe-Bismark eG -- [ ] Raiffeisenbank Kallmünz -alt- -- [ ] Raiffeisenbank Kaltenkirchen eG -- [ ] Raiffeisenbank Karlstadt-Gemünden -- [ ] Raiffeisenbank Kastellaun eG -- [ ] Raiffeisenbank Kehrig eG -- [ ] Raiffeisenbank Kemnather Land - Steinwald -- [ ] Raiffeisenbank Kieselbronn -- [ ] Raiffeisenbank Kirchberg v. Wald -- [ ] Raiffeisenbank Kirchheim-Walheim -- [ ] Raiffeisenbank Kirchweihtal -- [x] Raiffeisenbank Kirtorf -- [ ] Raiffeisenbank Kissing-Mering -- [ ] Raiffeisenbank Kitzinger Land -- [ ] Raiffeisenbank Knoblauchsland Nürnberg-Buch -- [ ] Raiffeisenbank Kocher-Jagst -- [ ] Raiffeisenbank Kraichgau -- [ ] Raiffeisenbank Kreuzwertheim-Hasloch -alt- -- [ ] Raiffeisenbank Krumbach/Schwaben -- [ ] Raiffeisenbank Küps-Mitwitz-Stockheim -- [ ] Raiffeisenbank Kürten-Odenthal eG -- [ ] Raiffeisenbank Langenschwarz -- [ ] Raiffeisenbank Lech-Ammersee -- [ ] Raiffeisenbank Leezen eG -- [ ] Raiffeisenbank Lorup eG -- [x] Raiffeisenbank Maintal Ndl d Frankfurter VB -- [ ] Raiffeisenbank Maitis -- [ ] Raiffeisenbank Malchin eG -- [ ] Raiffeisenbank Mangfalltal -alt- -- [ ] Raiffeisenbank Maselheim-Äpfingen -- [ ] Raiffeisenbank Maßbach -- [ ] Raiffeisenbank Mengkofen-Loiching -- [ ] Raiffeisenbank Mittelbiberach -- [ ] Raiffeisenbank Mittelrhein eG -- [ ] Raiffeisenbank Moormerland eG -- [ ] Raiffeisenbank Moselkrampen eG -- [ ] Raiffeisenbank Münchaurach -alt- -- [ ] Raiffeisenbank München -alt- -- [ ] Raiffeisenbank München-Nord -- [ ] Raiffeisenbank München-Süd -- [ ] Raiffeisenbank Mutlangen -- [ ] Raiffeisenbank Nahe eG -- [ ] Raiffeisenbank Neudenau-Stein-Herbolzheim -- [ ] Raiffeisenbank Neumarkt -- [ ] Raiffeisenbank Neustadt-Vohenstrauß -- [ ] Raiffeisenbank Neustadt, Sachs -- [ ] Raiffeisenbank Niedere Alb -- [ ] Raiffeisenbank Nordkreis Landsberg -- [x] Raiffeisenbank Nördliche Bergstraße -- [ ] Raiffeisenbank Oberallgäu-Süd -- [ ] Raiffeisenbank Oberaudorf -- [ ] Raiffeisenbank Oberer Wald -- [ ] Raiffeisenbank Oberes Bühlertal -- [ ] Raiffeisenbank Oberes Gäu Ergenzingen -- [ ] Raiffeisenbank Oberessendorf -- [ ] Raiffeisenbank Obereßfeld-Römhild -- [ ] Raiffeisenbank Oberferrieden-Burgthann -- [ ] Raiffeisenbank Obergermaringen -- [ ] Raiffeisenbank Oberhaardt-Gäu -- [ ] Raiffeisenbank Oberland -- [ ] Raiffeisenbank Obermain Nord -- [ ] Raiffeisenbank Obernburg -- [ ] Raiffeisenbank Oberpfalz Süd -- [ ] Raiffeisenbank Oberschleißheim -- [x] Raiffeisenbank Oberursel -- [x] Raiffeisenbank Offenbach/M.-Bieber -- [ ] Raiffeisenbank Oldenburg eG -- [ ] Raiffeisenbank östl. Südeifel eG -- [ ] Raiffeisenbank Ostprignitz-Ruppin eG -- [ ] Raiffeisenbank Ottenbach -- [ ] Raiffeisenbank Owschlag eG -- [ ] Raiffeisenbank Parsberg-Velburg -- [ ] Raiffeisenbank Pfaffenhausen -- [ ] Raiffeisenbank Pfaffenhofen a d Glonn -- [ ] Raiffeisenbank Pfaffenwinkel -- [ ] Raiffeisenbank Pfeffenhausen-Rottenburg -- [ ] Raiffeisenbank Plankstetten -- [ ] Raiffeisenbank Pretzfeld -alt- -- [ ] Raiffeisenbank Rain am Lech -- [ ] Raiffeisenbank Raisting -- [ ] Raiffeisenbank Rastede eG -- [ ] Raiffeisenbank Rattiszell-Konzell -- [ ] Raiffeisenbank Ratzeburg eG -- [ ] Raiffeisenbank Ravensburg -- [ ] Raiffeisenbank Regensburg-Wenzenbach -- [ ] Raiffeisenbank Reischach-Wurmannsquick-Zeilarn -- [ ] Raiffeisenbank Reute-Gaisbeuren -- [ ] Raiffeisenbank Rhein-Berg eG -- [x] Raiffeisenbank Ried -- [ ] Raiffeisenbank Riedenburg-Lobsing -- [ ] Raiffeisenbank Rißtal -- [ ] Raiffeisenbank Ronshausen-Marksuhl -- [ ] Raiffeisenbank Rosenstein -- [ ] Raiffeisenbank Roth-Schwabach -- [ ] Raiffeisenbank Rottumtal -- [ ] Raiffeisenbank RSA -- [ ] Raiffeisenbank Rupertiwinkel -- [ ] Raiffeisenbank Salzweg-Thyrnau -- [x] Raiffeisenbank Schaafheim -- [ ] Raiffeisenbank Scharrel eG -- [ ] Raiffeisenbank Schefflenz-Seckach -alt- -- [ ] Raiffeisenbank Schlat -alt- -- [ ] Raiffeisenbank Schleusingen -- [ ] Raiffeisenbank Schrobenhausen -- [ ] Raiffeisenbank Schrobenhausener Land -- [ ] Raiffeisenbank Schrozberg-Rot am See -- [ ] Raiffeisenbank Schwandorf-Nittenau -- [ ] Raiffeisenbank Seebachgrund -- [ ] Raiffeisenbank Seeg -alt- -- [ ] Raiffeisenbank Seestermühe eG -- [ ] Raiffeisenbank Simmerath eG -- [ ] Raiffeisenbank Singoldtal -- [ ] Raiffeisenbank Sondelfingen -- [ ] Raiffeisenbank Sonnenwald -- [ ] Raiffeisenbank Sparneck-Stammbach-Zell -- [ ] Raiffeisenbank St. Augustin eG -- [ ] Raiffeisenbank St. Wolfgang-Schwindkirchen -- [ ] Raiffeisenbank Stauden -- [ ] Raiffeisenbank Stegaurach -- [ ] Raiffeisenbank Steinheim -- [ ] Raiffeisenbank Strücklingen-Idafehn eG -- [ ] Raiffeisenbank Struvenhütten eG -- [ ] Raiffeisenbank Südhardt Durmersheim -- [ ] Raiffeisenbank Südliches Ostallgäu -- [ ] Raiffeisenbank südöstl. Starnberger See -- [ ] Raiffeisenbank Südstormarn eG -- [ ] Raiffeisenbank Südtondern-Bredstedt/Land eG -- [ ] Raiffeisenbank Sulzbach-Rosenberg -- [ ] Raiffeisenbank Tattenh-Großkarolinenf -- [ ] Raiffeisenbank Taufkirchen-Oberneukirchen -- [ ] Raiffeisenbank Teck -- [ ] Raiffeisenbank Thurnauer Land -- [ ] Raiffeisenbank Todenbüttel eG -- [ ] Raiffeisenbank Tölzer Land -- [ ] Raiffeisenbank Travemünde eG -- [ ] Raiffeisenbank Trendelburg -- [ ] Raiffeisenbank Trostberg-Traunreut -- [ ] Raiffeisenbank Tüngental -- [ ] Raiffeisenbank Uehlfeld-Dachsbach -- [ ] Raiffeisenbank Ulsenheim-Gollhofen -alt- -- [ ] Raiffeisenbank Unteres Inntal -- [ ] Raiffeisenbank Unteres Vilstal -- [ ] Raiffeisenbank Unteres Zusamtal -- [ ] Raiffeisenbank Unterschleißheim-Haimhn -alt- -- [ ] Raiffeisenbank Urbach -- [ ] Raiffeisenbank Ursensollen-Ammerthal-Hohenburg -- [ ] Raiffeisenbank Vellberg-Großaltdorf -- [ ] Raiffeisenbank Vilshofener Land -- [x] Raiffeisenbank Vogelsberg -- [ ] Raiffeisenbank Volkach-Wiesentheid -- [ ] Raiffeisenbank Volkmarsen -- [ ] Raiffeisenbank von 1895 eG -- [ ] Raiffeisenbank Vorallgäu -- [ ] Raiffeisenbank Vordere Alb -- [ ] Raiffeisenbank Vordersteinenberg -- [ ] Raiffeisenbank Wald-Görisried -- [ ] Raiffeisenbank Waldaschaff-Heigenbrücken -- [ ] Raiffeisenbank Wallgau-Krün -- [ ] Raiffeisenbank Walpertskirchen-Wörth-Hörlkofen -- [ ] Raiffeisenbank Waren eG -- [ ] Raiffeisenbank Weiden -- [ ] Raiffeisenbank Weil u Umgebung -- [ ] Raiffeisenbank Weilheim -- [ ] Raiffeisenbank Weissach -- [ ] Raiffeisenbank Weissacher Tal -- [ ] Raiffeisenbank Weißenburg-Gunzenhausen -- [ ] Raiffeisenbank Welling eG -- [ ] Raiffeisenbank Werdau-Zwickau -- [ ] Raiffeisenbank Werratal-Landeck Zw -- [ ] Raiffeisenbank Westallgäu -- [ ] Raiffeisenbank Westeifel eG -- [ ] Raiffeisenbank Westhausen -- [ ] Raiffeisenbank Westkreis Fürstenfeldbruck -- [ ] Raiffeisenbank Wiehl eG -- [ ] Raiffeisenbank Wiesede-Marcardsmoor eG -- [ ] Raiffeisenbank Wimsheim-Mönsheim -- [ ] Raiffeisenbank Wittislingen -- [ ] Raiffeisenbank Wüstenselbitz -- [ ] Raiffeisenbank Wyhl -- [ ] Raiffeisenbank Zeitz eG -- [ ] Raiffeisenbank Zeller Land eG -- [ ] Raiffeisenbank Zndl VB Nordschwarzwald -- [ ] Raiffeisenbank Zorneding -- [ ] Raiffeisenbk Ingolstadt-Pfaffenhofen-Eichstätt -- [ ] Raiffeisenbk. Niederwallmenach -- [x] Raiffeisenkasse Erbes-Büdesheim und Umgebung -- [ ] Raiffeisenkasse Wiesbach -- [ ] Raiffeisenlandesbank Oberösterreich -- [ ] RaiffeisenVolksbank Gewerbebank -- [ ] RB Bernkastel-Wittlich eG -- [ ] RB eG Heinsberg -- [ ] RB eG Lauenburg -- [ ] RB eG, Heinsberg -- [ ] RB eG, Leezen -- [ ] RB Fischenich-Kendenich eG -- [ ] RB Frechen-Hürth eG -- [ ] RB Grafschaft-Wachtberg eG -- [ ] RB Hatten-Wardenburg -- [ ] RB Much-Ruppichteroth eG -- [x] Rheingauer Volksbank -- [ ] Rhön-Rennsteig-Sparkasse -- [ ] Ritterschaftl. Kreditinst. Stade -- [ ] Rosbacher Raiffeisenbank eG -- [ ] Rostocker Volks- und Raiffeisenbank eG -- [ ] Rottaler Raiffeisenbank -- [ ] Rottaler Volksbank-Raiffeisenbank Eggenfelden -- [ ] RSB Retail + Service Bank -- [x] Rüsselsheimer Volksbank -- [ ] RV Bank Rhein-Haardt -- [ ] RV-Bank -- [ ] RVB Grafeld-Nortup eG -- [ ] Saalesparkasse -- [ ] SaarLB -- [ ] Salzlandsparkasse -- [ ] Santander Bank -- [ ] Sberbank Direct -- [ ] Scharnhauser Bank -- [ ] Schwäbische Bank AG -- [ ] SDK Menden eG -- [ ] SDK Oeventrop eG -- [ ] SDK Schloß Holte-Stukenbrock -- [ ] SG BANK AG -- [ ] SKG BANK AG / SKG BANK GmbH -- [ ] SpaDaka Aegidienberg eG -- [ ] Spadaka Bockum-Hövel eG. -- [ ] Spadaka Gescher eG -- [ ] Spadaka Minden-Porta Westfalica -- [ ] Spadaka Reken eG. -- [x] Spar- u Kreditbank ev-freikirchl Gemeinden -- [ ] Spar- und Darlehnskasse Börde Lamstedt-Hechthausen -- [ ] Spar- und Darlehnskasse Dinklage eG -- [ ] Spar- und Darlehnskasse Friesoythe eG -- [ ] Spar- und Darlehnskasse Holtland eG -- [ ] Spar- und Darlehnskasse Immendorf eG -- [ ] Spar- und Darlehnskasse Stockhausen -- [x] Spar- und Darlehnskasse Zell -alt- -- [ ] Spar- und Kreditbank -- [ ] Spar- und Kreditbank eG -- [ ] Spar- und Kreditbank Hardt -- [ ] Spar- und Kreditbank Witten eG -- [ ] Spar-u. Kredit-Bank -- [ ] Sparda-Bank Augsburg eG -- [ ] Sparda-Bank Baden-Württemberg eG -- [ ] Sparda-Bank Berlin eG -- [ ] Sparda-Bank Hamburg eG -- [ ] Sparda-Bank Hannover eG -- [ ] Sparda-Bank Hessen eG -- [ ] Sparda-Bank München eG -- [ ] Sparda-Bank Münster eG -- [ ] Sparda-Bank Nürnberg eG -- [ ] Sparda-Bank Regensburg eG -- [x] Sparda-Bank Südwest eG -- [ ] Sparda-Bank West eG -- [ ] SparDaKa Brachelen eG -- [ ] Spardaka Hoengen eG -- [ ] Sparkasse Aachen -- [ ] Sparkasse Allgäu (Kempten) -- [ ] Sparkasse Altenburger Land -- [ ] Sparkasse Altmark-West -- [ ] Sparkasse Altötting-Mühldorf a.Inn -- [ ] Sparkasse am Niederrhein -- [ ] Sparkasse Amberg-Sulzbach -- [ ] Sparkasse Arnsberg -- [ ] Sparkasse Arnstadt-Ilmenau -- [ ] Sparkasse Aschaffenburg-Alzenau -- [ ] Sparkasse Attendorn-Lennestadt-Kichhundern -- [ ] Sparkasse Aurich-Norden -- [ ] Sparkasse Bad Hersfeld-Rotenburg -- [ ] Sparkasse Bad Kissingen -- [ ] Sparkasse Bad Neustadt a. d. Saale -- [ ] Sparkasse Bad Tölz-Wolfratshausen -- [ ] Sparkasse Bamberg -- [ ] Sparkasse Barnim -- [ ] Sparkasse Battenberg -- [ ] Sparkasse Bayreuth -- [ ] Sparkasse Beckum-Wadersloh -- [ ] Sparkasse Bensheim -- [ ] Sparkasse Berchtesgadener Land -- [ ] Sparkasse Bergkamen-Bönen -- [ ] Sparkasse Bielefeld -- [ ] Sparkasse Bochum -- [ ] Sparkasse Bodensee -- [ ] Sparkasse Bonndorf-Stühlingen -- [ ] Sparkasse Bottrop -- [ ] Sparkasse Bühl -- [ ] Sparkasse Burbach-Neunkirchen -- [ ] Sparkasse Burgenlandkreis -- [ ] Sparkasse Celle -- [ ] Sparkasse Chemnitz -- [ ] Sparkasse Dachau -- [ ] Sparkasse Darmstadt -- [ ] Sparkasse Deggendorf -- [ ] Sparkasse der Homburgischen Gemeinden -- [ ] Sparkasse Dieburg -- [ ] Sparkasse Dillenburg -- [ ] Sparkasse Dinslaken-Voerde-Hünxe -- [ ] Sparkasse Donauwörth -- [ ] Sparkasse Donnersberg -- [ ] Sparkasse Dortmund -- [ ] Sparkasse Duderstadt -- [ ] Sparkasse Duisburg -- [ ] Sparkasse Düren -- [ ] Sparkasse Eichstätt -- [ ] Sparkasse Einbeck -- [ ] Sparkasse Elbe-Elster -- [ ] Sparkasse Elmshorn -- [ ] Sparkasse Emden -- [ ] Sparkasse Emsdetten-Ochtrup -- [ ] Sparkasse Emsland -- [ ] Sparkasse Engen-Gottmadingen -- [ ] Sparkasse Ennepetal-Breckerfeld -- [ ] Sparkasse Erding - Dorfen -- [ ] Sparkasse Erwitte-Anröchte -- [ ] Sparkasse Essen -- [ ] Sparkasse Finnentrop -- [ ] Sparkasse Forchheim -- [ ] Sparkasse Freiburg - Nördlicher Breisgau -- [ ] Sparkasse Freising -- [ ] Sparkasse Freyung-Grafenau -- [ ] Sparkasse Fröndenberg -- [ ] Sparkasse Fulda -- [ ] Sparkasse Fürstenfeldbruck -- [ ] Sparkasse Fürth -- [ ] Sparkasse Gelsenkirchen -- [ ] Sparkasse Gengenbach -- [ ] Sparkasse Gera-Greiz -- [ ] Sparkasse Germersheim-Kandel -- [ ] Sparkasse Geseke -- [ ] Sparkasse Giessen -- [ ] Sparkasse Gifhorn-Wolfsburg -- [ ] Sparkasse Goslar/Harz -- [ ] Sparkasse Göttingen -- [ ] Sparkasse Grünberg -- [ ] Sparkasse Gummersbach-Bergneustadt -- [ ] Sparkasse Günzburg-Krumbach -- [ ] Sparkasse Gütersloh -- [ ] Sparkasse Hagen -- [ ] Sparkasse Hamm -- [ ] Sparkasse Hanau -- [ ] Sparkasse Hanauerland -- [ ] Sparkasse Hannover -- [ ] Sparkasse Harburg-Buxtehude -- [ ] Sparkasse Haslach-Zell -- [ ] Sparkasse Hattingen -- [ ] Sparkasse Heidelberg -- [ ] Sparkasse Hennstedt-Wesselburen -- [ ] Sparkasse Herford -- [ ] Sparkasse Hilden-Ratingen-Velbert -- [ ] Sparkasse Hildesheim -- [ ] Sparkasse Hochfranken -- [ ] Sparkasse Hochrhein -- [ ] Sparkasse Hochsauerland -- [ ] Sparkasse Hochschwarzwald -- [ ] Sparkasse Hohenlohekreis -- [ ] Sparkasse Hohenwestedt -- [ ] Sparkasse Holstein -- [ ] Sparkasse Höxter -- [ ] Sparkasse im Landkreis Cham -- [ ] Sparkasse im Landkreis Neustadt-Bad Winsheim -- [ ] Sparkasse im Landkreis Schwandorf -- [ ] Sparkasse Ingolstadt -- [ ] Sparkasse Iserlohn -- [ ] Sparkasse Jena Saale-Holzland -- [ ] Sparkasse Jerichower Land -- [ ] Sparkasse Karlsruhe Ettlingen -- [ ] Sparkasse Kierspe-Meinerzhagen -- [ ] Sparkasse Kleve -- [ ] Sparkasse Koblenz -- [ ] Sparkasse KölnBonn -- [ ] Sparkasse Kraichgau (Bruchsal-Bretten-Sinsheim) -- [ ] Sparkasse Krefeld -- [ ] Sparkasse Kulmbach-Kronach -- [ ] Sparkasse Landsberg-Dießen -- [ ] Sparkasse Landshut -- [ ] Sparkasse Langen-Seligenstadt -- [ ] Sparkasse Laubach Hungen -- [ ] Sparkasse LeerWittmund -- [ ] Sparkasse Lemgo -- [ ] Sparkasse Leverkusen -- [ ] Sparkasse Lippstadt -- [ ] Sparkasse Lörrach-Rheinfelden -- [ ] Sparkasse Lüdenscheid -- [ ] Sparkasse Lüneburg -- [ ] Sparkasse Lünen -- [ ] Sparkasse Mainfranken-Würzburg -- [ ] Sparkasse Mainz -- [ ] Sparkasse Mansfeld-Südharz -- [ ] Sparkasse Marburg-Biedenkopf -- [ ] Sparkasse Markgräflerland -- [ ] Sparkasse Märkisch-Oderland -- [ ] Sparkasse Mecklenburg-Nordwest -- [ ] Sparkasse Mecklenburg-Schwerin -- [ ] Sparkasse Mecklenburg-Strelitz -- [ ] Sparkasse Meißen -- [ ] Sparkasse Memmingen-Lindau-Mindelheim -- [ ] Sparkasse Merzig-Wadern -- [ ] Sparkasse Meschede -- [ ] Sparkasse Miltenberg-Obernburg -- [ ] Sparkasse Minden-Lübbecke -- [ ] Sparkasse Mittelfranken-Süd -- [ ] Sparkasse Mittelholstein AG -- [ ] Sparkasse Mittelmosel-Eifel-Mosel-Hunsrück -- [ ] Sparkasse Mittelsachsen -- [ ] Sparkasse Mittelthüringen -- [ ] Sparkasse Moosburg -- [ ] Sparkasse Muldental -- [ ] Sparkasse Mülheim a.d. Ruhr -- [ ] Sparkasse Münden -- [ ] Sparkasse Neckartal-Odenwald -- [ ] Sparkasse Neu-Ulm-Illertissen -- [ ] Sparkasse Neubrandenburg-Demmin -- [ ] Sparkasse Neuburg-Rain -- [ ] Sparkasse Neumarkt i.d.OPf.-Parsberg -- [ ] Sparkasse Neunkirchen -- [ ] Sparkasse Neuss -- [ ] Sparkasse Neuwied -- [ ] Sparkasse Niederbayern Mitte -- [ ] Sparkasse Niederlausitz -- [ ] Sparkasse Nienburg -- [ ] Sparkasse Nördlingen -- [ ] Sparkasse Nürnberg -- [ ] Sparkasse Oberhessen -- [ ] Sparkasse Oberlausitz-Niederschlesien -- [ ] Sparkasse Oberpfalz-Nord -- [ ] Sparkasse Odenwaldkreis -- [ ] Sparkasse Oder-Spree -- [ ] Sparkasse Offenbach -- [ ] Sparkasse Offenburg/Ortenau -- [ ] Sparkasse Olpe-Drolshagen-Wenden -- [ ] Sparkasse Osnabrück -- [ ] Sparkasse Osterode am Harz -- [ ] Sparkasse Ostprignitz-Ruppin -- [ ] Sparkasse Ostunterfranken -- [ ] Sparkasse Paderborn-Detmold -- [ ] Sparkasse Parchim-Lübz -- [ ] Sparkasse Passau -- [x] Sparkasse Pforzheim Calw -- [ ] Sparkasse Pfullendorf-Meßkirch -- [ ] Sparkasse Prignitz -- [ ] Sparkasse Radevormwald-Hückeswagen -- [ ] Sparkasse Rastatt-Gernsbach -- [ ] Sparkasse Regen-Viechtach -- [ ] Sparkasse Regensburg -- [ ] Sparkasse Remscheid -- [ ] Sparkasse Rhein-Haardt -- [ ] Sparkasse Rhein-Nahe -- [ ] Sparkasse Rhein-Neckar-Nord (Mannheim/Weinheim) -- [ ] Sparkasse Rietberg -- [ ] Sparkasse Riezlern -- [ ] Sparkasse Rosenheim-Bad/Aibling -- [ ] Sparkasse Rotenburg-Bremervörde -- [ ] Sparkasse Rottal-Inn -- [ ] Sparkasse Saabrücken -- [ ] Sparkasse Salem-Heiligenberg -- [ ] Sparkasse Schaumburg -- [ ] Sparkasse Scheeßel -- [ ] Sparkasse Schönau-Todtnau -- [ ] Sparkasse Schopfheim-Zell -- [ ] Sparkasse Schwarzwald-Baar -- [ ] Sparkasse Schweinfurt -- [ ] Sparkasse Siegen -- [ ] Sparkasse Singen-Radolfzell -- [ ] Sparkasse Soest -- [ ] Sparkasse Sonneberg -- [ ] Sparkasse Spree-Neiße -- [ ] Sparkasse Stade-Altes Land -- [ ] Sparkasse Starkenburg -- [ ] Sparkasse Staufen-Breisach -- [ ] Sparkasse Stockach -- [ ] Sparkasse Straelen -- [ ] Sparkasse Südholstein -- [ ] Sparkasse Südliche Weinstraße Landau -- [ ] Sparkasse Südwestpfalz -- [ ] Sparkasse Tauberfranken -- [ ] Sparkasse Trier -- [ ] Sparkasse Uckermark -- [ ] Sparkasse Uecker-Randow -- [ ] Sparkasse Uelzen Lüchow-Dannenberg -- [ ] Sparkasse Ulm -- [ ] Sparkasse UnnaKamen -- [ ] Sparkasse Unstrut-Hainich -- [ ] Sparkasse Vogtland -- [ ] Sparkasse Vorpommern -- [ ] Sparkasse Waldeck-Frankenberg -- [ ] Sparkasse Werl -- [ ] Sparkasse Werra-Meißner -- [ ] Sparkasse Weserbergland -- [ ] Sparkasse Westerwald-Sieg -- [ ] Sparkasse Westholstein -- [ ] Sparkasse Westmünsterland -- [ ] Sparkasse Wetzlar -- [ ] Sparkasse Wilhelmshaven -- [ ] Sparkasse Wittenberg -- [ ] Sparkasse Wittgenstein -- [ ] Sparkasse Wolfach -- [ ] Sparkasse Worms-Alzey-Ried -- [ ] Sparkasse Zollernalb -- [ ] Sparkasse zu Lübeck AG -- [ ] Sparkasse Zwickau -- [ ] Spreewaldbank eG Volksbank-Raiffeisenbank -- [ ] St. Galler Kantonalbank Deutschland -- [ ] St. Wendeler Volksbank -- [ ] Stadt- und Kreissparkasse Erlangen -- [ ] Stadt- und Kreissparkasse Leipzig -- [ ] Stadt- und Kreissparkasse Rothenburg -- [ ] Stadt-Sparkasse Düsseldorf -- [ ] Stadt-Sparkasse Haan (Rheinland) -- [ ] Stadt-Sparkasse Langenfeld -- [ ] Stadt-Sparkasse Solingen -- [ ] Stadtsparkasse Aichach-Schrobenhausen -- [x] Stadtsparkasse Augsburg -- [ ] Stadtsparkasse Bad Honnef -- [ ] Stadtsparkasse Bad Oeynhausen -- [ ] Stadtsparkasse Bad Pyrmont -- [ ] Stadtsparkasse Bad Sachsa -- [ ] Stadtsparkasse Baden-Baden Gaggenau -- [ ] Stadtsparkasse Barsinghausen -- [ ] Stadtsparkasse Blomberg/Lippe -- [ ] Stadtsparkasse Bocholt -- [ ] Stadtsparkasse Borken -- [ ] Stadtsparkasse Burgdorf -- [ ] Stadtsparkasse Cuxhaven -- [ ] Stadtsparkasse Delbrück -- [ ] Stadtsparkasse Dessau -- [ ] Stadtsparkasse Emmerich-Rees -- [ ] Stadtsparkasse Felsberg -- [ ] Stadtsparkasse Gevelsberg -- [ ] Stadtsparkasse Gladbeck -- [ ] Stadtsparkasse Grebenstein -- [ ] Stadtsparkasse Gronau -- [ ] Stadtsparkasse Haltern am See -- [ ] Stadtsparkasse Hameln -- [ ] Stadtsparkasse Herdecke -- [ ] Stadtsparkasse Hilchenbach -- [ ] Stadtsparkasse Kaiserslautern -- [ ] Stadtsparkasse Lengerich -- [ ] Stadtsparkasse Magdeburg -- [ ] Stadtsparkasse Märkisches Sauerland Hemer-Menden -- [ ] Stadtsparkasse Mönchengladbach -- [ ] Stadtsparkasse München -- [ ] Stadtsparkasse Münsterland Ost -- [ ] Stadtsparkasse Porta Westfalica -- [ ] Stadtsparkasse Rahden -- [ ] Stadtsparkasse Rheine -- [ ] Stadtsparkasse Schmallenberg -- [ ] Stadtsparkasse Schwalmstadt -- [ ] Stadtsparkasse Schwedt -- [ ] Stadtsparkasse Schwelm -- [ ] Stadtsparkasse Schwerte -- [ ] Stadtsparkasse Sprockhövel -- [ ] Stadtsparkasse Versmold -- [ ] Stadtsparkasse Völklingen -- [ ] Stadtsparkasse Vorderpfalz -- [ ] Stadtsparkasse Wedel -- [ ] Stadtsparkasse Wermelskirchen -- [ ] Stadtsparkasse Werne -- [ ] Stadtsparkasse Wetter (Ruhr) -- [ ] Stadtsparkasse Witten -- [ ] Stadtsparkasse Wunsdorf -- [ ] Stadtsparkasse Wuppertal -- [ ] Steyler Missionssparinst. GmbH -- [ ] Stralsunder Volksbank eG -- [ ] Stuttgarter Volksbank -- [ ] Südwestbank -- [ ] Sydbank A/S -- [ ] Taunus-Sparkasse -- [x] Triodos Bank Deutschland -- [ ] Uhlbacher Bank -- [ ] UniCredit Bank - HypoVereinsbank AG -- [ ] Untertürkheimer Volksbank -- [x] VakifBank International Wien Zndl Frankfurt -- [ ] VB Arnsberg-Sundern eG. -- [ ] VB Bad Salzuflen eG -- [ ] VB Bielefeld eG -- [ ] VB Bitburg eG -- [ ] VB Clarholz-Lette-Beelen eG. -- [ ] VB Clenze-Schnega eG -- [ ] VB eG Bremerhaven -- [ ] VB eG im Landkr. Cuxhav. -- [ ] VB Eifel Mitte, Prüm -- [ ] VB Erkelenz-Hückelhofen-Wegberg eG -- [ ] VB Freudenberg eG -- [ ] VB Gelsenkirchen-Buer -- [ ] VB Grevenbrück eG -- [ ] VB Hunsrück eG -- [ ] VB Laer-Horstmar-Leer eG -- [ ] VB Mönchengladbach eG -- [x] VB Mörfelden-Walldorf Ndl d Frankfurter VB -- [ ] VB Nahetal eG -- [ ] VB Nordmünsterland Mitte eG -- [ ] VB RB eG, Neumünster -- [ ] VB RheinAhrEifel eG. -- [ ] VB Spelle-Freren eG -- [ ] VB Südkirchen-Cap.-Nordkirchen -- [ ] VB Vallendar-Niederwerth eG -- [ ] VB Westerkappeln-Wersen eG. -- [ ] VB Westerloh-Westerwiehe eG -- [ ] VB Wipperfürth-Lindlar eG -- [ ] VB Wolfsburg eG -- [ ] VBM Volksbank Mittelrhein eG -- [ ] VBU Volksbank im Unterland -- [ ] Verbands-Sparkasse Wesel -- [ ] Verbandssparkasse Goch-Kevelaer-Weeze -- [ ] Vereinigte Coburger Sparkassen -- [ ] Vereinigte Raiffeisenbank Burgstädt -- [ ] Vereinigte Raiffeisenbanken -- [ ] Vereinigte Sparkasse d. Ldkr. Pfaffenhofen -- [ ] Vereinigte Sparkasse Eschenbach, Neustadt, Vohenstrauß -- [ ] Vereinigte Sparkasse Gunzenhausen -- [ ] Vereinigte Sparkasse i. Ldkr. Weilheim -- [ ] Vereinigte Sparkasse im Märkischen Kreis -- [ ] Vereinigte Sparkassen Ansbach -- [ ] Vereinigte Volksbank -- [x] Vereinigte Volksbank Griesheim-Weiterstadt -- [ ] Vereinigte Volksbank im Regionalverband Saarbrücken -- [ ] Vereinigte Volksbank Limburg -- [x] Vereinigte Volksbank Maingau -- [ ] Vierländer Volksbank eG -- [ ] Voba Dünnwald-Holweide eG -- [ ] Volks- und Raiffeisenbank Boll -alt- -- [ ] Volks- und Raiffeisenbank Burg eG -- [ ] Volks- und Raiffeisenbank eG Leinebergland -- [ ] Volks- und Raiffeisenbank eG Wismar -- [ ] Volks- und Raiffeisenbank Eisleben eG -- [ ] Volks- und Raiffeisenbank Forst eG -- [ ] Volks- und Raiffeisenbank Fürstenw. Seelow Wriezen eG -- [ ] Volks- und Raiffeisenbank Güstrow eG -- [ ] Volks- und Raiffeisenbank Muldental -- [ ] Volks- und Raiffeisenbank Prignitz eG -- [ ] Volks- und Raiffeisenbank Saale-Unstrut eG -- [ ] Volks- und Raiffeisenbank Sylt eG -- [ ] Volks- und Raiffeisenbank Weilmünster -alt- -- [ ] Volksbank -- [ ] Volksbank 2000 eG. -- [ ] Volksbank Achern -- [ ] Volksbank Adelebsen eG -- [ ] Volksbank Aerzen eG -- [ ] Volksbank Ahlen Sassenberg Warendorf eG -- [ ] Volksbank Ahlerstedt eG -- [ ] Volksbank Allgäu-West -- [ ] Volksbank Altshausen -- [ ] Volksbank Alzey -- [ ] Volksbank am Ith eG -- [ ] Volksbank Amelsbüren eG -- [ ] Volksbank Ammerbuch -- [ ] Volksbank Ammerland-Süd eG -- [ ] Volksbank an der Niers -- [ ] Volksbank Anröchte eG -- [ ] Volksbank Appenweier-Urloffen Appenweier -alt- -- [ ] Volksbank Aschaffenburg -- [ ] Volksbank Ascheberg-Herbern eG. -- [ ] Volksbank Backnang -- [ ] Volksbank Bad Mergentheim -- [ ] Volksbank Bad Münder eG -- [ ] Volksbank Bad Oeynhausen-Herford eG -- [ ] Volksbank Bad Salzuflen eG -- [ ] Volksbank Bad Saulgau -- [ ] Volksbank Baden-Baden Rastatt -- [ ] Volksbank Baiersbronn -- [ ] Volksbank Bakum eG -- [ ] Volksbank Balingen -- [ ] Volksbank Baumberge eG -- [ ] Volksbank Bautzen -- [ ] Volksbank Bechtheim -- [ ] Volksbank Beckum eG. -- [ ] Volksbank Beilstein-Ilsfeld-Abstatt -- [ ] Volksbank Benninghausen eG -- [ ] Volksbank Bielefeld eG -- [ ] Volksbank Bigge-Lenne eG -- [ ] Volksbank Bitburg eG -- [ ] Volksbank Blaubeuren -- [ ] Volksbank Bocholt eG. -- [ ] Volksbank Bochum Witten eG -- [ ] Volksbank Bönen eG -- [ ] Volksbank Bonn Rhein-Sieg eG -- [ ] Volksbank Bookholzberg-Lemwerder eG -- [ ] Volksbank Börde-Bernburg eG -- [ ] Volksbank Börßum-Hornburg eG -- [ ] Volksbank Bösel eG -- [ ] Volksbank Brackenheim-Güglingen -- [ ] Volksbank Bramgau eG im Osnabrücker Land -- [ ] Volksbank Brandoberndorf -- [ ] Volksbank Braunlage eG -- [ ] Volksbank Breisgau Nord -- [ ] Volksbank Breisgau-Süd -- [ ] Volksbank Bremen-Nord eG -- [ ] Volksbank Brenztal -- [ ] Volksbank Brilon eG. -- [ ] Volksbank Brilon-Thülen eG -- [ ] Volksbank Bruchsal-Bretten -- [ ] Volksbank Bruchsal-Bretten -alt- -- [ ] Volksbank Brüggen-Nettetal eG -- [ ] Volksbank Bruhrain-Kraich-Hardt -- [x] Volksbank Büdingen -alt- -- [ ] Volksbank Bühl -- [ ] Volksbank Bühl Fil Kehl -- [ ] Volksbank Büren und Salzkotten eG -- [ ] Volksbank Butzbach -- [ ] Volksbank Chemnitz -- [ ] Volksbank Clenze-Hitzacker eG -- [ ] Volksbank Cloppenburg eG -- [ ] Volksbank Daaden -- [ ] Volksbank Damme-Osterfeine eG -- [x] Volksbank Darmstadt - Kreis Bergstraße -- [ ] Volksbank Darup-Rorup eG -- [ ] Volksbank Dassel eG -- [ ] Volksbank Deißlingen -- [ ] Volksbank Delbrück-Hövelshof eG -- [ ] Volksbank Delitzsch -- [ ] Volksbank Demmin eG -- [ ] Volksbank Dessau-Anhalt eG -- [ ] Volksbank Dettenhausen -- [ ] Volksbank Diepholz-Barnstorf eG -- [ ] Volksbank Dill VB und Raiffbk -- [ ] Volksbank Dillingen -- [ ] Volksbank Dinslaken eG -- [ ] Volksbank Donau-Neckar -- [ ] Volksbank Dornstetten -- [ ] Volksbank Dorsten eG. -- [ ] Volksbank Dortmund-Nordwest eG -- [x] Volksbank Dreieich -- [ ] Volksbank Dreiländereck -- [ ] Volksbank Driburg - Brakel - Steinheim eG -- [ ] Volksbank Düren eG -- [ ] Volksbank Ebingen -- [ ] Volksbank eG -- [ ] Volksbank eG Dransfeld Groß Schneen Hann.Mün. Staufenb. -- [ ] Volksbank eG Gelsenkirchen-Buer -- [ ] Volksbank eG Wolfsburg -- [x] Volksbank Egelsbach -alt- -- [ ] Volksbank Eichsfeld-Northeim eG -- [ ] Volksbank Einbeck eG -- [ ] Volksbank Eisbergen eG -- [ ] Volksbank Eisenberg eG -- [ ] Volksbank Elmshorn eG -- [ ] Volksbank Elsen-Wewer-Borchen eG -- [ ] Volksbank Eltville -- [ ] Volksbank Emstal Rütenbrock-Lathen eG -- [ ] Volksbank Emstek eG -- [ ] Volksbank Enger-Spenge eG -- [ ] Volksbank Enniger Ostenf. Westkirchen -- [ ] Volksbank Erft eG -- [ ] Volksbank Erle eG. -- [ ] Volksbank Erzgebirge -- [ ] Volksbank Erzgebirge -alt- -- [ ] Volksbank Esens-Holtriem eG -- [ ] Volksbank Essen-Cappeln eG -- [ ] Volksbank Esslingen -- [ ] Volksbank Ettlingen -- [ ] Volksbank Euskirchen eG -- [ ] Volksbank Feldatal -- [ ] Volksbank Filder -- [ ] Volksbank Flein-Talheim -- [ ] Volksbank Forchheim -- [ ] Volksbank Franken -- [ ] Volksbank Fredenbeck eG -- [ ] Volksbank Freiberg und Umgebung -- [ ] Volksbank Freiburg -- [ ] Volksbank Freudenberg eG. -- [ ] Volksbank Friedrichshafen -- [ ] Volksbank Ganderkesee-Hude eG -- [ ] Volksbank Gardelegen eG -- [ ] Volksbank Gebhardshain eG -- [ ] Volksbank Geest eG -- [ ] Volksbank Geeste-Nord eG -- [ ] Volksbank Gelderland eG -- [ ] Volksbank Gemen eG. -- [ ] Volksbank Georgsmarienhütte-Hagen eG -- [x] Volksbank Gersprenztal-Otzberg -- [ ] Volksbank Glan-Münchweiler -- [ ] Volksbank Glatten-Wittendorf -- [ ] Volksbank Goldner Grund -- [ ] Volksbank Göppingen -- [ ] Volksbank Göttingen eG -- [x] Volksbank Gräfenhausen -alt- -- [ ] Volksbank Grafschaft Hoya eG -- [x] Volksbank Grebenhain -- [ ] Volksbank Greifswald eG -- [ ] Volksbank Greven eG -- [ ] Volksbank Grevenbrück eG -- [x] Volksbank Griesheim -- [ ] Volksbank Gronau-Ahaus eG -- [ ] Volksbank Günzburg -- [ ] Volksbank Gütersloh eG -- [ ] Volksbank Haaren eG -- [ ] Volksbank Halle (Saale) eG -- [ ] Volksbank Halle/Westf. eG -- [ ] Volksbank Haltern eG -- [ ] Volksbank Hameln-Pyrmont eG -- [ ] Volksbank Hamm eG. -- [ ] Volksbank Hamm, Sieg -- [x] Volksbank Hankensbüttel-Wahrenholz eG -- [ ] Volksbank Harsewinkel eG. -- [ ] Volksbank Harzburg-Wernigerode eG -- [ ] Volksbank Haselünne eG -- [ ] Volksbank Hegau -- [ ] Volksbank Heiden eG. -- [ ] Volksbank Heilbronn -- [ ] Volksbank Heiligenstadt -- [ ] Volksbank Heimbach eG -- [ ] Volksbank Heinsberg eG -- [x] Volksbank Heldenbergen Ndl d Frankfurter VB -- [ ] Volksbank Hellweg eG. -- [ ] Volksbank Helmstedt eG -- [ ] Volksbank Herborn-Eschenburg -- [ ] Volksbank Herrenberg-Rottenburg -- [ ] Volksbank Heuberg -- [ ] Volksbank Heuchelheim -- [x] Volksbank Hildesheim-Lehrte-Pattensen eG -- [ ] Volksbank Hildesheimer Börde eG -- [ ] Volksbank Hochrhein -- [x] Volksbank Höchst -- [ ] Volksbank Hohenlimburg eG -- [ ] Volksbank Hohenlohe -- [ ] Volksbank Hohenneuffen -- [ ] Volksbank Hohenzollern -- [ ] Volksbank Höhr-Grenzhausen -alt- -- [ ] Volksbank Hoogstede-Wilsum eG -- [ ] Volksbank Horb -alt- -- [ ] Volksbank Horb-Freudenstadt -- [ ] Volksbank Hörste eG -- [ ] Volksbank Hörstel eG -- [ ] Volksbank Im Harz eG -- [ ] Volksbank im Kleinwalsertal -- [ ] Volksbank im Märkischen Kreis eG -- [ ] Volksbank im Siegerland eG. -- [ ] Volksbank Immenstadt -- [ ] Volksbank in Schaumburg eG -- [ ] Volksbank Itzehoe eG -- [ ] Volksbank Jestetten -- [ ] Volksbank Kaiserslautern-Nordwestpfalz -- [ ] Volksbank Kamen-Werne eG -- [ ] Volksbank Karlsruhe -- [ ] Volksbank Kehdingen eG -- [x] Volksbank Kelsterbach Ndl d Frankfurter VB -- [ ] Volksbank Kempen-Grefrath eG -- [ ] Volksbank Kierspe eG -- [ ] Volksbank Kinzigtal -- [ ] Volksbank Kirchberg-Hunsrück eG -- [ ] Volksbank Kirchheim-Nürtingen -- [ ] Volksbank Kirchhellen eG -- [ ] Volksbank Kirnau -- [ ] Volksbank Klettgau-Wutöschingen -- [ ] Volksbank Kleverland eG -- [ ] Volksbank Konstanz -- [ ] Volksbank Köthen eG -- [ ] Volksbank Kraichgau -- [ ] Volksbank Krautheim -- [ ] Volksbank Krefeld eG -- [ ] Volksbank Kur- und Rheinpfalz -- [ ] Volksbank Lahr -- [ ] Volksbank Laichingen -- [ ] Volksbank Langen-Gersten eG -- [ ] Volksbank Langendernbach -- [ ] Volksbank Lastrup eG -- [ ] Volksbank Laupheim -- [ ] Volksbank Lauterbach-Schlitz -- [ ] Volksbank Lauterecken -- [ ] Volksbank Leipzig -- [ ] Volksbank Lembeck-Rhade eG. -- [ ] Volksbank Lengerich eG -- [ ] Volksbank Limbach -- [ ] Volksbank Lingen eG -- [ ] Volksbank Lippstadt eG -- [ ] Volksbank Löbau-Zittau -- [ ] Volksbank Löningen eG -- [ ] Volksbank Lübbecke eG -- [ ] Volksbank Lübeck Landbank von 1902 eG -- [ ] Volksbank Lüdenscheid eG -- [ ] Volksbank Lüdinghausen-Olfen -- [ ] Volksbank Ludwigsburg -- [x] Volksbank Lüneburger Heide eG -- [ ] Volksbank Magdeburg eG -- [ ] Volksbank Magstadt -- [ ] Volksbank Main-Tauber -- [x] Volksbank Main-Taunus -- [x] Volksbank Mainspitze -- [ ] Volksbank Mainz-Finthen -- [ ] Volksbank Marl-Recklinghausen eG -- [ ] Volksbank Marsberg eG -- [ ] Volksbank Maulbronn-Oberderdingen -alt- -- [ ] Volksbank Medebach eG -- [ ] Volksbank Meerbusch eG -- [ ] Volksbank Meinerzhagen eG -- [ ] Volksbank Melle-Borgloh eG -- [ ] Volksbank Merzen-Fürstenau eG -- [ ] Volksbank Meßkirch Raiffeisenbank -- [ ] Volksbank Metzingen-Bad Urach -- [ ] Volksbank Minden eG -- [ ] Volksbank Mittelhessen -- [ ] Volksbank Mittleres Erzgebirge -- [ ] Volksbank Möckmühl-Neuenstadt -- [x] Volksbank Modau -- [x] Volksbank Modautal Modau -- [ ] Volksbank Mönchengladbach eG -- [ ] Volksbank Montabaur-Höhr-Grenzhausen -- [ ] Volksbank Mosbach -- [ ] Volksbank Mülheim-Kärlich eG -- [ ] Volksbank Müllheim -- [ ] Volksbank Münsingen -- [ ] Volksbank Münster eG -- [ ] Volksbank Murgtal Baiersbr-Klosterreichenbach -- [ ] Volksbank Nagoldtal -- [ ] Volksbank Nahe-Schaumberg -- [ ] Volksbank Neckartal -- [ ] Volksbank Neu-Ulm -- [ ] Volksbank Neuenkirchen-Vörden eG -- [ ] Volksbank Neumünster eG -- [ ] Volksbank Niederrhein eG -- [ ] Volksbank Nienburg eG -- [ ] Volksbank Nordharz eG -- [x] Volksbank Nordheide eG -- [ ] Volksbank Nordhümmling eG -- [ ] Volksbank Nordoberpfalz -- [ ] Volksbank Nordschwarzwald -- [ ] Volksbank Nottuln eG -- [ ] Volksbank Ober-Mörlen -- [ ] Volksbank Ochtrup eG -- [x] Volksbank Odenwald -- [ ] Volksbank Offenburg -- [ ] Volksbank Oldendorf eG -- [ ] Volksbank Olpe eG -- [ ] Volksbank Osnabrück eG -- [ ] Volksbank Osterburg-Wendland eG -- [ ] Volksbank Osterholz-Scharmbeck eG -- [ ] Volksbank Ostholstein Nord eG -- [ ] Volksbank Ostlippe eG. -- [ ] Volksbank Oyten eG -- [ ] Volksbank Paderborn eG -- [ ] Volksbank Paderborn-Höxter eG -- [ ] Volksbank Peine eG -- [ ] Volksbank Pforzheim -- [ ] Volksbank Pfullendorf -- [ ] Volksbank Pinneberg-Uetersen eG -- [ ] Volksbank Pirna -- [ ] Volksbank Plochingen -- [ ] Volksbank Quierschied -alt- -- [ ] Volksbank Raesfeld eG. -- [ ] Volksbank Raiffeisenbank -- [ ] Volksbank Raiffeisenbank Dachau -- [ ] Volksbank Raiffeisenbank Döbeln -- [ ] Volksbank Raiffeisenbank Eichstätt -- [ ] Volksbank Raiffeisenbank Fürstenfeldbruck -- [x] Volksbank Raiffeisenbank Hanau Ndl d Frankf VB -- [ ] Volksbank Raiffeisenbank Ismaning -- [ ] Volksbank Raiffeisenbank Mangfalltal-Rosenheim -- [ ] Volksbank Raiffeisenbank Meißen Großenhain -- [ ] Volksbank Raiffeisenbank Niederschlesien -- [ ] Volksbank Raiffeisenbank Oberbayern Südost -- [ ] Volksbank Raiffeisenbank Schlüchtern -- [ ] Volksbank Rathenow eG -- [ ] Volksbank Regensburg -- [ ] Volksbank Region Leonberg -- [ ] Volksbank Reiste-Eslohe eG -- [ ] Volksbank Rems -- [ ] Volksbank Remscheid-Solingen eG -- [x] Volksbank Remseck -- [ ] Volksbank Reutlingen -- [ ] Volksbank Rhede eG -- [ ] Volksbank Rhein-Lahn -- [ ] Volksbank Rhein-Lippe eG -- [ ] Volksbank Rhein-Ruhr eG -- [ ] Volksbank Rhein-Selz -alt- -- [ ] Volksbank Rhein-Wehra -- [ ] Volksbank Rhein-Wupper eG -- [ ] Volksbank Rheinböllen eG -- [ ] Volksbank Riesa -- [ ] Volksbank Rietberg eG -- [ ] Volksbank Rosenheim -alt- -- [ ] Volksbank Rot -- [ ] Volksbank Rottweil -- [ ] Volksbank Saaletal -- [ ] Volksbank Saar-West -- [ ] Volksbank Saarburg eG -- [ ] Volksbank Saarlouis -- [ ] Volksbank Saarpfalz -- [ ] Volksbank Saerbeck eG -- [ ] Volksbank Sandhofen -- [ ] Volksbank Sangerhausen eG -- [ ] Volksbank Sauerland eG -- [ ] Volksbank Schermbeck eG. -- [ ] Volksbank Schlangen eG -- [ ] Volksbank Schleswig eG -- [ ] Volksbank Schmallenberg eG -- [ ] Volksbank Schnathorst eG -- [ ] Volksbank Schrobenhausen -- [ ] Volksbank Schupbach -- [ ] Volksbank Schwäbisch Gmünd -- [ ] Volksbank Schwalmtal eG -- [ ] Volksbank Schwanewede eG -- [ ] Volksbank Schwarzwald-Neckar -- [x] Volksbank Seeheim-Jugenheim -- [ ] Volksbank Seesen eG -- [x] Volksbank Seligenstadt -- [ ] Volksbank Selm-Bork eG. -- [ ] Volksbank Senden eG -- [ ] Volksbank Seppenrade eG. -- [ ] Volksbank Siegerland eG -- [ ] Volksbank Siegerland eG. -- [ ] Volksbank Solling eG -- [ ] Volksbank Sottrum eG -- [ ] Volksbank Spelle-Freren eG -- [ ] Volksbank Sprakel eG. -- [ ] Volksbank Spremberg-Bad Muskau eG -- [ ] Volksbank Sprockhövel eG. -- [ ] Volksbank Stade-Cuxhaven eG -- [ ] Volksbank Staufen -- [ ] Volksbank Stein Eisingen -- [ ] Volksbank Stendal eG -- [ ] Volksbank Steyerberg eG -- [ ] Volksbank Stormarn eG -- [ ] Volksbank Störmede eG -- [ ] Volksbank Straubing -- [ ] Volksbank Strohgäu -- [ ] Volksbank Stuhr eG -- [ ] Volksbank Stutensee Hardt -- [x] Volksbank Südheide -- [ ] Volksbank Sulingen eG -- [ ] Volksbank Sulmtal -- [ ] Volksbank Sulzbachtal -alt- -- [ ] Volksbank Tailfingen -- [ ] Volksbank Tauber -alt- -- [ ] Volksbank Teltow-Fläming eG -- [ ] Volksbank Tettnang -- [ ] Volksbank Triberg -- [ ] Volksbank Trier eG -- [ ] Volksbank Trossingen -- [ ] Volksbank Tübingen -- [ ] Volksbank Überherrn -- [ ] Volksbank Überlingen -- [x] Volksbank Überwald-Gorxheimertal -- [ ] Volksbank Uckermark eG -- [ ] Volksbank Uelzen-Bevensen eG -- [ ] Volksbank Ulm-Biberach -- [ ] Volksbank und Raiffeisenbank -- [ ] Volksbank Untere Saar -- [x] Volksbank Usinger Land Ndl d Frankfurter VB -- [ ] Volksbank Vechelde-Wendeburg eG -- [ ] Volksbank Vechta eG -- [ ] Volksbank Veldhausen-Neuenhaus eG -- [ ] Volksbank Verden eG -- [ ] Volksbank Versmold eG. -- [ ] Volksbank Viersen eG -- [ ] Volksbank Vilshofen -- [ ] Volksbank Visbek eG -- [ ] Volksbank Vogtland -- [ ] Volksbank Vorbach-Tauber -- [ ] Volksbank Wachtberg eG -- [ ] Volksbank Warburg-Scherfede eG. -- [ ] Volksbank Weingarten -- [ ] Volksbank Weingarten-Walzbachtal -- [ ] Volksbank Weinheim -- [ ] Volksbank Welzheim -- [ ] Volksbank Wenden-Drolshagen eG -- [x] Volksbank Weschnitztal -- [ ] Volksbank Weserbergland eG -- [ ] Volksbank Westenholz eG -- [ ] Volksbank Westerstede eG -- [ ] Volksbank Westrhauderfehn eG -- [ ] Volksbank Wetzlar-Weilburg -- [ ] Volksbank Wewelsburg-Ahden eG -- [ ] Volksbank Wickede (Ruhr) eG -- [ ] Volksbank Wiesloch -- [ ] Volksbank Wildeshausen eG -- [ ] Volksbank Wilferdingen-Keltern -- [ ] Volksbank Wilhelmshaven eG -- [ ] Volksbank Winsener Marsch eG -- [x] Volksbank Wißmar -- [ ] Volksbank Wittenberg eG -- [ ] Volksbank Wittgenstein eG -- [ ] Volksbank Wittingen-Klötze eG -- [ ] Volksbank Wittlage eG -- [ ] Volksbank Wolfenbüttel-Salzgitter eG -- [ ] Volksbank Wolgast eG -- [ ] Volksbank Worms-Wonnegau -- [ ] Volksbank Worpswede eG -- [ ] Volksbank Wulfsen eG -- [ ] Volksbank Würselen eG -- [ ] Volksbank Zuffenhausen m Zndl Stammheimer VB -- [ ] Volksbank Zwickau -- [ ] Volksbank-Raiffeisenbank Amberg -- [ ] Volksbank-Raiffeisenbank Bayreuth -- [ ] Volksbank-Raiffeisenbank Chiemsee -alt- -- [ ] Volksbank-Raiffeisenbank Deggingen -- [ ] Volksbank-Raiffeisenbank Dingolfing -- [ ] Volksbank-Raiffeisenbank Eutin eG -- [ ] Volksbank-Raiffeisenbank Glauchau -- [ ] Volksbank-Raiffeisenbank Husum eG -- [ ] Volksbank-Raiffeisenbank im Kreis Rendsburg eG -- [ ] Volksbank-Raiffeisenbank Penzberg -- [ ] Volksbank-Raiffeisenbank Riedlingen -- [ ] VR Bank -- [x] VR Bank Bad Orb-Gelnhausen -- [ ] VR Bank Bamberg Raiffeisen-Volksbank -- [ ] VR Bank Biedenkopf-Gladenbach -- [ ] VR Bank Burglengenfeld -- [ ] VR Bank Dinkelsbühl -- [ ] VR Bank eG -- [ ] VR Bank Flensburg-Schleswig eG -- [ ] VR Bank HessenLand -- [ ] VR Bank Hof -- [ ] VR Bank im Enzkreis -- [ ] VR Bank Kaufbeuren-Ostallgäu -- [ ] VR Bank Kitzingen -- [ ] VR Bank Leipziger Land -- [x] VR Bank Main-Kinzig-Büdingen -- [ ] VR Bank Mittelhaardt -- [ ] VR Bank München Land -- [ ] VR Bank Nordwestpfalz -alt- -- [ ] VR Bank Pinneberg eG -- [ ] VR Bank Rhein-Neckar -- [ ] VR Bank Rhein-Sieg eG. -- [ ] VR Bank Rosenheim-Chiemsee -- [ ] VR Bank Saarpfalz -- [ ] VR Bank Schwäbisch Hall-Crailsheim -- [ ] VR Bank Steinlach-Wiesaz-Härten -- [ ] VR Bank Südliche Weinstraße -- [ ] VR Bank Südpfalz -- [ ] VR Bank Südthüringen -- [ ] vr bank Untertaunus -- [x] VR Bank Wächtersbach/Bad Soden-Salmünster -alt -- [ ] VR Bank Weimar -- [ ] VR Bank Westthüringen -- [ ] VR Genossenschaftsbank Fulda -- [ ] VR I meine Raiffeisenbank -- [ ] VR-Bank -- [ ] VR-Bank Aalen -- [ ] VR-Bank Alb -- [ ] VR-Bank Altenburger Land -- [ ] VR-Bank Asperg-Markgröningen -- [ ] VR-Bank Bad Hersfeld-Rotenburg -- [ ] VR-Bank Bad Kissingen-Bad Brückenau -- [ ] VR-Bank Bad Salzungen Schmalkalden -- [ ] VR-Bank Burghausen-Mühldorf -- [ ] VR-Bank Chattengau -- [ ] VR-Bank Chiemgau-Süd -alt- -- [ ] VR-Bank Coburg -- [ ] VR-Bank Ellwangen -- [ ] VR-Bank Erding -- [ ] VR-Bank Feuchtwangen-Limes -- [ ] VR-Bank Fichtelgebirge -- [ ] VR-Bank Gerolzhofen -- [ ] VR-Bank im Landkreis Garmisch-Partenkirchen -- [ ] VR-Bank in Mittelbaden -- [ ] VR-Bank Landau -- [ ] VR-Bank Landshut -- [ ] VR-Bank Langenau-Ulmer Alb -- [ ] VR-Bank Lech-Zusam -- [ ] VR-Bank Mainz -- [ ] VR-Bank Memmingen -- [ ] VR-Bank Neu-Ulm/Weißenhorn -- [ ] VR-Bank Neuwied-Linz eG -- [ ] VR-Bank Nordeifel eG. -- [ ] VR-Bank Nordrhön eG -- [ ] VR-Bank Passau -- [ ] VR-Bank Pirmasens -- [ ] VR-Bank Rhein-Erft eG -- [ ] VR-Bank Rhein-Mosel -- [ ] VR-Bank Rothenburg -- [ ] VR-Bank Rottal-Inn -- [ ] VR-Bank Schwalm-Eder -- [ ] VR-Bank Schweinfurt -- [ ] VR-Bank Schweinfurt Land -alt- -- [ ] VR-Bank Schwerin eG -- [ ] VR-Bank Spangenberg-Morschen -- [ ] VR-Bank Starnberg-Herrsching-Landsberg -- [ ] VR-Bank Stromberg-Neckar -- [ ] VR-Bank Stuttgart -- [ ] VR-Bank Südwestpfalz -- [ ] VR-Bank Taufkirchen-Dorfen -- [ ] VR-Bank Uffenheim-Neustadt -- [ ] VR-Bank Vilsbiburg -- [ ] VR-Bank Weinstadt -- [ ] VR-Bank Werra-Meißner -- [x] VR-Bank Westmünsterland eG -- [ ] VR-Bank Westpfalz -- [ ] VRB eG, Wismar -- [ ] VTB Bank AG -- [ ] Waldecker Bank -- [ ] Wartburg-Sparkasse -- [ ] Weberbank -- [ ] Weser-Elbe-Sparkasse -- [ ] Westerwald Bank -- [x] Wiesbadener Volksbank -- [ ] Winterbacher Bank -- [ ] Winterlinger Bank -- [ ] WL-Bank -- [X] Wüstenrot Bank AG -- [ ] Zevener Volksbank eG diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/LICENSE b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/LICENSE deleted file mode 100644 index fc762d02..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Markus Schindler - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/README.md b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/README.md deleted file mode 100644 index 551a36d3..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# FinTS HBCI PHP - -[![Build Status](https://travis-ci.org/mschindler83/fints-hbci-php.svg?branch=master)](https://travis-ci.org/mschindler83/fints-hbci-php) -[![Latest Stable Version](https://poser.pugx.org/mschindler83/fints-hbci-php/v/stable)](https://packagist.org/packages/mschindler83/fints-hbci-php) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/mschindler83/fints-hbci-php/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/mschindler83/fints-hbci-php/?branch=master) -[![Monthly Downloads](https://poser.pugx.org/mschindler83/fints-hbci-php/d/monthly)](https://packagist.org/packages/mschindler83/fints-hbci-php) -[![License](https://poser.pugx.org/mschindler83/fints-hbci-php/license)](https://packagist.org/packages/mschindler83/fints-hbci-php) - -A PHP library implementing the basics of the FinTS / HBCI protocol. -It can be used to fetch the balance of connected bank accounts and for fetching bank statements of accounts. - -## Getting Started - -Install via composer: - - composer require mschindler83/fints-hbci-php - - -## How to use it - -You can have a look at the "Samples" folder in this repository. -Just fill in the required data beginning from line 13 to 17 and run the script. - -You can find the server information of your bank here: -https://www.hbci-zka.de/institute/institut_auswahl.htm - -## Contribute - -### Bank compatibility - -This library can only work stable with *YOUR* help! -As I'm very limited in testing different banks it would be good to get some feedback from you all. -Feel free to create PR's for the [COMPATIBILITY.md](COMPATIBILITY.md) file where you can update the list of working banks. - -### Code Style - -If you plan to contribute to this library, please ensure that you stick with the PSR coding rules as close as you can (At least PSR-0 to PSR-4). -You can find the PHP Standard Recommendations [here](http://www.php-fig.org/psr/) - -### Have fun! diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/AdapterInterface.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/AdapterInterface.php deleted file mode 100644 index c78a5073..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/AdapterInterface.php +++ /dev/null @@ -1,18 +0,0 @@ -host = (string) $host; - $this->port = (int) $port; - $this->curlHandle = curl_init(); - - curl_setopt($this->curlHandle, CURLOPT_SSLVERSION, 1); - curl_setopt($this->curlHandle, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($this->curlHandle, CURLOPT_SSL_VERIFYHOST, 2); - curl_setopt($this->curlHandle, CURLOPT_USERAGENT, "FHP-lib"); - curl_setopt($this->curlHandle, CURLOPT_RETURNTRANSFER, true); - curl_setopt($this->curlHandle, CURLOPT_URL, $this->host); - curl_setopt($this->curlHandle, CURLOPT_CONNECTTIMEOUT, 15); - curl_setopt($this->curlHandle, CURLOPT_CUSTOMREQUEST, 'POST'); - curl_setopt($this->curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); - curl_setopt($this->curlHandle, CURLOPT_ENCODING, ''); - curl_setopt($this->curlHandle, CURLOPT_MAXREDIRS, 0); - curl_setopt($this->curlHandle, CURLOPT_TIMEOUT, 30); - curl_setopt($this->curlHandle, CURLOPT_HTTPHEADER, array("cache-control: no-cache", 'Content-Type: text/plain')); - } - - /** - * @param AbstractMessage $message - * @return string - * @throws CurlException - */ - public function send(AbstractMessage $message) - { - curl_setopt($this->curlHandle, CURLOPT_POSTFIELDS, base64_encode($message->toString())); - $response = curl_exec($this->curlHandle); - $this->lastResponseInfo = curl_getinfo($this->curlHandle); - - if (false === $response) { - throw new CurlException( - 'Failed connection to ' . $this->host . ': ' . curl_error($this->curlHandle), - curl_errno($this->curlHandle), - null, - $this->lastResponseInfo - ); - } - - $statusCode = curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE); - - if ($statusCode < 200 || $statusCode > 299) { - throw new CurlException('Bad response with status code ' . $statusCode, 0, null, $this->lastResponseInfo); - } - - return base64_decode($response); - } - - /** - * Gets curl info for last request / response. - * - * @return mixed - */ - public function getLastResponseInfo() - { - return $this->lastResponseInfo; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Debug.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Debug.php deleted file mode 100644 index ed5fb785..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Debug.php +++ /dev/null @@ -1,56 +0,0 @@ -host = (string) $host; - $this->port = (int) $port; - } - - /** - * Should return a dummy response body. - * - * @param AbstractMessage $message - * @return string - */ - public function send(AbstractMessage $message) - { - /* @todo Implement me - * return file_get_contents(__DIR__ . '/../../../develop/accounts_response.txt'); - */ - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Exception/AdapterException.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Exception/AdapterException.php deleted file mode 100644 index 3cf7f808..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Adapter/Exception/AdapterException.php +++ /dev/null @@ -1,12 +0,0 @@ -curlInfo = $curlInfo; - } - - /** - * Gets the curl info from request / response. - * - * @return mixed - */ - public function getCurlInfo() - { - return $this->curlInfo; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Connection.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Connection.php deleted file mode 100644 index c217ebe8..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Connection.php +++ /dev/null @@ -1,46 +0,0 @@ -adapter = $adapter; - } - - /** - * Uses the configured adapter to send a message. - * - * @param AbstractMessage $message - * @return string - */ - public function send(AbstractMessage $message) - { - return iconv('ISO-8859-1', 'UTF-8', $this->adapter->send($message)); - } - - /** - * @return AdapterInterface - */ - public function getAdapter() - { - return $this->adapter; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/EncryptionAlgorithm.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/EncryptionAlgorithm.php deleted file mode 100644 index d1f74747..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/EncryptionAlgorithm.php +++ /dev/null @@ -1,56 +0,0 @@ -addDataElement($type); - $this->addDataElement($operationMode); - $this->addDataElement($algorithm); - $this->addDataElement($algorithmIv); - $this->addDataElement($algorithmKeyType); - $this->addDataElement($algorithmIvDescription); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/HashAlgorithm.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/HashAlgorithm.php deleted file mode 100644 index ea89d52e..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/HashAlgorithm.php +++ /dev/null @@ -1,42 +0,0 @@ -addDataElement($hashAlgorithmUsage); - $this->addDataElement($hashAlgorithm); - $this->addDataElement($hashAlgorithmParamDescription); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/KeyName.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/KeyName.php deleted file mode 100644 index 8371cb25..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/KeyName.php +++ /dev/null @@ -1,35 +0,0 @@ -addDataElement($kik->toString()); - $this->addDataElement($userName); - $this->addDataElement($keyType); - $this->addDataElement(0); - $this->addDataElement(0); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityDateTime.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityDateTime.php deleted file mode 100644 index aecdd6ec..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityDateTime.php +++ /dev/null @@ -1,36 +0,0 @@ -addDataElement($type); - $this->addDataElement($date->format('Ymd')); - $this->addDataElement($date->format('His')); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityIdentificationDetails.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityIdentificationDetails.php deleted file mode 100644 index b95bbbe6..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityIdentificationDetails.php +++ /dev/null @@ -1,28 +0,0 @@ -addDataElement(static::PARTY_MS); - $this->addDataElement($cid); - $this->addDataElement($systemId); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityProfile.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityProfile.php deleted file mode 100644 index fb68ce25..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SecurityProfile.php +++ /dev/null @@ -1,28 +0,0 @@ -addDataElement($securityProceduresCode); - $this->addDataElement($securityProceduresVersion); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SignatureAlgorithm.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SignatureAlgorithm.php deleted file mode 100644 index 5b479a66..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataElementGroups/SignatureAlgorithm.php +++ /dev/null @@ -1,41 +0,0 @@ -addDataElement($sigAlgoUsage); - $this->addDataElement($sigAlgo); - $this->addDataElement($operationMode); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Bin.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Bin.php deleted file mode 100644 index dc9064ad..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Bin.php +++ /dev/null @@ -1,66 +0,0 @@ -string = $string; - } - - /** - * Sets the binary data. - * - * @param string $data - * @return $this - */ - public function setData($data) - { - $this->string = $data; - - return $this; - } - - /** - * Gets the binary data. - * - * @return string - */ - public function getData() - { - return $this->string; - } - - /** - * Convert to string. - * - * @return string - */ - public function toString() - { - return '@' . strlen($this->string) . '@' . $this->string; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Dat.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Dat.php deleted file mode 100644 index c0dd9972..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Dat.php +++ /dev/null @@ -1,56 +0,0 @@ -value = $dateTime; - } - - /** - * @param \DateTime $date - */ - public function setDate(\DateTime $date) - { - $this->value = $date; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->value; - } - - /** - * @return string - */ - public function toString() - { - return $this->value->format('Ymd'); - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kik.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kik.php deleted file mode 100644 index bb216d67..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kik.php +++ /dev/null @@ -1,48 +0,0 @@ -countryCode = (string) $countryCode; - $this->bankCode = (string) $bankCode; - } - - /** - * @return string - */ - public function toString() - { - return $this->countryCode . ':' . $this->bankCode; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kti.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kti.php deleted file mode 100644 index 0f94baed..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Kti.php +++ /dev/null @@ -1,76 +0,0 @@ -iban = $iban; - $this->bic = $bic; - $this->accountNumber = $accountNumber; - $this->subAccountFeature = $subAccountFeature; - $this->kik = $kik; - } - - /** - * @return string - */ - public function toString() - { - return $this->iban . ':' - . $this->bic . ':' - . $this->accountNumber . ':' - . $this->subAccountFeature . ':' - . (string) $this->kik; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Ktv.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Ktv.php deleted file mode 100644 index 93efdc8a..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/DataTypes/Ktv.php +++ /dev/null @@ -1,58 +0,0 @@ -accountNumber = $accountNumber; - $this->subAccountFeature = $subAccountFeature; - $this->kik = $kik; - } - - /** - * @return string - */ - public function toString() - { - return $this->accountNumber . ':' . $this->subAccountFeature . ':' . (string) $this->kik; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Deg.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Deg.php deleted file mode 100644 index a07660a4..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Deg.php +++ /dev/null @@ -1,36 +0,0 @@ -dataElements[] = $value; - } - - public function toString() - { - return (string) implode(':', $this->dataElements); - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Dialog.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Dialog.php deleted file mode 100644 index 5f2e0ddd..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Dialog.php +++ /dev/null @@ -1,339 +0,0 @@ -connection = $connection; - $this->bankCode = $bankCode; - $this->username = $username; - $this->pin = $pin; - $this->systemId = $systemId; - } - - /** - * @param AbstractMessage $message - * @return Response - * @throws AdapterException - * @throws CurlException - * @throws FailedRequestException - */ - public function sendMessage(AbstractMessage $message) - { - try { - $message->setMessageNumber($this->messageNumber); - $message->setDialogId($this->dialogId); - - $result = $this->connection->send($message); - $this->messageNumber++; - $response = new Response($result); - - $this->handleResponse($response); - - if (!$response->isSuccess()) { - $summary = $response->getMessageSummary(); - $ex = new FailedRequestException($summary); - throw $ex; - } - - return $response; - } catch (AdapterException $e) { - if ($e instanceof CurlException) { - } - - throw $e; - } - } - - /** - * @param Response $response - */ - protected function handleResponse(Response $response) - { - $summary = $response->getMessageSummary(); - $segSum = $response->getSegmentSummary(); - - foreach ($summary as $code => $message) { - $this->logMessage('HIRMG', $code, $message); - } - - foreach ($segSum as $code => $message) { - $this->logMessage('HIRMS', $code, $message); - } - } - - /** - * @param string $type - * @param string $code - * @param $message - */ - protected function logMessage($type, $code, $message) - { - } - - /** - * Gets the dialog ID. - * - * @return integer - */ - public function getDialogId() - { - return $this->dialogId; - } - - /** - * Gets the current message number. - * - * @return int - */ - public function getMessageNumber() - { - return $this->messageNumber; - } - - /** - * Gets the system ID. - * - * @return int|string - */ - public function getSystemId() - { - return $this->systemId; - } - - /** - * Gets all supported TAN mechanisms. - * - * @return array - */ - public function getSupportedPinTanMechanisms() - { - return $this->supportedTanMechanisms; - } - - /** - * Gets the max possible HKSAL version. - * - * @return int - */ - public function getHksalMaxVersion() - { - return $this->hksalVersion; - } - - /** - * Gets the max possible HKKAZ version. - * - * @return int - */ - public function getHkkazMaxVersion() - { - return $this->hkkazVersion; - } - - /** - * Gets the bank name. - * - * @return string - */ - public function getBankName() - { - return $this->bankName; - } - - /** - * Initializes a dialog. - * - * @return string|null - * @throws AdapterException - * @throws CurlException - * @throws FailedRequestException - * @throws \Exception - */ - public function initDialog() - { - $identification = new HKIDN(3, $this->bankCode, $this->username, $this->systemId); - $prepare = new HKVVB(4, HKVVB::DEFAULT_BPD_VERSION, HKVVB::DEFAULT_UPD_VERSION, HKVVB::LANG_DEFAULT); - - $message = new Message( - $this->bankCode, - $this->username, - $this->pin, - $this->systemId, - 0, - 1, - array($identification, $prepare), - array(AbstractMessage::OPT_PINTAN_MECH => $this->supportedTanMechanisms) - ); - - - $response = $this->sendMessage($message)->rawResponse; - - $result = new Initialization($response); - $this->dialogId = $result->getDialogId(); - - return $this->dialogId; - } - - /** - * Sends sync request. - * - * @return string - * @throws AdapterException - * @throws CurlException - * @throws FailedRequestException - * @throws \Exception - */ - public function syncDialog() - { - $this->messageNumber = 1; - $this->systemId = 0; - $this->dialogId = 0; - - $identification = new HKIDN(3, $this->bankCode, $this->username, 0); - $prepare = new HKVVB(4, HKVVB::DEFAULT_BPD_VERSION, HKVVB::DEFAULT_UPD_VERSION, HKVVB::LANG_DEFAULT); - $sync = new HKSYN(5); - - $syncMsg = new Message( - $this->bankCode, - $this->username, - $this->pin, - $this->systemId, - $this->dialogId, - $this->messageNumber, - array($identification, $prepare, $sync) - ); - - $response = $this->sendMessage($syncMsg); - - // save BPD (Bank Parameter Daten) - $this->systemId = $response->getSystemId(); - $this->dialogId = $response->getDialogId(); - $this->bankName = $response->getBankName(); - - // max version for segment HKSAL (Saldo abfragen) - $this->hksalVersion = $response->getHksalMaxVersion(); - $this->supportedTanMechanisms = $response->getSupportedTanMechanisms(); - - // max version for segment HKKAZ (Kontoumsätze anfordern / Zeitraum) - $this->hkkazVersion = $response->getHkkazMaxVersion(); - - $this->endDialog(); - - return $response->rawResponse; - } - - /** - * Ends a previous started dialog. - * - * @return string - * @throws AdapterException - * @throws CurlException - * @throws FailedRequestException - */ - public function endDialog() - { - $endMsg = new Message( - $this->bankCode, - $this->username, - $this->pin, - $this->systemId, - $this->dialogId, - $this->messageNumber, - array( - new HKEND(3, $this->dialogId) - ) - ); - - $response = $this->sendMessage($endMsg); - - $this->dialogId = 0; - $this->messageNumber = 1; - - return $response->rawResponse; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Exception/FailedRequestException.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Exception/FailedRequestException.php deleted file mode 100644 index 31d44096..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Dialog/Exception/FailedRequestException.php +++ /dev/null @@ -1,96 +0,0 @@ -summary = $summary; - $keys = array_keys($summary); - - $this->responseCode = 0; - $this->responseMessage = 'Unknown error'; - - if (count($summary) == 1) { - $this->responseCode = (int) $keys[0]; - $this->responseMessage = array_shift($summary); - } elseif (count($summary) > 1) { - foreach ($summary as $scode => $smsg) { - if (0 === strpos($smsg, '*')) { - $this->responseCode = (int) $scode; - $this->responseMessage = substr($smsg, 1); - } - } - } - - parent::__construct('Request Failed: ' . $this->responseMessage, $this->responseCode); - } - - /** - * @return array - */ - public function getCodes() - { - return array_keys($this->summary); - } - - /** - * @return array - */ - public function getSummary() - { - return $this->summary; - } - - /** - * @return int - */ - public function getResponseCode() - { - return $this->responseCode; - } - - /** - * @return string - */ - public function getResponseMessage() - { - return $this->responseMessage; - } - - /** - * @return string - */ - public function getResponseMessages() - { - return implode(', ', $this->summary); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/FinTs.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/FinTs.php deleted file mode 100644 index f808f72c..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/FinTs.php +++ /dev/null @@ -1,418 +0,0 @@ -server = $server; - $this->port = $port; - - // escaping of bank code not really needed here as it should - // never have special chars. But we just do it to ensure - // that the request will not get messed up and the user - // can receive a valid error response from the HBCI server. - $this->bankCode = $this->escapeString($bankCode); - - // Here, escaping is needed for usernames or pins with - // HBCI special chars. - $this->username = $this->escapeString($username); - $this->pin = $this->escapeString($pin); - - $this->adapter = new Curl($this->server, $this->port); - $this->connection = new Connection($this->adapter); - } - - /** - * Sets the adapter to use. - * - * @param AdapterInterface $adapter - */ - public function setAdapter(AdapterInterface $adapter) - { - $this->adapter = $adapter; - $this->connection = new Connection($this->adapter); - } - - /** - * Gets array of all accounts. - * - * @return Model\Account[] - */ - public function getAccounts() - { - $dialog = $this->getDialog(); - $result = $dialog->syncDialog(); - $this->bankName = $dialog->getBankName(); - $accounts = new GetAccounts($result); - - return $accounts->getAccountsArray(); - } - - /** - * Gets array of all SEPA Accounts. - * - * @return Model\SEPAAccount[] - * @throws Adapter\Exception\AdapterException - * @throws Adapter\Exception\CurlException - */ - public function getSEPAAccounts() - { - $dialog = $this->getDialog(); - $dialog->syncDialog(); - $dialog->initDialog(); - - $message = $this->getNewMessage( - $dialog, - array(new HKSPA(3)), - array(AbstractMessage::OPT_PINTAN_MECH => $dialog->getSupportedPinTanMechanisms()) - ); - - $result = $dialog->sendMessage($message); - $dialog->endDialog(); - $sepaAccounts = new GetSEPAAccounts($result->rawResponse); - - return $sepaAccounts->getSEPAAccountsArray(); - } - - /** - * Gets the bank name. - * - * @return string - */ - public function getBankName() - { - if (null == $this->bankName) { - $this->getDialog()->syncDialog(); - } - - return $this->bankName; - } - - /** - * Gets statement of account. - * - * @param SEPAAccount $account - * @param \DateTime $from - * @param \DateTime $to - * @return Model\StatementOfAccount\StatementOfAccount|null - * @throws \Exception - */ - public function getStatementOfAccount(SEPAAccount $account, \DateTime $from, \DateTime $to) - { - $responses = array(); - - $dialog = $this->getDialog(); - $dialog->syncDialog(); - $dialog->initDialog(); - - $message = $this->createStateOfAccountMessage($dialog, $account, $from, $to, null); - $response = $dialog->sendMessage($message); - $touchdowns = $response->getTouchdowns($message); - $soaResponse = new GetStatementOfAccount($response->rawResponse); - $responses[] = $soaResponse->getRawMt940(); - - $touchdownCounter = 1; - while (isset($touchdowns[HKKAZ::NAME])) { - $message = $this->createStateOfAccountMessage( - $dialog, - $account, - $from, - $to, - $touchdowns[HKKAZ::NAME] - ); - - $r = $dialog->sendMessage($message); - $touchdowns = $r->getTouchDowns($message); - $soaResponse = new GetStatementOfAccount($r->rawResponse); - $responses[] = $soaResponse->getRawMt940(); - } - - $dialog->endDialog(); - - return GetStatementOfAccount::createModelFromRawMt940(implode('', $responses)); - } - - /** - * Helper method to create a "Statement of Account Message". - * - * @param Dialog $dialog - * @param SEPAAccount $account - * @param \DateTime $from - * @param \DateTime $to - * @param string|null $touchdown - * @return Message - * @throws \Exception - */ - protected function createStateOfAccountMessage( - Dialog $dialog, - SepaAccount $account, - \DateTime $from, - \DateTime $to, - $touchdown = null - ) { - // version 4, 5, 6, 7 - - // version 5 - /* - 1 Segmentkopf DEG M 1 - 2 Kontoverbindung Auftraggeber DEG ktv # M 1 - 3 Alle Konten DE jn # M 1 - 4 Von Datum DE dat # K 1 - 5 Bis Datum DE dat # K 1 - 6 Maximale Anzahl Einträge DE num ..4 K 1 >0 - 7 Aufsetzpunkt DE an ..35 K 1 - */ - - // version 6 - /* - 1 Segmentkopf 1 DEG M 1 - 2 Kontoverbindung Auftraggeber 2 DEG ktv # M 1 - 3 Alle Konten 1 DE jn # M 1 - 4 Von Datum 1 DE dat # O 1 - 5 Bis Datum 1 DE dat # O 1 - 6 Maximale Anzahl Einträge 1 DE num ..4 C 1 >0 - 7 Aufsetzpunkt 1 DE an ..35 C 1 - */ - - // version 7 - /* - 1 Segmentkopf 1 DEG M 1 - 2 Kontoverbindung international 1 DEG kti # M 1 - 3 Alle Konten 1 DE jn # M 1 - 4 Von Datum 1 DE dat # O 1 - 5 Bis Datum 1 DE dat # O 1 - 6 Maximale Anzahl Einträge 1 DE num ..4 C 1 >0 - 7 Aufsetzpunkt 1 DE an ..35 C 1 - */ - - switch ($dialog->getHkkazMaxVersion()) { - case 4: - case 5: - $konto = new Deg(); - $konto->addDataElement($account->getAccountNumber()); - $konto->addDataElement($account->getSubAccount()); - $konto->addDataElement(static::DEFAULT_COUNTRY_CODE); - $konto->addDataElement($account->getBlz()); - break; - case 6: - $konto = new Ktv( - $account->getAccountNumber(), - $account->getSubAccount(), - new Kik(280, $account->getBlz()) - ); - break; - case 7: - $konto = new Kti( - $account->getIban(), - $account->getBic(), - $account->getAccountNumber(), - $account->getSubAccount(), - new Kik(280, $account->getBlz()) - ); - break; - default: - throw new \Exception('Unsupported HKKAZ version: ' . $dialog->getHkkazMaxVersion()); - } - - $message = $this->getNewMessage( - $dialog, - array( - new HKKAZ( - $dialog->getHkkazMaxVersion(), - 3, - $konto, - HKKAZ::ALL_ACCOUNTS_N, - $from, - $to, - $touchdown - ) - ), - array(AbstractMessage::OPT_PINTAN_MECH => $dialog->getSupportedPinTanMechanisms()) - ); - - return $message; - } - - /** - * Gets the saldo of given SEPAAccount. - * - * @param SEPAAccount $account - * @return Model\Saldo|null - * @throws Adapter\Exception\AdapterException - * @throws Adapter\Exception\CurlException - * @throws \Exception - */ - public function getSaldo(SEPAAccount $account) - { - $dialog = $this->getDialog(); - $dialog->syncDialog(); - $dialog->initDialog(); - - switch ((int) $dialog->getHksalMaxVersion()) { - case 4: - case 5: - $hksalAccount = new Deg( - $account->getAccountNumber(), - $account->getSubAccount(), - static::DEFAULT_COUNTRY_CODE, $account->getBlz() - ); - $hksalAccount->addDataElement($account->getAccountNumber()); - $hksalAccount->addDataElement($account->getSubAccount()); - $hksalAccount->addDataElement(static::DEFAULT_COUNTRY_CODE); - $hksalAccount->addDataElement($account->getBlz()); - break; - case 6: - $hksalAccount = new Ktv( - $account->getAccountNumber(), - $account->getSubAccount(), - new Kik(280, $account->getBlz()) - ); - break; - case 7: - $hksalAccount = new Kti( - $account->getIban(), - $account->getBic(), - $account->getAccountNumber(), - $account->getSubAccount(), - new Kik(280, $account->getBlz()) - ); - break; - default: - throw new \Exception('Unsupported HKSAL version: ' . $dialog->getHksalMaxVersion()); - } - - $message = new Message( - $this->bankCode, - $this->username, - $this->pin, - $dialog->getSystemId(), - $dialog->getDialogId(), - $dialog->getMessageNumber(), - array( - new HKSAL($dialog->getHksalMaxVersion(), 3, $hksalAccount, HKSAL::ALL_ACCOUNTS_N) - ), - array( - AbstractMessage::OPT_PINTAN_MECH => $dialog->getSupportedPinTanMechanisms() - ) - ); - - $response = $dialog->sendMessage($message); - $response = new GetSaldo($response->rawResponse); - - return $response->getSaldoModel(); - } - - /** - * Helper method to retrieve a pre configured message object. - * Factory for poor people :) - * - * @param Dialog $dialog - * @param array $segments - * @param array $options - * @return Message - */ - protected function getNewMessage(Dialog $dialog, array $segments, array $options) - { - return new Message( - $this->bankCode, - $this->username, - $this->pin, - $dialog->getSystemId(), - $dialog->getDialogId(), - $dialog->getMessageNumber(), - $segments, - $options - ); - } - - /** - * Helper method to retrieve a pre configured dialog object. - * Factory for poor people :) - * - * @return Dialog - */ - protected function getDialog() - { - return new Dialog( - $this->connection, - $this->bankCode, - $this->username, - $this->pin, - $this->systemId - ); - } - - /** - * Needed for escaping userdata. - * HBCI escape char is "?" - * - * @param string $string - * @return string - */ - protected function escapeString($string) - { - return str_replace( - array('?', '@', ':', '+', '\''), - array('??', '?@', '?:', '?+', '?\''), - $string - ); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/AbstractMessage.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/AbstractMessage.php deleted file mode 100644 index 96a6d8da..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/AbstractMessage.php +++ /dev/null @@ -1,134 +0,0 @@ -segments[] = $segment; - } - - /** - * Gets all segments of a message. - * - * @return array - */ - public function getSegments() - { - return $this->segments; - } - - /** - * Sets the dialog ID. - * - * @param $dialogId - */ - public function setDialogId($dialogId) - { - $this->dialogId = $dialogId; - } - - /** - * Gets the dialog ID. - * - * @return int - */ - public function getDialogId() - { - return $this->dialogId; - } - - /** - * Sets the message number. - * - * @param int $number - */ - public function setMessageNumber($number) - { - $this->messageNumber = (int) $number; - } - - /** - * Gets the message number. - * - * @return int - */ - public function getMessageNumber() - { - return $this->messageNumber; - } - - /** - * Transform message to HBCI string. - * - * @return string - */ - public function toString() - { - $string = (string) $this->buildMessageHeader(); - - foreach ($this->segments as $segment) { - $string .= (string) $segment; - } - - return $string; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Builds the message header. - * - * @return HNHBK - */ - protected function buildMessageHeader() - { - $len = 0; - foreach ($this->segments as $segment) { - $len += strlen($segment); - } - - return new HNHBK($len, $this->dialogId, $this->messageNumber); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/Message.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/Message.php deleted file mode 100644 index 21eacfec..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Message/Message.php +++ /dev/null @@ -1,196 +0,0 @@ -securityReference = rand(1000000, 9999999); - $this->dialogId = $dialogId; - $this->messageNumber = $messageNumber; - $this->bankCode = $bankCode; - $this->username = $username; - $this->pin = $pin; - $this->systemId = $systemId; - $this->options = $options; - $this->profileVersion = SecurityProfile::PROFILE_VERSION_1; - $this->securityFunction = HNSHK::SECURITY_FUNC_999; - - if (isset($options[static::OPT_PINTAN_MECH]) && !empty($this->options[static::OPT_PINTAN_MECH])) { - if (!in_array('999', $this->options[static::OPT_PINTAN_MECH])) { - $this->profileVersion = SecurityProfile::PROFILE_VERSION_2; - $this->securityFunction = $this->options[static::OPT_PINTAN_MECH][0]; - } - } - - $signatureHead = $this->buildSignatureHead(); - $hnvsk = $this->buildEncryptionHead(); - - $this->addSegment($hnvsk); - - $this->encryptionEnvelop = new HNVSD(999, ''); - $this->addSegment($this->encryptionEnvelop); - - $this->addEncryptedSegment($signatureHead); - - foreach ($encryptedSegments as $es) { - $this->addEncryptedSegment($es); - } - - $curCount = count($encryptedSegments) + 3; - - $signatureEnd = new HNSHA($curCount, $this->securityReference, $this->pin); - $this->addEncryptedSegment($signatureEnd); - $this->addSegment(new HNHBS($curCount + 1, $this->messageNumber)); - } - - /** - * @return HNVSK - * @codeCoverageIgnore - */ - protected function buildEncryptionHead() - { - return new HNVSK( - 998, - $this->bankCode, - $this->username, - $this->systemId, - HNVSK::SECURITY_SUPPLIER_ROLE_ISS, - HNVSK::DEFAULT_COUNTRY_CODE, - HNVSK::COMPRESSION_NONE, - $this->profileVersion - ); - } - - /** - * @return HNSHK - * @codeCoverageIgnore - */ - protected function buildSignatureHead() - { - return new HNSHK( - 2, - $this->securityReference, - 280, // country code - $this->bankCode, - $this->username, - $this->systemId, - $this->securityFunction, - HNSHK::SECURITY_BOUNDARY_SHM, - HNSHK::SECURITY_SUPPLIER_ROLE_ISS, - $this->profileVersion - ); - } - - /** - * Adds a encrypted segment to the message. - * - * @param SegmentInterface $segment - */ - protected function addEncryptedSegment(SegmentInterface $segment) - { - $this->encryptedSegmentsCount++; - $this->encryptedSegments[] = $segment; - $encodedData = $this->encryptionEnvelop->getEncodedData()->getData(); - $encodedData .= (string) $segment; - $this->encryptionEnvelop->setEncodedData($encodedData); - } - - /** - * Only for read-only access. - * @return AbstractSegment[] - */ - public function getEncryptedSegments() - { - return $this->encryptedSegments; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Account.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Account.php deleted file mode 100644 index 822275f3..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Account.php +++ /dev/null @@ -1,219 +0,0 @@ -id; - } - - /** - * Set id - * - * @param string $id - * - * @return $this - */ - public function setId($id) - { - $this->id = $id; - - return $this; - } - - /** - * Get accountNumber - * - * @return string - */ - public function getAccountNumber() - { - return $this->accountNumber; - } - - /** - * Set accountNumber - * - * @param string $accountNumber - * - * @return $this - */ - public function setAccountNumber($accountNumber) - { - $this->accountNumber = (string) $accountNumber; - - return $this; - } - - /** - * Get bankCode - * - * @return string - */ - public function getBankCode() - { - return $this->bankCode; - } - - /** - * Set bankCode - * - * @param string $bankCode - * - * @return $this - */ - public function setBankCode($bankCode) - { - $this->bankCode = (string) $bankCode; - - return $this; - } - - /** - * Get iban - * - * @return string - */ - public function getIban() - { - return $this->iban; - } - - /** - * Set iban - * - * @param string $iban - * - * @return $this - */ - public function setIban($iban) - { - $this->iban = (string) $iban; - - return $this; - } - - /** - * Get customerId - * - * @return string - */ - public function getCustomerId() - { - return $this->customerId; - } - - /** - * Set customerId - * - * @param string $customerId - * - * @return $this - */ - public function setCustomerId($customerId) - { - $this->customerId = (string) $customerId; - - return $this; - } - - /** - * Get currency - * - * @return string - */ - public function getCurrency() - { - return $this->currency; - } - - /** - * Set currency - * - * @param string $currency - * - * @return $this - */ - public function setCurrency($currency) - { - $this->currency = (string) $currency; - - return $this; - } - - /** - * Get accountOwnerName - * - * @return string - */ - public function getAccountOwnerName() - { - return $this->accountOwnerName; - } - - /** - * Set accountOwnerName - * - * @param string $accountOwnerName - * - * @return $this - */ - public function setAccountOwnerName($accountOwnerName) - { - $this->accountOwnerName = (string) $accountOwnerName; - - return $this; - } - - /** - * Get accountDescription - * - * @return string - */ - public function getAccountDescription() - { - return $this->accountDescription; - } - - /** - * Set accountDescription - * - * @param string $accountDescription - * - * @return $this - */ - public function setAccountDescription($accountDescription) - { - $this->accountDescription = (string) $accountDescription; - - return $this; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/SEPAAccount.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/SEPAAccount.php deleted file mode 100644 index 918e167f..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/SEPAAccount.php +++ /dev/null @@ -1,141 +0,0 @@ -iban; - } - - /** - * Set iban - * - * @param string $iban - * - * @return $this - */ - public function setIban($iban) - { - $this->iban = (string) $iban; - - return $this; - } - - /** - * Get bic - * - * @return string - */ - public function getBic() - { - return $this->bic; - } - - /** - * Set bic - * - * @param string $bic - * - * @return $this - */ - public function setBic($bic) - { - $this->bic = (string) $bic; - - return $this; - } - - /** - * Get accountNumber - * - * @return string - */ - public function getAccountNumber() - { - return $this->accountNumber; - } - - /** - * Set accountNumber - * - * @param string $accountNumber - * - * @return $this - */ - public function setAccountNumber($accountNumber) - { - $this->accountNumber = (string) $accountNumber; - - return $this; - } - - /** - * Get subAccount - * - * @return string - */ - public function getSubAccount() - { - return $this->subAccount; - } - - /** - * Set subAccount - * - * @param string $subAccount - * - * @return $this - */ - public function setSubAccount($subAccount) - { - $this->subAccount = (string) $subAccount; - - return $this; - } - - /** - * Get blz - * - * @return string - */ - public function getBlz() - { - return $this->blz; - } - - /** - * Set blz - * - * @param string $blz - * - * @return $this - */ - public function setBlz($blz) - { - $this->blz = (string) $blz; - - return $this; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Saldo.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Saldo.php deleted file mode 100644 index 8de1aedb..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/Saldo.php +++ /dev/null @@ -1,97 +0,0 @@ -currency; - } - - /** - * Set currency - * - * @param string $currency - * - * @return $this - */ - public function setCurrency($currency) - { - $this->currency = (string) $currency; - - return $this; - } - - /** - * Get amount - * - * @return float - */ - public function getAmount() - { - return $this->amount; - } - - /** - * Set amount - * - * @param float $amount - * - * @return $this - */ - public function setAmount($amount) - { - $this->amount = (float) $amount; - - return $this; - } - - /** - * Get valuta - * - * @return \DateTime - */ - public function getValuta() - { - return $this->valuta; - } - - /** - * Set valuta - * - * @param \DateTime $valuta - * - * @return $this - */ - public function setValuta(\DateTime $valuta) - { - $this->valuta = $valuta; - - return $this; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Statement.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Statement.php deleted file mode 100644 index c3de6a4f..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Statement.php +++ /dev/null @@ -1,134 +0,0 @@ -transactions; - } - - /** - * Set transactions - * - * @param array $transactions - * - * @return $this - */ - public function setTransactions(array $transactions = null) - { - $this->transactions = $transactions; - - return $this; - } - - public function addTransaction(Transaction $transaction) - { - $this->transactions[] = $transaction; - } - - /** - * Get startBalance - * - * @return float - */ - public function getStartBalance() - { - return $this->startBalance; - } - - /** - * Set startBalance - * - * @param float $startBalance - * - * @return $this - */ - public function setStartBalance($startBalance) - { - $this->startBalance = (float) $startBalance; - - return $this; - } - - /** - * Get creditDebit - * - * @return string - */ - public function getCreditDebit() - { - return $this->creditDebit; - } - - /** - * Set creditDebit - * - * @param string|null $creditDebit - * - * @return $this - */ - public function setCreditDebit($creditDebit) - { - $this->creditDebit = $creditDebit; - - return $this; - } - - /** - * Get date - * - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * Set date - * - * @param \DateTime $date - * - * @return $this - */ - public function setDate(\DateTime $date) - { - $this->date = $date; - - return $this; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/StatementOfAccount.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/StatementOfAccount.php deleted file mode 100644 index 886abb49..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/StatementOfAccount.php +++ /dev/null @@ -1,83 +0,0 @@ -statements; - } - - /** - * Set statements - * - * @param array $statements - * - * @return $this - */ - public function setStatements(array $statements = null) - { - $this->statements = null == $statements ? array() : $statements; - - return $this; - } - - /** - * @param Statement $statement - */ - public function addStatement(Statement $statement) - { - $this->statements[] = $statement; - } - - /** - * Gets statement for given date. - * - * @param string|\DateTime $date - * @return Statement|null - */ - public function getStatementForDate($date) - { - if (is_string($date)) { - $date = new \DateTime($date); - } - - foreach ($this->statements as $stmt) { - if ($stmt->getDate() == $date) { - return $stmt; - } - } - - return null; - } - - /** - * Checks if a statement with given date exists. - * - * @param string|\DateTime $date - * @return bool - */ - public function hasStatementForDate($date) - { - if (is_string($date)) { - $date = new \DateTime($date); - } - - return null !== $this->getStatementForDate($date); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Transaction.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Transaction.php deleted file mode 100644 index 7a119893..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Model/StatementOfAccount/Transaction.php +++ /dev/null @@ -1,359 +0,0 @@ -getBookingDate(); - } - - /** - * Get booking date - * - * @return \DateTime|null - */ - public function getBookingDate() - { - return $this->bookingDate; - } - - /** - * Get date - * - * @return \DateTime|null - */ - public function getValutaDate() - { - return $this->valutaDate; - } - - /** - * Set booking date - * - * @param \DateTime|null $date - * - * @return $this - */ - public function setBookingDate(\DateTime $date = null) - { - $this->bookingDate = $date; - - return $this; - } - - /** - * Set valuta date - * - * @param \DateTime|null $date - * - * @return $this - */ - public function setValutaDate(\DateTime $date = null) - { - $this->valutaDate = $date; - - return $this; - } - - /** - * Get amount - * - * @return float - */ - public function getAmount() - { - return $this->amount; - } - - /** - * Set amount - * - * @param float $amount - * - * @return $this - */ - public function setAmount($amount) - { - $this->amount = (float) $amount; - - return $this; - } - - /** - * Get creditDebit - * - * @return string - */ - public function getCreditDebit() - { - return $this->creditDebit; - } - - /** - * Set creditDebit - * - * @param string $creditDebit - * - * @return $this - */ - public function setCreditDebit($creditDebit) - { - $this->creditDebit = $creditDebit; - - return $this; - } - - /** - * Get bookingText - * - * @return string - */ - public function getBookingText() - { - return $this->bookingText; - } - - /** - * Set bookingText - * - * @param string $bookingText - * - * @return $this - */ - public function setBookingText($bookingText) - { - $this->bookingText = (string) $bookingText; - - return $this; - } - - /** - * Get description1 - * - * @return string - */ - public function getDescription1() - { - return $this->description1; - } - - /** - * Set description1 - * - * @param string $description1 - * - * @return $this - */ - public function setDescription1($description1) - { - $this->description1 = (string) $description1; - - return $this; - } - - /** - * Get description2 - * - * @return string - */ - public function getDescription2() - { - return $this->description2; - } - - /** - * Set description2 - * - * @param string $description2 - * - * @return $this - */ - public function setDescription2($description2) - { - $this->description2 = (string) $description2; - - return $this; - } - - /** - * Get structuredDescription - * - * @return array - */ - public function getStructuredDescription() - { - return $this->structuredDescription; - } - - /** - * Set structuredDescription - * - * @param array $structuredDescription - * - * @return $this - */ - public function setStructuredDescription($structuredDescription) - { - $this->structuredDescription = $structuredDescription; - - return $this; - } - - /** - * Get the main description (SVWZ) - * - * @return string - */ - public function getMainDescription() - { - if (array_key_exists('SVWZ', $this->structuredDescription)) { - return $this->structuredDescription['SVWZ']; - } else { - return ""; - } - } - - /** - * Get bankCode - * - * @return string - */ - public function getBankCode() - { - return $this->bankCode; - } - - /** - * Set bankCode - * - * @param string $bankCode - * - * @return $this - */ - public function setBankCode($bankCode) - { - $this->bankCode = (string) $bankCode; - - return $this; - } - - /** - * Get accountNumber - * - * @return string - */ - public function getAccountNumber() - { - return $this->accountNumber; - } - - /** - * Set accountNumber - * - * @param string $accountNumber - * - * @return $this - */ - public function setAccountNumber($accountNumber) - { - $this->accountNumber = (string) $accountNumber; - - return $this; - } - - /** - * Get name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Set name - * - * @param string $name - * - * @return $this - */ - public function setName($name) - { - $this->name = (string) $name; - - return $this; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Parser/Exception/MT940Exception.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Parser/Exception/MT940Exception.php deleted file mode 100644 index 493a81b6..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Parser/Exception/MT940Exception.php +++ /dev/null @@ -1,12 +0,0 @@ -rawData = (string) $rawData; - } - - /** - * @param string $target - * @return array - * @throws MT940Exception - */ - public function parse($target) - { - switch ($target) { - case static::TARGET_ARRAY: - return $this->parseToArray(); - break; - default: - throw new MT940Exception('Invalid parse type provided'); - } - } - - /** - * @return array - * @throws MT940Exception - */ - protected function parseToArray() - { - // The divider can be either \r\n or @@ - $divider = substr_count($this->rawData, "\r\n-") > substr_count($this->rawData, '@@-') ? "\r\n" : '@@'; - - $result = array(); - $days = preg_split('%' . $divider . '-$%', $this->rawData); - foreach ($days as &$day) { - $day = explode($divider . ':', $day); - for ($i = 0, $cnt = count($day); $i < $cnt; $i++) { - // handle start balance - // 60F:C160401EUR1234,56 - if (preg_match('/^60(F|M):/', $day[$i])) { - // remove 60(F|M): for better parsing - $day[$i] = substr($day[$i], 4); - $this->soaDate = $this->getDate(substr($day[$i], 1, 6)); - - if (!isset($result[$this->soaDate])) { - $result[$this->soaDate] = array('start_balance' => array()); - } - - $cdMark = substr($day[$i], 0, 1); - if ($cdMark == 'C') { - $result[$this->soaDate]['start_balance']['credit_debit'] = static::CD_CREDIT; - } elseif ($cdMark == 'D') { - $result[$this->soaDate]['start_balance']['credit_debit'] = static::CD_DEBIT; - } - - $amount = str_replace(',', '.', substr($day[$i], 10)); - $result[$this->soaDate]['start_balance']['amount'] = $amount; - } elseif ( - // found transaction - // trx:61:1603310331DR637,39N033NONREF - 0 === strpos($day[$i], '61:') - && isset($day[$i + 1]) - && 0 === strpos($day[$i + 1], '86:') - ) { - $transaction = substr($day[$i], 3); - $description = substr($day[$i + 1], 3); - - if (!isset($result[$this->soaDate]['transactions'])) { - $result[$this->soaDate]['transactions'] = array(); - } - - // short form for better handling - $trx = &$result[$this->soaDate]['transactions']; - - preg_match('/^\d{6}(\d{4})?(C|D|RC|RD)([A-Z]{1})?([^N]+)N/', $transaction, $trxMatch); - if ($trxMatch[2] == 'C') { - $trx[count($trx)]['credit_debit'] = static::CD_CREDIT; - } elseif ($trxMatch[2] == 'D') { - $trx[count($trx)]['credit_debit'] = static::CD_DEBIT; - } else { - throw new MT940Exception('cd mark not found in: ' . $transaction); - } - - $amount = $trxMatch[4]; - $amount = str_replace(',', '.', $amount); - $trx[count($trx) - 1]['amount'] = floatval($amount); - - $description = $this->parseDescription($description); - $trx[count($trx) - 1]['description'] = $description; - - // :61:1605110509D198,02NMSCNONREF - // 16 = year - // 0511 = valuta date - // 0509 = booking date - $year = substr($transaction, 0, 2); - $valutaDate = $this->getDate($year . substr($transaction, 2, 4)); - - $bookingDate = substr($transaction, 6, 4); - if (preg_match('/^\d{4}$/', $bookingDate)) { - // if valuta date is earlier than booking date, then it must be in the new year. - $year = substr($transaction, 2, 2) < substr($transaction, 6, 2) ? --$year : $year; - $bookingDate = $this->getDate($year . $bookingDate); - } else { - // if booking date not set in :61, then we have to take it from :60F - $bookingDate = $this->soaDate; - } - - $trx[count($trx) - 1]['booking_date'] = $bookingDate; - $trx[count($trx) - 1]['valuta_date'] = $valutaDate; - } - } - } - - return $result; - } - - /** - * @param string $descr - * @return array - */ - protected function parseDescription($descr) - { - $prepared = array(); - $result = array(); - - // prefill with empty values - for ($i = 0; $i <= 63; $i++) { - $prepared[$i] = null; - } - - $descr = str_replace("\r\n", '', $descr); - $descr = str_replace('? ', '?', $descr); - preg_match_all('/\?[\r\n]*(\d{2})([^\?]+)/', $descr, $matches, PREG_SET_ORDER); - - $descriptionLines = array(); - $description1 = ''; // Legacy, could be removed. - $description2 = ''; // Legacy, could be removed. - foreach ($matches as $m) { - $index = (int) $m[1]; - if ((20 <= $index && $index <= 29) || (60 <= $index && $index <= 63)) { - if (20 <= $index && $index <= 29) { - $description1 .= $m[2]; - } else { - $description2 .= $m[2]; - } - $m[2] = trim($m[2]); - if (!empty($m[2])) { - $descriptionLines[] = $m[2]; - } - } else { - $prepared[$index] = $m[2]; - } - } - - $description = array(); - if (empty($descriptionLines) || strlen($descriptionLines[0]) < 5 || $descriptionLines[0][4] !== '+') { - $description['SVWZ'] = implode('', $descriptionLines); - } else { - $lastType = null; - foreach ($descriptionLines as $line) { - if (strlen($line) > 5 && $line[4] === '+') { - if ($lastType != null) { - $description[$lastType] = trim($description[$lastType]); - } - $lastType = substr($line, 0, 4); - $description[$lastType] = substr($line, 5); - } else { - $description[$lastType] .= $line; - } - if (strlen($line) < 27) { - // Usually, lines are 27 characters long. In case characters are missing, then it's either the end - // of the current type or spaces have been trimmed from the end. We want to collapse multiple spaces - // into one and we don't want to leave trailing spaces behind. So add a single space here to make up - // for possibly missing spaces, and if it's the end of the type, it will be trimmed off later. - $description[$lastType] .= ' '; - } - } - $description[$lastType] = trim($description[$lastType]); - } - - $result['description'] = $description; - $result['booking_text'] = trim($prepared[0]); - $result['primanoten_nr'] = trim($prepared[10]); - $result['description_1'] = trim($description1); - $result['bank_code'] = trim($prepared[30]); - $result['account_number'] = trim($prepared[31]); - $result['name'] = trim($prepared[32] . $prepared[33]); - $result['text_key_addition'] = trim($prepared[34]); - $result['description_2'] = trim($description2); - - return $result; - } - - /** - * @param string $val - * @return string - */ - protected function getDate($val) - { - $val = '20' . $val; - preg_match('/(\d{4})(\d{2})(\d{2})/', $val, $m); - return $m[1] . '-' . $m[2] . '-' . $m[3]; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetAccounts.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetAccounts.php deleted file mode 100644 index d92e96e7..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetAccounts.php +++ /dev/null @@ -1,60 +0,0 @@ -findSegments(static::SEG_ACCOUNT_INFORMATION); - - foreach ($accounts as $account) { - $accountParts = $this->splitSegment($account); - $account = $this->createModelFromArray($accountParts); - if ($account !== null) { - $this->accounts[] = $account; - } - } - - return $this->accounts; - } - - /** - * Creates a Account model from array. - * - * @param array $array - * @return Account - */ - protected function createModelFromArray(array $array) - { - if (!$array[1]) { - return null; - } - $account = new Account(); - list($accountNumber, $x, $countryCode, $bankCode) = explode(':', $array[1]); - $account->setId($array[1]); - $account->setAccountNumber($accountNumber); - $account->setBankCode($bankCode); - $account->setIban($array[2]); - $account->setCustomerId($array[3]); - $account->setCurrency($array[5]); - $account->setAccountOwnerName($array[6]); - $account->setAccountDescription($array[8]); - - return $account; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSEPAAccounts.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSEPAAccounts.php deleted file mode 100644 index 5336df1c..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSEPAAccounts.php +++ /dev/null @@ -1,56 +0,0 @@ -findSegment(static::SEG_ACCOUNT_INFORMATION); - - if (is_string($accounts)) { - $accounts = $this->splitSegment($accounts); - array_shift($accounts); - foreach ($accounts as $account) { - $array = $this->splitDeg($account); - $this->accounts[] = $this->createModelFromArray($array); - } - } - - return $this->accounts; - } - - /** - * Creates a SEPAAccount model from array. - * - * @param array $array - * @return SEPAAccount - */ - protected function createModelFromArray(array $array) - { - $account = new SEPAAccount(); - $account->setIban($array[1]); - $account->setBic($array[2]); - $account->setAccountNumber($array[3]); - $account->setSubAccount($array[4]); - $account->setBlz($array[6]); - - return $account; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSaldo.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSaldo.php deleted file mode 100644 index d6fb5431..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetSaldo.php +++ /dev/null @@ -1,70 +0,0 @@ -findSegment(static::SEG_ACCOUNT_INFORMATION); - - if (is_string($saldoSec)) { - $saldoSec = $this->splitSegment($saldoSec); - array_shift($saldoSec); // get rid of header - $model = $this->createModelFromArray($saldoSec); - } - - return $model; - } - - /** - * Creates a Saldo model from array. - * - * @param array $array - * @return Saldo - * @throws \Exception - */ - protected function createModelFromArray(array $array) - { - $model = new Saldo(); - $saldoDeg = $this->splitDeg($array[3]); - - $amount = str_replace(',', '.', $saldoDeg[1]); - $creditDebit = trim($saldoDeg[0]); - - if (static::SALDO_DEBIT == $creditDebit) { - $amount = - (float) $amount; - } elseif (static::SALDO_CREDIT == $creditDebit) { - $amount = (float) $amount; - } else { - throw new \Exception('Invalid Soll-Haben-Kennzeichen: ' . $creditDebit); - } - - $model->setAmount($amount); - $model->setCurrency($saldoDeg[2]); - - $valutaDate = $saldoDeg[3]; - preg_match('/(\d{4})(\d{2})(\d{2})/', $valutaDate, $m); - $valutaDate = new \DateTime($m[1] . '-' . $m[2] . '-' . $m[3]); - $model->setValuta($valutaDate); - - return $model; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetStatementOfAccount.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetStatementOfAccount.php deleted file mode 100644 index b1d720ad..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/GetStatementOfAccount.php +++ /dev/null @@ -1,102 +0,0 @@ -findSegment(static::SEG_ACCOUNT_INFORMATION); - if (is_string($seg)) { - if (preg_match('/@(\d+)@(.+)/ms', $seg, $m)) { - return $m[2]; - } - } - - return ''; - } - - /** - * Creates StatementOfAccount object from raw MT940 string. - * - * @param string $rawMt940 - * @return StatementOfAccount - */ - public static function createModelFromRawMt940($rawMt940) - { - $parser = new MT940($rawMt940); - - return static::createModelFromArray($parser->parse(MT940::TARGET_ARRAY)); - } - - /** - * Adds statements to an existing StatementOfAccount object. - * - * @param array $array - * @param StatementOfAccount $statementOfAccount - * @return StatementOfAccount - */ - protected static function addFromArray(array $array, StatementOfAccount $statementOfAccount) - { - foreach ($array as $date => $statement) { - if ($statementOfAccount->hasStatementForDate($date)) { - $statementModel = $statementOfAccount->getStatementForDate($date); - } else { - $statementModel = new Statement(); - $statementModel->setDate(new \DateTime($date)); - $statementModel->setStartBalance((float) $statement['start_balance']['amount']); - $statementModel->setCreditDebit($statement['start_balance']['credit_debit']); - $statementOfAccount->addStatement($statementModel); - } - - if (isset($statement['transactions'])) { - foreach ($statement['transactions'] as $trx) { - $transaction = new Transaction(); - $transaction->setBookingDate(new \DateTime($trx['booking_date'])); - $transaction->setValutaDate(new \DateTime($trx['valuta_date'])); - $transaction->setCreditDebit($trx['credit_debit']); - $transaction->setAmount($trx['amount']); - $transaction->setBookingText($trx['description']['booking_text']); - $transaction->setDescription1($trx['description']['description_1']); - $transaction->setDescription2($trx['description']['description_2']); - $transaction->setStructuredDescription($trx['description']['description']); - $transaction->setBankCode($trx['description']['bank_code']); - $transaction->setAccountNumber($trx['description']['account_number']); - $transaction->setName($trx['description']['name']); - $statementModel->addTransaction($transaction); - } - } - } - - return $statementOfAccount; - } - - /** - * Creates a StatementOfAccount model from array. - * - * @param array $array - * @return StatementOfAccount - */ - protected static function createModelFromArray(array $array) - { - $soa = static::addFromArray($array, new StatementOfAccount()); - - return $soa; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/Initialization.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/Initialization.php deleted file mode 100644 index 63c05c97..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Response/Initialization.php +++ /dev/null @@ -1,12 +0,0 @@ -rawResponse; - } - - $this->rawResponse = $rawResponse; - $this->response = $this->unwrapEncryptedMsg($rawResponse); - $this->segments = preg_split("#'(?=[A-Z]{4,}:\d|')#", $rawResponse); - } - - /** - * Extracts dialog ID from response. - * - * @return string|null - * @throws \Exception - */ - public function getDialogId() - { - $segment = $this->findSegment('HNHBK'); - - if (null === $segment) { - throw new \Exception('Could not find element HNHBK. Invalid response?'); - } - - return $this->getSegmentIndex(4, $segment); - } - - /** - * Extracts bank name from response. - * - * @return string|null - */ - public function getBankName() - { - $bankName = null; - $segment = $this->findSegment('HIBPA'); - if (null != $segment) { - $split = $this->splitSegment($segment); - if (isset($split[3])) { - $bankName = $split[3]; - } - } - - return $bankName; - } - - /** - * Some kind of HBCI pagination. - * - * @param AbstractMessage $message - * - * @return array - */ - public function getTouchDowns(AbstractMessage $message) - { - $touchdown = array(); - $messageSegments = $message->getEncryptedSegments(); - /** @var AbstractSegment $msgSeg */ - foreach ($messageSegments as $msgSeg) { - $segment = $this->findSegmentForReference('HIRMS', $msgSeg); - if (null != $segment) { - $parts = $this->splitSegment($segment); - // remove header - array_shift($parts); - foreach ($parts as $p) { - $pSplit = $this->splitDeg($p); - if ($pSplit[0] == 3040) { - $td = $pSplit[3]; - $touchdown[$msgSeg->getName()] = $td; - } - } - } - } - - return $touchdown; - } - - /** - * Extracts supported TAN mechanisms from response. - * - * @return array - */ - public function getSupportedTanMechanisms() - { - $segments = $this->findSegments('HIRMS'); - // @todo create method to get reference element from request - foreach ($segments as $segment) { - $segment = $this->splitSegment($segment); - array_shift($segment); - foreach ($segment as $seg) { - list($id, $msg) = explode('::', $seg, 2); - if ("3920" == $id) { - if (preg_match_all('/\d{3}/', $msg, $matches)) { - return $matches[0]; - } - } - } - } - - return array(); - } - - /** - * @return int - */ - public function getHksalMaxVersion() - { - return $this->getSegmentMaxVersion('HISALS'); - } - - /** - * @return int - */ - public function getHkkazMaxVersion() - { - return $this->getSegmentMaxVersion('HIKAZS'); - } - - /** - * Checks if request / response was successful. - * - * @return bool - */ - public function isSuccess() - { - $summary = $this->getMessageSummary(); - - foreach ($summary as $code => $message) { - if ("9" == substr($code, 0, 1)) { - return false; - } - } - - return true; - } - - /** - * @return array - * @throws \Exception - */ - public function getMessageSummary() - { - return $this->getSummaryBySegment('HIRMG'); - } - - /** - * @return array - * @throws \Exception - */ - public function getSegmentSummary() - { - return $this->getSummaryBySegment('HIRMS'); - } - - /** - * @param string $name - * - * @return array - * @throws \Exception - */ - protected function getSummaryBySegment($name) - { - if (!in_array($name, array('HIRMS', 'HIRMG'))) { - throw new \Exception('Invalid segment for message summary. Only HIRMS and HIRMG supported'); - } - - $result = array(); - $segment = $this->findSegment($name); - $segment = $this->splitSegment($segment); - array_shift($segment); - foreach ($segment as $de) { - $de = $this->splitDeg($de); - $result[$de[0]] = $de[2]; - } - - return $result; - } - - /** - * @param string $segmentName - * - * @return int - */ - public function getSegmentMaxVersion($segmentName) - { - $version = 3; - $segments = $this->findSegments($segmentName); - foreach ($segments as $s) { - $parts = $this->splitSegment($s); - $segmentHeader = $this->splitDeg($parts[0]); - $curVersion = (int) $segmentHeader[2]; - if ($curVersion > $version) { - $version = $curVersion; - } - } - - return $version; - } - - /** - * @return string - * @throws \Exception - */ - public function getSystemId() - { - $segment = $this->findSegment('HISYN'); - - if (!preg_match('/HISYN:\d+:\d+:\d+\+(.+)/', $segment, $matches)) { - throw new \Exception('Could not determine system id.'); - } - - return $matches[1]; - } - - /** - * @param bool $translateCodes - * - * @return string - */ - public function humanReadable($translateCodes = false) - { - return str_replace( - array("'", '+'), - array(PHP_EOL, PHP_EOL . " "), - $translateCodes - ? NameMapping::translateResponse($this->rawResponse) - : $this->rawResponse - ); - } - - /** - * @param string $name - * @param AbstractSegment $reference - * - * @return string|null - */ - protected function findSegmentForReference($name, AbstractSegment $reference) - { - $segments = $this->findSegments($name); - foreach ($segments as $seg) { - $segSplit = $this->splitSegment($seg); - $segSplit = array_shift($segSplit); - $segSplit = $this->splitDeg($segSplit); - if ($segSplit[3] == $reference->getSegmentNumber()) { - return $seg; - } - } - - return null; - } - - /** - * @param string $name - * - * @return string|null - */ - protected function findSegment($name) - { - return $this->findSegments($name, true); - } - - /** - * @param string $name - * @param bool $one - * - * @return array|null|string - */ - protected function findSegments($name, $one = false) - { - $found = $one ? null : array(); - - foreach ($this->segments as $segment) { - $split = explode(':', $segment, 2); - - if ($split[0] == $name) { - if ($one) { - return $segment; - } - $found[] = $segment; - } - } - - return $found; - } - - /** - * @param $segment - * - * @return array - */ - protected function splitSegment($segment) - { - $parts = preg_split('/\+(?splitSegment($segment); - if (isset($segment[$idx - 1])) { - return $segment[$idx - 1]; - } - - return null; - } - - /** - * @param string $response - * - * @return string - */ - protected function unwrapEncryptedMsg($response) - { - if (preg_match('/HNVSD:\d+:\d+\+@\d+@(.+)\'\'/', $response, $matches)) { - return $matches[1]; - } - - return $response; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/AbstractSegment.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/AbstractSegment.php deleted file mode 100644 index d4251305..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/AbstractSegment.php +++ /dev/null @@ -1,108 +0,0 @@ -type = strtoupper($type); - $this->version = $version; - $this->segmentNumber = $segmentNumber; - $this->dataElements = $dataElements; - } - - /** - * @param array $dataElements - */ - public function setDataElements(array $dataElements = array()) - { - $this->dataElements = $dataElements; - } - - /** - * @return array - */ - public function getDataElements() - { - return $this->dataElements; - } - - /** - * @return string - */ - public function toString() - { - $string = $this->type . ':' . $this->segmentNumber . ':' . $this->version; - - foreach ($this->dataElements as $de) { - $string .= '+' . (string) $de; - } - - return $string . static::SEGMENT_SEPARATOR; - } - - /** - * @return string - */ - public function __toString() - { - return $this->toString(); - } - - /** - * @param bool $translateCodes - * @return string - */ - public function humanReadable($translateCodes = false) - { - return str_replace( - array("'", '+'), - array(PHP_EOL, PHP_EOL . " "), - $translateCodes - ? NameMapping::translateResponse($this->toString()) - : $this->toString() - ); - } - - /** - * @return int - */ - public function getSegmentNumber() - { - return $this->segmentNumber; - } - - /** - * @return int - */ - public function getVersion() - { - return $this->version; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKEND.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKEND.php deleted file mode 100644 index 231a2fe9..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HKEND.php +++ /dev/null @@ -1,41 +0,0 @@ -getDataElements(); - - return $des[0]; - } - - /** - * @param string $data - */ - public function setEncodedData($data) - { - $this->setDataElements(array(new Bin($data))); - } - - /** - * @return string - */ - public function getName() - { - return static::NAME; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNVSK.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNVSK.php deleted file mode 100644 index 4a453c1c..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/HNVSK.php +++ /dev/null @@ -1,84 +0,0 @@ - 'Dialogende', - 'HKIDN' => 'Identifikation', - 'HKSYN' => 'Synchronisation', - 'HKVVB' => 'Verarbeitungsvorbereitung', - 'HNHBK' => 'Nachrichtenkopf', - 'HNHBS' => 'Nachrichtenabschluss', - 'HNSHA' => 'Signaturabschluss', - 'HNSHK' => 'Signaturkopf', - 'HNVSD' => 'Verschlüsselte Daten', - 'HNVSK' => 'Verschlüsselungskopf', - 'HKISA' => 'Anforderung eines öffentlichen Schlüssels', - 'HIBPA' => 'Bankparameter allgemein', - 'HISSP' => 'Bestätigung der Schlüsselsperrung', - 'HIKPV' => 'Komprimierungsverfahren', - 'HIUPD' => 'Kontoinformation', - 'HIKIM' => 'Kreditinstitutsmeldung', - 'HKLIF' => 'Life-Indikator', - 'HIRMS' => 'Rückmeldung zu Segmenten', - 'HIRMG' => 'Rückmeldungen zur Gesamtnachricht', - 'HKSAK' => 'Schlüsseländerung', - 'HKSSP' => 'Schlüsselsperrung', - 'HISHV' => 'Sicherheitsverfahren', - 'HISYN' => 'Synchronisierungsantwort', - 'HIISA' => 'Übermittlung eines öffentlichen Schlüssels', - 'HIUPA' => 'Userparameter allgemein', - 'HIKOM' => 'Kommunikationszugang rückmelden', - // Geschäftsvorfälle - // http://www.hbci-zka.de/dokumente/spezifikation_deutsch/fintsv3/FinTS_3.0_Messages_Geschaeftsvorfaelle_2015-08-07_final_version.pdf - // Section: E.1 - 'HKADR' => 'Adressänderung', - 'HIADRS' => 'Adressänderung Parameter', - 'HITEA' => 'Änderung terminierter Einzellastschrift bestätigen', - 'HIDSA' => 'Änderung terminierter SEPA-Einzellastschriften bestätigen', - 'HIBSA' => 'Änderung terminierter SEPA-Firmeneinzellastschrift bestätigen', - 'HICSA' => 'Änderung terminierter SEPA-Überweisung bestätigen', - 'HITUA' => 'Änderung terminierter Überweisung bestätigen', - 'HICVE' => 'Anlage vorbereiteter SEPA-Überweisung bestätigen', - 'HIVUE' => 'Anlage vorbereiteter Überweisung bestätigen', - 'HKCTD' => 'Auftragsdetails für C-Transaktionen', - 'HICTDS' => 'Auftragsdetails für C-Transaktionen Parameter', - 'HICTD' => 'Auftragsdetails für C-Transaktionen rückmelden', - 'HKAUE' => 'Ausgeführte Überweisungen anfordern', - 'HIAUE' => 'Ausgeführte Überweisungen rückmelden', - 'HIAUES' => 'Ausgeführte Überweisungen Parameter', - 'HKAUB' => 'Auslandsüberweisung', - 'HKAOM' => 'Auslandsüberweisung ohne Meldeteil', - 'HIAOMS' => 'Auslandsüberweisung ohne Meldeteil Parameter', - 'HIAUBS' => 'Auslandsüberweisung Parameter', - 'HKCTA' => 'Auslösen von C-Transaktionen', - 'HICTAS' => 'Auslösen von C-Transaktionen Parameter', - 'HIAPN' => 'Auswahl Postfach-Nachrichtentypen rückmelden', - 'HKFDB' => 'Bearbeitungsstatus Dokument anfordern ', - 'HIFDBS' => 'Bearbeitungsstatus Dokument Parameter', - 'HIFDB' => 'Bearbeitungsstatus Dokument rückmelden', - 'HKPPB' => 'Bestand Daueraufträge Prepaidkarte laden anfordern', - 'HIPPBS' => 'Bestand Daueraufträge Prepaidkarte laden Parameter', - 'HIPPB' => 'Bestand Daueraufträge Prepaidkarte laden rückmelden', - 'HKCUB' => 'Bestand Empfängerkonten anfordern', - 'HKLWB' => 'Bestand Lastschriftwiderspruch', - 'HKSAL' => 'Saldenabfrage', - 'HISALS' => 'Saldenabfrage Parameter', - 'HISAL' => 'Saldenrückmeldung', - 'HIEKAS' => 'Kontoauszug Parameter', - 'HIKAZS' => 'Kontoumsätze/Zeitraum Parameter', - 'HIQTGS' => 'Empfangsquittung Parameter', - 'HICSBS' => 'Bestand terminierter SEPA-Überweisungen Parameter', - 'HICSLS' => 'Terminierte SEPA-Überweisung löschen Parameter', - 'HKSPA' => 'SEPA-Kontoverbindung anfordern', - // tbc - // PIN/TAN - // http://www.hbci-zka.de/dokumente/spezifikation_deutsch/fintsv3/FinTS_3.0_Security_Sicherheitsverfahren_PINTAN_Rel_20101027_final_version.pdf - // - 'HIPAES' => 'PIN ändern Parameter', - 'HIPSPS' => 'PIN sperren Parameter', - - ); - - /** - * @param string $code - * @return string - */ - public static function codeToName($code) - { - return isset(static::$mapping[$code]) ? static::$mapping[$code] : $code; - } - - /** - * @param string $name - * @return string - */ - public static function nameToCode($name) - { - $flipped = array_flip(static::$mapping); - return isset($flipped[$name]) ? $flipped[$name] : $name; - } - - /** - * @param string $text - * @return string - */ - public static function translateResponse($text) - { - return str_replace(array_flip(static::$mapping), static::$mapping, $text); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/Segment.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/Segment.php deleted file mode 100644 index fe213815..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/Segment.php +++ /dev/null @@ -1,35 +0,0 @@ -type; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/SegmentInterface.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/SegmentInterface.php deleted file mode 100644 index 078927f7..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Fhp/Segment/SegmentInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -adapter = $this->getMockBuilder('\Fhp\Adapter\Curl') - ->disableOriginalConstructor() - ->setMethods(array('send')) - ->getMock(); - - $this->message = $this->getMockBuilder('\Fhp\Message\Message') - ->disableOriginalConstructor() - ->getMock(); - } - - public function test_can_set_and_get_adapter() - { - $conn = new Connection($this->adapter); - $this->assertEquals($this->adapter, $conn->getAdapter()); - } - - public function test_send_calls_adapter_send() - { - $this->adapter->expects($this->once()) - ->method('send') - ->with($this->message) - ->will($this->returnValue('response text')); - - $conn = new Connection($this->adapter); - $res = $conn->send($this->message); - - $this->assertInternalType('string', $res); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/EncryptionAlgorithmTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/EncryptionAlgorithmTest.php deleted file mode 100644 index cfd09c1f..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/EncryptionAlgorithmTest.php +++ /dev/null @@ -1,28 +0,0 @@ -assertEquals('2:2:13:@8@00000000:5:1', (string) $e); - $this->assertEquals('2:2:13:@8@00000000:5:1', $e->toString()); - } - - public function test_custom_to_string() - { - $e = new EncryptionAlgorithm( - EncryptionAlgorithm::TYPE_OSY, - EncryptionAlgorithm::OPERATION_MODE_ISO_9796_1, - EncryptionAlgorithm::ALGORITHM_KEY_TYPE_SYM_PUB, - EncryptionAlgorithm::ALGORITHM_IV_DESCRIPTION_IVC - ); - - $this->assertEquals('2:16:6:1:5:1', (string) $e); - $this->assertEquals('2:16:6:1:5:1', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/HashAlgorithmTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/HashAlgorithmTest.php deleted file mode 100644 index fe8c9177..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/HashAlgorithmTest.php +++ /dev/null @@ -1,15 +0,0 @@ -assertEquals('1:999:1', (string) $e); - $this->assertEquals('1:999:1', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/KeyNameTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/KeyNameTest.php deleted file mode 100644 index 30a67b18..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/KeyNameTest.php +++ /dev/null @@ -1,16 +0,0 @@ -assertEquals('DE:72191600:username:V:0:0', (string) $e); - $this->assertEquals('DE:72191600:username:V:0:0', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityDateTimeTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityDateTimeTest.php deleted file mode 100644 index 18f8fc38..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityDateTimeTest.php +++ /dev/null @@ -1,15 +0,0 @@ -assertEquals('1:' . $dateTime->format('Ymd') . ':' . $dateTime->format('His'), (string) $e); - $this->assertEquals('1:' . $dateTime->format('Ymd') . ':' . $dateTime->format('His'), $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityIdentificationDetailsTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityIdentificationDetailsTest.php deleted file mode 100644 index b9aadcca..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityIdentificationDetailsTest.php +++ /dev/null @@ -1,17 +0,0 @@ -assertEquals('1::0', (string) $e); - $this->assertEquals('1::0', $e->toString()); - - $e = new SecurityIdentificationDetails(SecurityIdentificationDetails::PARTY_MS, 123); - $this->assertEquals('1:1:123', (string) $e); - $this->assertEquals('1:1:123', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityProfileTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityProfileTest.php deleted file mode 100644 index 8d15cf11..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SecurityProfileTest.php +++ /dev/null @@ -1,14 +0,0 @@ -assertEquals('PIN:2', (string) $e); - $this->assertEquals('PIN:2', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SignatureAlgorithmTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SignatureAlgorithmTest.php deleted file mode 100644 index ddd994d9..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataElementGroups/SignatureAlgorithmTest.php +++ /dev/null @@ -1,13 +0,0 @@ -assertEquals('6:10:16', (string) $e); - $this->assertEquals('6:10:16', $e->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/BinTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/BinTest.php deleted file mode 100644 index d3adf8ca..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/BinTest.php +++ /dev/null @@ -1,22 +0,0 @@ -assertEquals('@32@' . $string, (string) $d); - $this->assertEquals('@32@' . $string, $d->toString()); - $this->assertEquals($string, $d->getData()); - - $d->setData($string2); - $this->assertEquals('@32@' . $string2, (string) $d); - $this->assertEquals('@32@' . $string2, $d->toString()); - $this->assertEquals($string2, $d->getData()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/DatTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/DatTest.php deleted file mode 100644 index 7a029117..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/DatTest.php +++ /dev/null @@ -1,23 +0,0 @@ -assertEquals($dateTime->format('Ymd'), (string) $d); - $this->assertEquals($dateTime->format('Ymd'), $d->toString()); - - $dateTime2 = new \DateTime(); - $dateTime2->modify('+1 month'); - - $d->setDate($dateTime2); - $this->assertEquals($dateTime2->format('Ymd'), (string) $d); - $this->assertEquals($dateTime2->format('Ymd'), $d->toString()); - - $this->assertEquals($dateTime2, $d->getDate()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KikTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KikTest.php deleted file mode 100644 index 2e0dca39..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KikTest.php +++ /dev/null @@ -1,13 +0,0 @@ -assertEquals('DE:72191600', (string) $d); - $this->assertEquals('DE:72191600', $d->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtiTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtiTest.php deleted file mode 100644 index 24b91009..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtiTest.php +++ /dev/null @@ -1,14 +0,0 @@ -assertEquals('someiban:somebic:someaccountNumber:sub:DE:72191600', (string) $d); - $this->assertEquals('someiban:somebic:someaccountNumber:sub:DE:72191600', $d->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtvTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtvTest.php deleted file mode 100644 index 39306d23..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DataTypes/KtvTest.php +++ /dev/null @@ -1,14 +0,0 @@ -assertEquals('123123123:sub:DE:72191600', (string) $d); - $this->assertEquals('123123123:sub:DE:72191600', $d->toString()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DegTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DegTest.php deleted file mode 100644 index 5ab97df7..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/DegTest.php +++ /dev/null @@ -1,20 +0,0 @@ -addDataElement('foobar'); - - $this->assertEquals('foobar', $deg->toString()); - - $deg->addDataElement('baz'); - $this->assertEquals('foobar:baz', $deg->toString()); - $this->assertEquals('foobar:baz', (string) $deg); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/FinTsTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/FinTsTest.php deleted file mode 100644 index 61980601..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/FinTsTest.php +++ /dev/null @@ -1,42 +0,0 @@ -getMockBuilder('\Fhp\FinTs') - ->disableOriginalConstructor() - ->getMock(); - - $reflMethod = new \ReflectionMethod('\Fhp\FinTs', 'escapeString'); - $reflMethod->setAccessible(true); - - $this->assertSame($expected, $reflMethod->invoke($fints, $value)); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Message/MessageTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Message/MessageTest.php deleted file mode 100644 index acb3d000..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Message/MessageTest.php +++ /dev/null @@ -1,91 +0,0 @@ -setDialogId(333); - $this->assertEquals(333, $message->getDialogId()); - - $message->setMessageNumber(10); - $this->assertEquals(10, $message->getMessageNumber()); - - $segments = $message->getSegments(); - - $this->assertInternalType('array', $segments); - $this->assertCount(3, $segments); - } - - public function test_basic_message_creation() - { - $message = new Message('12345678', 'username', '1234', '987654'); - $date = new \DateTime(); - $dateString = $date->format('Ymd'); - - $this->assertRegExp( - '/HNHBK:1:3\+000000000296\+300\+0\+0\'HNVSK:998:3\+PIN:1\+998\+1\+1::987654\+1:' . $dateString - . ':(\d+)\+2:2:13:@8@00000000:5:1\+280:12345678:username:V:0:0\+0\'HNVSD:999:1\+@130@HNSHK:2:4\+PIN:1' - . '\+999\+(\d+)\+1\+1\+1::987654\+1\+1:' . $dateString . ':(\d+)\+1:999:1\+6:10:16\+280:12345678:' - . 'username:S:0:0\'HNSHA:3:2\+(\d+)\+\+1234\'\'HNHBS:4:1\+0\'/', - (string) $message - ); - } - - public function test_message_creation_with_options_and_segments() - { - $kik = new Kik('290', '123123'); - $ktv = new Ktv('123123123', 'sub', $kik); - $hksal = new HKSAL(HKSAL::VERSION, 3, $ktv, true); - $options = array( - Message::OPT_PINTAN_MECH => array('998') - ); - - $message = new Message( - '12345678', - 'username', - '1234', - '987654', - 0, - 0, - array($hksal), - $options - ); - - $date = new \DateTime(); - $dateString = $date->format('Ymd'); - - $this->assertRegExp( - '/HNHBK:1:3\+000000000333\+300\+0\+0\'HNVSK:998:3\+PIN:2\+998\+1\+1::987654\+1:' . $dateString - . ':(\d+)\+2:2:13:@8@00000000:5:1\+280:12345678:username:V:0:0\+0\'HNVSD:999:1\+@167@HNSHK:2:4\+PIN:2\+' - . '998\+(\d+)\+1\+1\+1::987654\+1\+1:' . $dateString . ':(\d+)\+1:999:1\+6:10:16\+280:12345678:username:' - . 'S:0:0\'HKSAL:3:7\+123123123:sub:290:123123\+1\'HNSHA:4:2\+(\d+)\+\+1234\'\'HNHBS:5:1\+0\'/', - (string) $message - ); - } - - public function test_get_encrypted_segments() - { - $message = new Message('12345678', 'username', '1234', '987654'); - $segments = $message->getEncryptedSegments(); - - $this->assertInternalType('array', $segments); - - foreach ($segments as $segment) { - $this->assertInstanceOf('\Fhp\Segment\AbstractSegment', $segment); - } - } -} \ No newline at end of file diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/AccountTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/AccountTest.php deleted file mode 100644 index dd48b90b..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/AccountTest.php +++ /dev/null @@ -1,53 +0,0 @@ -assertNull($obj->getId()); - $this->assertNull($obj->getAccountDescription()); - $this->assertNull($obj->getAccountNumber()); - $this->assertNull($obj->getAccountOwnerName()); - $this->assertNull($obj->getBankCode()); - $this->assertNull($obj->getCurrency()); - $this->assertNull($obj->getCustomerId()); - $this->assertNull($obj->getIban()); - - // test id - $obj->setId(10); - $this->assertSame(10, $obj->getId()); - - // test description - $obj->setAccountDescription('Description'); - $this->assertSame('Description', $obj->getAccountDescription()); - - // test account number - $obj->setAccountNumber('123123123'); - $this->assertSame('123123123', $obj->getAccountNumber()); - - // test account owner name - $obj->setAccountOwnerName('The Owner'); - $this->assertSame('The Owner', $obj->getAccountOwnerName()); - - // test bank code - $obj->setBankCode('123123123'); - $this->assertSame('123123123', $obj->getBankCode()); - - // test currency - $obj->setCurrency('EUR'); - $this->assertSame('EUR', $obj->getCurrency()); - - // test customer ID - $obj->setCustomerId('123123123'); - $this->assertSame('123123123', $obj->getCustomerId()); - - // test iban - $obj->setIban('DE123123123123'); - $this->assertSame('DE123123123123', $obj->getIban()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SEPAAccountTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SEPAAccountTest.php deleted file mode 100644 index 35d49900..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SEPAAccountTest.php +++ /dev/null @@ -1,25 +0,0 @@ -assertNull($obj->getAccountNumber()); - $this->assertNull($obj->getBic()); - $this->assertNull($obj->getBlz()); - $this->assertNull($obj->getIban()); - $this->assertNull($obj->getSubAccount()); - - $this->assertSame('123456789', $obj->setAccountNumber('123456789')->getAccountNumber()); - $this->assertSame('123456789', $obj->setBic('123456789')->getBic()); - $this->assertSame('123456789', $obj->setIban('123456789')->getIban()); - $this->assertSame('123456789', $obj->setBlz('123456789')->getBlz()); - $this->assertSame('123456789', $obj->setSubAccount('123456789')->getSubAccount()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SaldoTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SaldoTest.php deleted file mode 100644 index 63074710..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/SaldoTest.php +++ /dev/null @@ -1,28 +0,0 @@ -assertNull($s->getCurrency()); - $this->assertNull($s->getAmount()); - $this->assertNull($s->getValuta()); - - // test currency - $s->setCurrency('EUR'); - $this->assertSame('EUR', $s->getCurrency()); - - // test amount - $s->setAmount(12.00); - $this->assertSame(12.00, $s->getAmount()); - - $d = new \DateTime(); - $s->setValuta($d); - $this->assertEquals($d, $s->getValuta()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementOfAccountTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementOfAccountTest.php deleted file mode 100644 index 5c3d897a..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementOfAccountTest.php +++ /dev/null @@ -1,33 +0,0 @@ -assertInternalType('array', $obj->getStatements()); - - $s1 = new Statement(); - $s2 = new Statement(); - - $obj->addStatement($s1); - $this->assertInternalType('array', $obj->getStatements()); - $this->assertCount(1, $obj->getStatements()); - $result = $obj->getStatements(); - $this->assertSame($s1, $result[0]); - - $obj->setStatements(null); - $this->assertInternalType('array', $obj->getStatements()); - $this->assertEmpty($obj->getStatements()); - - $obj->setStatements(array($s1, $s2)); - $this->assertInternalType('array', $obj->getStatements()); - $this->assertCount(2, $obj->getStatements()); - $this->assertSame(array($s1, $s2), $obj->getStatements()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementTest.php deleted file mode 100644 index aaebd627..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/StatementTest.php +++ /dev/null @@ -1,58 +0,0 @@ -assertInternalType('array', $obj->getTransactions()); - $this->assertEmpty($obj->getTransactions()); - $this->assertSame(0.0, $obj->getStartBalance()); - $this->assertNull($obj->getCreditDebit()); - $this->assertNull($obj->getDate()); - - $trx1 = new Transaction(); - $trx2 = new Transaction(); - - $obj->addTransaction($trx1); - $this->assertCount(1, $obj->getTransactions()); - - $obj->addTransaction($trx2); - $this->assertCount(2, $obj->getTransactions()); - - $obj->setTransactions(null); - $this->assertNull($obj->getTransactions()); - - $obj->setTransactions(array()); - $this->assertInternalType('array', $obj->getTransactions()); - $this->assertCount(0, $obj->getTransactions()); - - $trxArray = array($trx1, $trx2); - $obj->setTransactions($trxArray); - $this->assertInternalType('array', $obj->getTransactions()); - $this->assertCount(2, $obj->getTransactions()); - - $obj->setStartBalance(20.00); - $this->assertInternalType('float', $obj->getStartBalance()); - $this->assertSame(20.00, $obj->getStartBalance()); - - $obj->setStartBalance('string'); - $this->assertSame(0.0, $obj->getStartBalance()); - - $obj->setCreditDebit(Statement::CD_CREDIT); - $this->assertSame(Statement::CD_CREDIT, $obj->getCreditDebit()); - - $obj->setCreditDebit(Statement::CD_DEBIT); - $this->assertSame(Statement::CD_DEBIT, $obj->getCreditDebit()); - - $date = new \DateTime(); - $obj->setDate($date); - $this->assertSame($date, $obj->getDate()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/TransactionTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/TransactionTest.php deleted file mode 100644 index 9a446647..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/Model/StatementOfAccount/TransactionTest.php +++ /dev/null @@ -1,37 +0,0 @@ -assertNull($obj->getAccountNumber()); - $this->assertNull($obj->getAmount()); - $this->assertNull($obj->getBankCode()); - $this->assertNull($obj->getBookingDate()); - $this->assertNull($obj->getBookingText()); - $this->assertNull($obj->getCreditDebit()); - $this->assertNull($obj->getDescription1()); - $this->assertNull($obj->getDescription2()); - $this->assertNull($obj->getName()); - $this->assertNull($obj->getValutaDate()); - - $date = new \DateTime(); - $this->assertSame('123456789', $obj->setAccountNumber('123456789')->getAccountNumber()); - $this->assertSame(20.00, $obj->setAmount(20.00)->getAmount()); - $this->assertSame('123456789', $obj->setBankCode('123456789')->getBankCode()); - $this->assertSame($date, $obj->setBookingDate($date)->getBookingDate()); - $this->assertSame($date, $obj->setValutaDate($date)->getValutaDate()); - $this->assertSame('text', $obj->setBookingText('text')->getBookingText()); - $this->assertSame(Transaction::CD_DEBIT, $obj->setCreditDebit(Transaction::CD_DEBIT)->getCreditDebit()); - $this->assertSame(Transaction::CD_CREDIT, $obj->setCreditDebit(Transaction::CD_CREDIT)->getCreditDebit()); - $this->assertSame('desc1', $obj->setDescription1('desc1')->getDescription1()); - $this->assertSame('desc2', $obj->setDescription2('desc2')->getDescription2()); - $this->assertSame('name', $obj->setName('name')->getName()); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/ResponseTest/ResponseTest.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/ResponseTest/ResponseTest.php deleted file mode 100644 index e8e70cab..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/Fhp/ResponseTest/ResponseTest.php +++ /dev/null @@ -1,51 +0,0 @@ -getMethod($name); - $method->setAccessible(TRUE); - - return $method; - } - - public function test_getter_and_setter() - { - $response = self::getMethod('Fhp\Response\Response', 'splitSegment'); - - $withoutEscape = new Response(''); - $escaped = clone $withoutEscape; - - $segments = $response->invokeArgs($withoutEscape, [ - 'HISAL:5:5:3+111111111::280:111111111+GiroBest+EUR+C:9999,99:EUR:20161018+C:0,:EUR:20161018+0,:EUR+9999,99:EUR', - ]); - - $segmentsEscaped = $response->invokeArgs($escaped, [ - 'HISAL:5:5:3+111111111::280:111111111+GiroBusiness?++EUR+C:9999,99:EUR:20161018+C:0,:EUR:20161018+0,:EUR+9999,99:EUR', - ]); - - $this->assertEquals('HISAL:5:5:3', $segments[0]); - $this->assertEquals('111111111::280:111111111', $segments[1]); - $this->assertEquals('GiroBest', $segments[2]); - $this->assertEquals('EUR', $segments[3]); - $this->assertEquals('C:9999,99:EUR:20161018', $segments[4]); - $this->assertEquals('C:0,:EUR:20161018', $segments[5]); - $this->assertEquals('0,:EUR', $segments[6]); - $this->assertEquals('9999,99:EUR', $segments[7]); - - $this->assertEquals('HISAL:5:5:3', $segmentsEscaped[0]); - $this->assertEquals('111111111::280:111111111', $segmentsEscaped[1]); - $this->assertEquals('GiroBusiness+', $segmentsEscaped[2]); - $this->assertEquals('EUR', $segmentsEscaped[3]); - $this->assertEquals('C:9999,99:EUR:20161018', $segmentsEscaped[4]); - $this->assertEquals('C:0,:EUR:20161018', $segmentsEscaped[5]); - $this->assertEquals('0,:EUR', $segmentsEscaped[6]); - $this->assertEquals('9999,99:EUR', $segmentsEscaped[7]); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/TestInit.php b/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/TestInit.php deleted file mode 100644 index 7f02482b..00000000 --- a/www/plugins/fints-hbci-php/vendor/mschindler83/fints-hbci-php/lib/Tests/TestInit.php +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - ./lib/Tests/Fhp/ - - - - - ./lib/Fhp/ - - - diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/LICENSE b/www/plugins/fints-hbci-php/vendor/psr/log/LICENSE deleted file mode 100644 index 474c952b..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/AbstractLogger.php b/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/AbstractLogger.php deleted file mode 100644 index 90e721af..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/AbstractLogger.php +++ /dev/null @@ -1,128 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } -} diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/InvalidArgumentException.php deleted file mode 100644 index 67f852d1..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/InvalidArgumentException.php +++ /dev/null @@ -1,7 +0,0 @@ -logger = $logger; - } -} diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerInterface.php b/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerInterface.php deleted file mode 100644 index 5ea72438..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/LoggerInterface.php +++ /dev/null @@ -1,123 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - */ - abstract public function log($level, $message, array $context = array()); -} diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/NullLogger.php b/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/NullLogger.php deleted file mode 100644 index d8cd682c..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/NullLogger.php +++ /dev/null @@ -1,28 +0,0 @@ -logger) { }` - * blocks. - */ -class NullLogger extends AbstractLogger -{ - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - */ - public function log($level, $message, array $context = array()) - { - // noop - } -} diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php deleted file mode 100644 index a0391a52..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php +++ /dev/null @@ -1,140 +0,0 @@ - ". - * - * Example ->error('Foo') would yield "error Foo". - * - * @return string[] - */ - abstract public function getLogs(); - - public function testImplements() - { - $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); - } - - /** - * @dataProvider provideLevelsAndMessages - */ - public function testLogsAtAllLevels($level, $message) - { - $logger = $this->getLogger(); - $logger->{$level}($message, array('user' => 'Bob')); - $logger->log($level, $message, array('user' => 'Bob')); - - $expected = array( - $level.' message of level '.$level.' with context: Bob', - $level.' message of level '.$level.' with context: Bob', - ); - $this->assertEquals($expected, $this->getLogs()); - } - - public function provideLevelsAndMessages() - { - return array( - LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), - LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), - LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), - LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), - LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), - LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), - LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), - LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), - ); - } - - /** - * @expectedException \Psr\Log\InvalidArgumentException - */ - public function testThrowsOnInvalidLevel() - { - $logger = $this->getLogger(); - $logger->log('invalid level', 'Foo'); - } - - public function testContextReplacement() - { - $logger = $this->getLogger(); - $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); - - $expected = array('info {Message {nothing} Bob Bar a}'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testObjectCastToString() - { - if (method_exists($this, 'createPartialMock')) { - $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); - } else { - $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); - } - $dummy->expects($this->once()) - ->method('__toString') - ->will($this->returnValue('DUMMY')); - - $this->getLogger()->warning($dummy); - - $expected = array('warning DUMMY'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testContextCanContainAnything() - { - $context = array( - 'bool' => true, - 'null' => null, - 'string' => 'Foo', - 'int' => 0, - 'float' => 0.5, - 'nested' => array('with object' => new DummyTest), - 'object' => new \DateTime, - 'resource' => fopen('php://memory', 'r'), - ); - - $this->getLogger()->warning('Crazy context data', $context); - - $expected = array('warning Crazy context data'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testContextExceptionKeyCanBeExceptionOrOtherValues() - { - $logger = $this->getLogger(); - $logger->warning('Random message', array('exception' => 'oops')); - $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); - - $expected = array( - 'warning Random message', - 'critical Uncaught Exception!' - ); - $this->assertEquals($expected, $this->getLogs()); - } -} - -class DummyTest -{ - public function __toString() - { - } -} diff --git a/www/plugins/fints-hbci-php/vendor/psr/log/README.md b/www/plugins/fints-hbci-php/vendor/psr/log/README.md deleted file mode 100644 index 574bc1cb..00000000 --- a/www/plugins/fints-hbci-php/vendor/psr/log/README.md +++ /dev/null @@ -1,45 +0,0 @@ -PSR Log -======= - -This repository holds all interfaces/classes/traits related to -[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). - -Note that this is not a logger of its own. It is merely an interface that -describes a logger. See the specification for more details. - -Usage ------ - -If you need a logger, you can use the interface like this: - -```php -logger = $logger; - } - - public function doSomething() - { - if ($this->logger) { - $this->logger->info('Doing work'); - } - - // do something useful - } -} -``` - -You can then pick one of the implementations of the interface to get a logger. - -If you want to implement the interface, you can require this package and -implement `Psr\Log\LoggerInterface` in your code. Please read the -[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) -for details. diff --git a/www/themes/new/templates/white-cup-filled-by-coffee.jpg b/www/themes/new/templates/white-cup-filled-by-coffee.jpg deleted file mode 100644 index d95f84893215a32e6e3a0131523220f37494d3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145455 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/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

iKnlS#GD^ zjw6}t66TIJysu5`bS`ZPq)#)Eo#WMEmwP%KS1TfB1B_o%S71r@UqhS51@E)qmE9rF zE3$G(-^S(^B>3;4Ug+@Mk*-7G&E1;1!i@8yFt+JY?G|9KLM@&GZw zJZU*Lg^_`=8t6fAAVO-e0~@lQ5!&N|0Hdpn5)>ez=3}KGzB75Cl$&-bKfPSHvo}occ*g!6ugvP4P=Fx+ zQc$cihw2_lT&;*>(z0?mWMK8%U3c)#}22V0)LILLtGc!%Ot4e|m6^+t8 zT3l`ty6&a+yiI-RB*SrKYmu}~0_#B;Gmu)vR}m0kT?z^~;=Ng$q!?}D_r0fiD8){p zNQ(`fD)Al7=rx?-td#zxGel8pjhb zpd=%1aTv}8lLjXEZXeW+PjbOvRwwbtQ6Wdekk{g{9a&?!WL4^!lvZ>Tg+`}zkdNSN zAJ7>wcuCP%u`{cYL9IvS^R`ac+O(mDG9K3wBul@Er`Ve}24F5z3jq&>zqy76Cw zTjN_1Jy-pv;eT);TZV>zb&@#8#MBETXg!Ll!o-5zLngKp&TE=0bOeP%g5JU|^0ceA z!Y^2{U4TBiI3#-N&53@Ry8-S)#swgJ8zGV|a;TGp9{pS&(s6E)h4FcerSoW-VCpbE zKz2P7Wqz`XYeCsw&a*YRM;cpdjPJ~!i{tKpO_|p|hEr-Qvf3K7b!(%SHc>^PE)rt; zwdA;({@cVI+8~{#0Viqgu=))$a=9Zlui|kKire#}!u|e8PIFL(%=_Y{g&>je> z1TLH=#zAd?YojSCGbMdOZxwX`nC=mJA-QR6tn2saN&+*nN1R2f=%0Y76i|V1Q~@CL z8H=^D=*e5R#l*6y_Nvzl6J9V%)@xj;zz1%Hloft2rfnbetEe2K8>Zm;Op$$5ea`!2V>aqturh@o-Gn>w9~<&h(Yfzb){#kJ-< z1aSh?!vD+77=Z$~-I(!Wj!oGgrG^jxQMCFjjP;HtG&(NJxPkAxfsd@%Go>B#H`K(A zc&)*#-wVz4goAhh-5GRQbY}~TE`igtD!fwpfZlNPxGfMP$1&M-6=4sp)SgPq@R=|0 z&uATnnxzNMBq-~(wG|;a8#?u*)5h42R+CTCeZ&pWFC<1{S;AQu#;hg^%7tF~+yCPh zXu&AU3mWN3fg@cARSQrkH)BMjrsGURII1m{1ZUhrV+CV_^)ZYDbeJiAZl$Cmns-Yg z*^Ct6YC88PkPbXQOB7nBib5&Lju=kJFt;p|<8LU!80HJW$9g}D6&{s7&VI-Of%jFN zkC8;j%>p4K!uNfKDaaLJ2BiFjK&k==7mLmIaYmXck2KUF?S(Ip1_ccb5a6Q8Dunbf z&WO$z87sFIv?_Qen)So6gK~SaFake}Ox-9+lCnmi@b<0nq+h_RfZ@pT5dD;j+xk7g z%9#EfqruRvCd@oRZUaZ*MM|!6Ak5TzJ>k(Z-#-5Q@P)J(cn?j||2~o3g<`06E8i&qEc} zO`l(4#}sQ4zgW-U4|8jD;l{dtt)0Y_YkVP#U_#m6*s^P}DsczWOs(#LTU8F{O(MrS zJ=)eJ*xe*H?n&mqWn}(@Ujq!xur+FZ#-uTDh*_Uw5uBs%*qFqRRLwaVu|$h|;b<$niGvgUTfb1u=IzKedqRe0Y?e9yYcc?gUO z8Lnvu%i<#C@#fK{#ke24dg3*})yTxsJtXusTk&yn3~Y|cUy0{3QS<=(6R{I>&2u|9 z74>V(RS_1xB7NL9aT{D3*TkNJXCac{eZ88Tc&mnf_zG@qDk}AKBax>kee-Gj?RW@nkl$7{W~%yZ*oPt2R*qis>+I+>2U+` zILrh2kD@;f0rEl;|1^I6#0v_O8-J1u7ynIG89BE2jg z)6+doW3Jyh9uae3v60iokv{9d>Ay%z0AsdUzj<|;CT9Ku r)vQ9QsclMI!ZBCH@QuYe8gtW4f43~FcR=W!9;or6Vs{VyzwiD(mofWP