andrew-svirin / ebics-client-php
PHP库,用于通过EBICS协议与银行通信。
v2.1.2
2023-08-16 18:19 UTC
Requires
- php: ^7.4 || ^8
- ext-bcmath: *
- ext-curl: *
- ext-dom: *
- ext-json: *
- ext-openssl: *
- ext-zip: *
- ext-zlib: *
Requires (Dev)
- andrew-svirin/cfonb-php: dev-master
- andrew-svirin/mt942-php: dev-master
- mpdf/mpdf: ~8.0.17
- phpseclib/phpseclib: ~2.0.35
- phpstan/phpstan: ~1.9.17
- phpunit/phpunit: ~9.6.3
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- squizlabs/php_codesniffer: ~3.7.1
Suggests
- andrew-svirin/cfonb-php: If you need to parse format CFONB from FDL requests.
- andrew-svirin/mt942-php: If you need to parse format MT942 from VMK, STA requests.
- mpdf/mpdf: If you need to generate PDF file letter for Bank.
- psr/http-client: If you want use the PsrHttpClient
- psr/http-factory: If you want use the PsrHttpClient
This package is auto-updated.
Last update: 2024-09-26 10:58:42 UTC
README
PHP库,用于通过EBICS协议与银行通信。
支持的PHP版本 - PHP 7.2 - PHP 8.3
支持Ebics服务器版本:2.4(部分)、2.5(默认)、3.0
💥应用程序可以作为Docker容器中的独立服务使用,并通过REST API交互 - https://www.youtube.com/watch?v=756lkDwKtO4
许可协议
andrew-svirin/ebics-client-php遵循MIT许可协议,有关详细信息请参阅LICENSE文件
为您的项目开发和集成Ebics
👉👍联系Andrew Svirin https://www.linkedin.com/in/andriy-svirin-0138a177/
安装
$ composer require andrew-svirin/ebics-client-php
初始化客户端
您需要从银行获取以下信息:HostID
、HostURL
、PartnerID
、UserID
<?php use AndrewSvirin\Ebics\Services\FileKeyringManager; use AndrewSvirin\Ebics\Models\Bank; use AndrewSvirin\Ebics\Models\User; use AndrewSvirin\Ebics\EbicsClient; // Prepare `workspace` dir in the __PATH_TO_WORKSPACES_DIR__ manually. $keyringRealPath = __PATH_TO_WORKSPACES_DIR__ . '/workspace/keyring.json'; // Use __IS_CERTIFIED__ true for EBICS 3.0 and/or French banks, otherwise use false. $keyringManager = new FileKeyringManager(); $keyring = $keyringManager->loadKeyring($keyringRealPath, __PASSWORD__, __EBICS_VERSION__); $bank = new Bank(__HOST_ID__, __HOST_URL__); $bank->setIsCertified(__IS_CERTIFIED__); $user = new User(__PARTNER_ID__, __USER_ID__); $client = new EbicsClient($bank, $user, $keyring);
关于法国银行和Ebics 3.0的说明
如果您正在与法国银行或Ebics 3.0打交道,您需要创建一个X509自签名证书。您可以通过创建一个继承自AbstractX509Generator
的类并使用__IS_CERTIFIED__ = true
来实现这一点
<?php namespace App\Factories\X509; use AndrewSvirin\Ebics\Models\X509\AbstractX509Generator; class MyCompanyX509Generator extends AbstractX509Generator { protected function getCertificateOptions() : array { return [ 'subject' => [ 'DN' => [ 'id-at-countryName' => 'FR', 'id-at-stateOrProvinceName' => 'State', 'id-at-localityName' => 'City', 'id-at-organizationName' => 'Your company', 'id-at-commonName' => 'yourwebsite.tld', ] ], 'extensions' => [ 'id-ce-subjectAltName' => [ 'value' => [ 'dNSName' => '*.yourwebsite.tld', ] ], ], ]; } } $client->setX509Generator(new MyCompanyX509Generator);
全局流程和与银行部门的互动
1. 创建并存储您的3个密钥
<?php use AndrewSvirin\Ebics\Contracts\EbicsResponseExceptionInterface; /* @var \AndrewSvirin\Ebics\EbicsClient $client */ try { $client->INI(); /* @var \AndrewSvirin\Ebics\Services\FileKeyringManager $keyringManager */ /* @var \AndrewSvirin\Ebics\Models\Keyring $keyring */ $keyringManager->saveKeyring($keyring, $keyringRealPath); } catch (EbicsResponseExceptionInterface $exception) { echo sprintf( "INI request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s", $exception->getResponseCode(), $exception->getMessage(), $exception->getMeaning() ); } try { $client->HIA(); $keyringManager->saveKeyring($keyring, $keyringRealPath); } catch (EbicsResponseExceptionInterface $exception) { echo sprintf( "HIA request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s", $exception->getResponseCode(), $exception->getMessage(), $exception->getMeaning() ); }
2. 生成一个EBICS信件
/* @var \AndrewSvirin\Ebics\EbicsClient $client */ $ebicsBankLetter = new \AndrewSvirin\Ebics\EbicsBankLetter(); $bankLetter = $ebicsBankLetter->prepareBankLetter( $client->getBank(), $client->getUser(), $client->getKeyring() ); $pdf = $ebicsBankLetter->formatBankLetter($bankLetter, $ebicsBankLetter->createPdfBankLetterFormatter());
3. 等待银行的验证和访问激活。
4. 获取银行的密钥。
try { /* @var \AndrewSvirin\Ebics\EbicsClient $client */ $client->HPB(); /* @var \AndrewSvirin\Ebics\Services\FileKeyringManager $keyringManager */ /* @var \AndrewSvirin\Ebics\Models\Keyring $keyring */ $keyringManager->saveKeyring($keyring, $keyringRealPath); } catch (EbicsResponseExceptionInterface $exception) { echo sprintf( "HPB request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s", $exception->getResponseCode(), $exception->getMessage(), $exception->getMeaning() ); }
5. 进行其他交易!
如果您需要解析CFonb 120、240、360,请使用andrew-svirin/cfonb-php
如果您需要解析MT942,请使用andrew-svirin/mt942-php
##待办事项
- 为所有可用的ISO 20022格式提供格式验证器
- 上传:PAIN.001、PAIN.008、MT101、TA875、CFONB320、CFONB160的不同版本。
- 下载:PAIN.002、CAMT.052、CAMT.053、CAMT.054、MT199、MT900、MT910、MT940、MT942、CFONB240、CFONB245、CFONB120
- 改进FakerHttpClient
- 支持导入3SKey证书
- 支持更改Keyring的密码