ennemedia / php-fints
PHP 实现FinTS和HBCI协议的库
Requires
- php: >=8.0
- ext-curl: *
- ext-mbstring: *
- psr/log: ^1|^2|^3
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.*
- php-mock/php-mock-phpunit: 2.6.*
- phpunit/phpunit: 9.5.*
Suggests
- abcaeffchen/sephpa: 1.*
- monolog/monolog: Allow sending log messages to a variety of different handlers
- nemiah/php-sepa-xml: dev-master
README
PHP 库,实现了以下 FinTS/HBCI 协议功能:
- 获取账户
- 获取余额
- 获取交易
- 执行直接借记
- 执行转账
- 注意,规范中第 C 节提到的其他任何功能应该相对容易实现。
从 mschindler83/fints-hbci-php 分支而来,但后来大部分重写。
入门指南
在使用此库(或任何其他 FinTS 库)之前,您必须将应用程序注册到 Die Deutsche Kreditwirtschaft 以获取您的注册号。请注意,此过程可能需要几周时间。首先,您将在几天后收到您的注册号,但之后您必须等待 0 到 8+ 周才能将注册号发送到您的银行服务器。如果您有多个银行,它们可能在不同时间到达。
然后通过 composer 安装库
composer require nemiah/php-fints
查看 "Samples" 文件夹中的示例,以开始您的代码。在 init.php 中填写所需的配置(注册后可在 www.hbci-zka.de 获取服务器详情)。然后执行 tanModesAndMedia.php 和 login.php。一旦您能够无问题登录,您就可以继续其他示例。
有特殊需求的银行
如果您使用此库开发在线银行应用程序,请注意以下异常:
兴业银行
当与 URL https://hbci-01.hypovereinsbank.de/bank/hbci 一起使用时,BLZ 71120078 将抛出“未知的信贷机构”异常。您必须使用 BLZ 70020270。
if (trim($url) == 'https://hbci-01.hypovereinsbank.de/bank/hbci')
$blz = '70020270';
ING Diba
此银行不支持 PSD2
if(trim($blz) == "50010517")
$fints->selectTanMode(new Fhp\Model\NoPsd2TanMode());
贡献
欢迎贡献!有关背景信息,请参阅 开发者指南。
我们使用的是对 Symfony Coding-Style 的轻微修改版本。请在发送 PR 之前运行
composer update
和
composer cs-fix
。
银行兼容性
不同的银行实现了不同的 HBCI 和 FinTS 规范版本,有时它们还对规范有不同的解释。此外,银行在验证(一些可能容忍略微错误的需求)、TAN(一些比其他要求更频繁)和允许的参数(并非所有银行都支持所有参数组合)方面的行为也各不相同。
这个库旨在与所有支持根据PSD2法规实施FinTS V3.0和基于PIN/TAN认证的银行兼容,包括大多数相关的德国银行。目前,它至少与最受欢迎的银行兼容,也可能与大多数其他银行兼容。一些边缘情况(例如,多TAN或mTAN费用使用的SMS自动扣账账户)可能不会也不会被支持。那些有专门集成测试的银行已经进行了最全面的测试。
如果您在使用特定银行时遇到任何问题,请检查GitHub上的开放问题或创建一个新的问题。