abiturma/php-fints

用于在PHP中使用家庭银行的适配器

2.0.1 2022-10-25 07:21 UTC

This package is auto-updated.

Last update: 2024-09-08 12:37:15 UTC


README

Latest Stable Version Tests License composer.lock

此包是一个库,用于使用Hbci连接到您的银行以获取银行账户的对账单。

安装

通过composer可用

composer require abiturma/php-fints

使用

初始化

首先,您需要通过提供凭证来创建Fints类的实例

use Abiturma\PhpFints\Fints

...

$fints = Fints::host('https://url-to-your-hbci-endpoint')
    ->bankCode('yourBankCode)
    ->username('yourUsername')
    ->pin('your-secret-pin'); 

连接的端口默认为443,您可以通过在$fints上调用->port('yourPort')来更改它。接口是流式的。特别是调用不同初始化方法的顺序无关紧要。

检索您的(sepa)账户列表

初始化Fints后,您可以通过调用$fints->getAccounts()来获取您的账户列表。此方法返回一个包含您的银行账户的数组,即包含Abiturma\PhpFints\Models\Account实例的数组,它们的行为类似于laravel模型类。特别是您可以通过调用魔法getter来查询账户数据,例如$account->iban$account->bank_code等。或者您可以在账户上调用->toArray(),以获取其属性的关联数组。

检索银行账户的对账单

对于特定账户,您可以通过调用$fints->getStatementOfAccount($account)来获取所有交易列表。您可以可选地传递两个DateTime对象来限制交易到特定日期范围:$fints->getStatementOfAccount($account, $from, $to)。结果是类型为Abiturma\PhpFints\Models\Transaction的对象数组,其行为类似于账户模型。特别是您可以通过调用->toArray()来检索所有属性。

事务模型中存储的以下属性中的一些

  • base_amount 交易以分表示的带符号整数值(例如,-120表示-1.20€)
  • amount 交易的带符号浮点值(例如,-1.20)
  • remote_bank_code 远程账户的BIC
  • remote_name 债权人/债务人的名称
  • remote_account_number 远程账户的IBAN
  • date 交易的预订日期
  • value_date 交易的值(或货币)日期
  • 描述
  • 端到端参考
  • prima_nota

SWIFT与Camt

默认情况下,如果可能,Fints会尝试以Camt格式获取对账单。有时在解析响应时可能会抛出异常。在这种情况下,明确指定响应格式可能很有用。因此,Fints公开了与getStatementOfAccount相同的签名的方法getSwiftStatementOfAccountgetCamtStatementOfAccount

自定义和集成

凭证

每次使用Fints时都提供所有凭证可能相当繁琐。为此,您可以为凭证存储库创建自己的实现,例如可以使用配置存储。在这种情况下,构建您的实现$credentials,该实现符合Abiturma\PhpFints\Credentials\HoldsCredentials接口,并注册它

use Abiturma\PhpFints\Credentials\HoldsCredentials
use Abiturma\PhpFints\Fints

class MyCredentials implements HoldsCredentials {

    public function host() {
        ...
    }
    
    public function setHost($host) {
        ...
    }
    
    ...

}

$credentials = new MyCredentials()

$fints = Fints::useCredentials($credentials)->...

日志记录

默认情况下,不记录出站和入站消息。您可以通过注册一个符合Psr\LoggerInterface的实现来启用日志记录

use Psr\LoggerInterface
use Abiturma\PhpFints\Fints

class MyLogger implements LoggerInterface {

    public function debug() {
       ...
    }
    
    ...

}

$logger = new MyLogger(); 

$fints = Fints::withLogger($logger)->host(...)->...

账户

如果您有您的账户数据(即iban、bic、账户号码、银行代码),则不需要首先调用->getAccounts()来获取对账单。相反,您只需在需要时创建一个账户实例即可

use Abiturma\PhpFints\Fints
use Abiturma\PhpFints\Models\Account

$account = new Account([
    'iban' => 'yourIban',
    'bic' => 'yourBic',
    'account_number' => 'yourAccountNumber',
    'bank_code' => 'yourBankCode'
])

$transactions = Fints::host(...)
    ->...
    ->getStatementOfAccount($account)

如果您有自己的账户模型,它可以作为 ->getStatementOfAccount 方法的有效第一个参数,只要它实现了接口 Abiturma\PhpFints\Models\IdentifiesBankAccount,该接口要求一个方法 ->getAccountAttributes(),该方法应返回一个具有以下键的关联数组:iban, bic, account_number, bank_code

兼容性

这个库仍在开发中,到目前为止只与两家银行进行了测试。您可以在 COMPATIBILITY.md 中找到兼容银行列表。我期待您的贡献,使这个列表更长。

致谢

本项目深受 fints-hbci-php 项目启发,由 Markus Schindler 提供。