andrew-svirin/ebics-client-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

andrew-svirin/ebics-client-php

Composer 安装命令:

composer require andrew-svirin/ebics-client-php

包简介

PHP library to communicate with bank through EBICS protocol.

README 文档

README

CI Latest Stable Version Total Downloads License

PHP library to communicate with a bank through EBICS protocol.
PHP EBICS Client - https://ebics-api.github.io/ebics-client-php/
Supported EBICS versions: 2.4, 2.5, 3.0; Encryption versions: E002, X002, A005, A006; Switching EBICS T/TS

💥 (Premium) EBICS API Client

EBICS API Client is a standalone microservice that wraps this library into a ready-to-deploy banking integration solution. Ideal for fintechs, ERPs, payment processors, and enterprises needing a robust EBICS integration without building and maintaining the client layer yourself.

Premium Features

  • 🚀 Instant deployment — Docker-based microservice, deploy in minutes.

  • 🔌 REST API — Complete EBICS operations via simple HTTP calls. No PHP expertise needed.

  • 🧪 Dummy EBICS Server — Develop and test your integration locally without a real bank.

    Key Value
    URL https://localhost/ebics-server-stub
    Host ID EBICSSTUB
    Partner ID P07
    User ID U07
  • 🤖 MCP Server for AI Agents — Connect AI coding assistants directly to your EBICS server.

    {
      "mcpServers": {
        "ebics-server": {
          "type": "remote",
          "url": "http://localhost/mcp",
          "headers": {
            "Authorization": "Key YOUR_API_KEY_HERE"
          }
        }
      }
    }
  • 📊 Admin dashboard — Monitor transactions, manage keys, view logs.

  • 🛡️ Priority support — Direct access to the development team.

👉 Try the DEMO · Learn more · Watch the video

Already using the open-source library and need more? The Premium microservice is the natural next step — no rewrite, same protocol support, zero configuration debt.

License

ebics-api/ebics-client-php is licensed under the MIT License, see the LICENSE file for details

Installation

$ composer require ebics-api/ebics-client-php

Initialize client

You will need to have this information from your Bank: HostID, HostURL, PartnerID, UserID

<?php
use EbicsApi\Ebics\Factories\KeyringFactory;
use EbicsApi\Ebics\Services\FileKeyringManager;
use EbicsApi\Ebics\Models\Bank;
use EbicsApi\Ebics\Models\User;
use EbicsApi\Ebics\EbicsClient;
use EbicsApi\Ebics\Models\X509\BankX509Generator;

// Prepare `workspace` dir in the __PATH_TO_WORKSPACES_DIR__ manually.
// "__EBICS_VERSION__" should have value "VERSION_30" for EBICS 3.0
$keyringPath = __PATH_TO_WORKSPACES_DIR__ . '/workspace/keyring.json';
$keyringManager = new FileKeyringManager();
if (is_file($keyringPath)) {
    $keyring = $keyringManager->loadKeyring($keyringPath, __PASSWORD__, __EBICS_VERSION__);
} else {
    $keyring = $keyringManager->createKeyring(__EBICS_VERSION__);
    $keyring->setPassword(__PASSWORD__);
}
$bank = new Bank(__HOST_ID__, __HOST_URL__);
// Use __IS_CERTIFIED__ true for EBICS 3.0 and/or French banks, otherwise use false.
if(__IS_CERTIFIED__) {
    $certificateGenerator = (new BankX509Generator());
    $certificateGenerator->setCertificateOptionsByBank($bank);
    $keyring->setCertificateGenerator($certificateGenerator);
}
$user = new User(__PARTNER_ID__, __USER_ID__);
$client = new EbicsClient($bank, $user, $keyring);
if (!is_file($keyringPath)) {
    $client->createUserSignatures();
    $keyringManager->saveKeyring($client->getKeyring(), $keyringPath);
}

Global process and interaction with Bank Department

1. Create and store your 3 keys and send initialization request.

<?php

use EbicsApi\Ebics\Contracts\EbicsResponseExceptionInterface;

/* @var \EbicsApi\Ebics\EbicsClient $client */

try {
    $client->executeStandardOrder(new \EbicsApi\Ebics\Orders\INI());
    /* @var \EbicsApi\Ebics\Services\FileKeyringManager $keyringManager */
    /* @var \EbicsApi\Ebics\Models\Keyring $keyring */
    $keyringManager->saveKeyring($keyring, $keyringPath);
} catch (EbicsResponseExceptionInterface $exception) {
    echo sprintf(
        "INI request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s",
        $exception->getResponseCode(),
        $exception->getMessage(),
        $exception->getMeaning()
    );
}

try {
    $client->executeStandardOrder(new \EbicsApi\Ebics\Orders\HIA());
    $keyringManager->saveKeyring($keyring, $keyringPath);
} catch (EbicsResponseExceptionInterface $exception) {
    echo sprintf(
        "HIA request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s",
        $exception->getResponseCode(),
        $exception->getMessage(),
        $exception->getMeaning()
    );
}

2. Generate a EBICS letter

/* @var \EbicsApi\Ebics\EbicsClient $client */
$ebicsBankLetter = new \EbicsApi\Ebics\EbicsBankLetter();

$bankLetter = $ebicsBankLetter->prepareBankLetter(
    $client->getBank(),
    $client->getUser(),
    $client->getKeyring()
);

$pdf = $ebicsBankLetter->formatBankLetter($bankLetter, $ebicsBankLetter->createPdfBankLetterFormatter());

3. Wait for the bank validation and access activation.

4. Fetch the bank keys.

try {
    /* @var \EbicsApi\Ebics\EbicsClient $client */
    $client->executeInitializationOrder(new \EbicsApi\Ebics\Orders\HPB());
    /* @var \EbicsApi\Ebics\Services\FileKeyringManager $keyringManager */
    /* @var \EbicsApi\Ebics\Models\Keyring $keyring */
    $keyringManager->saveKeyring($keyring, $keyringPath);
} catch (EbicsResponseExceptionInterface $exception) {
    echo sprintf(
        "HPB request failed. EBICS Error code : %s\nMessage : %s\nMeaning : %s",
        $exception->getResponseCode(),
        $exception->getMessage(),
        $exception->getMeaning()
    );
}

5. Play with other transactions!

Transaction Description
HEV Download supported protocol versions for the Bank.
INI Send to the bank public signature of signature A005.
HIA Send to the bank public signatures of authentication (X002) and encryption (E002).
H3K Send to the bank public signatures of signature (A005), authentication (X002) and encryption (E002).
HCS Upload for renewing user certificates.
HPB Download the Bank public signatures authentication (X002) and encryption (E002).
SPR Suspend activated keyring.
HPD Download the bank server parameters.
HKD Download customer's customer and subscriber information.
HTD Download subscriber's customer and subscriber information.
HAA Download Bank available order types.
PTK Download transaction status (Plain text).
HAC Download transaction status (XML).
FDL Download the files from the bank.
FUL Upload the files to the bank.
BTD Download request files of any BTF structure.
BTU Upload the files to the bank.

If you need to parse Cfonb 120, 240, 360 use ebics-api/cfonb-php
If you need to parse MT942 use ebics-api/mt942-php

统计信息

  • 总下载量: 142.66k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 66
  • 点击次数: 19
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 66
  • Watchers: 10
  • Forks: 38
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-08-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固