PHP library to handle (BMF)FinanzOnline webservices.
Supported webservices:
- Session
- VatID check
- Databox download
- File upload
- Bank data transmission
- Query data transmission
To be done:
- Record keeping
- Cash register
Install this package as a dependency using Composer.
composer require csoellinger/php-fon-webservicesThis webservice is needed for all other webservices but can also be used standalone (e.g. for using it with a service which is not supported by this library at the moment). Before you can use it you need to set up a credential class with all necessary informations.
<?php
$tId = 'abcd45678'; // FinanzOnline Teilnehmer-ID
$tUid = 'abcd45678'; // FinanzOnline Teilnehmer-UID (if available, otherwise leave blank)
$benId = 'abcd45678'; // FinanzOnline Benutzer-ID
$benPin = 'abcd45678'; // FinanzOnline Benutzer-PIN
$credential = new FonCredential($tId, $tUid, $benId, $benPin);
// Initialize
$sessionWs = new SessionWs($credential);
// Login
$sessionWs->login();
// Get session id
$sessionId = $sessionWs->getID();
// optional: logout. Not really needed cause you will be logged off at class destruct.
$sessionWs->logout();Check a vat id (value added tax identification) for validity at two levels. First only return valid or not valid, second also return the company name and address if available.
// Initialize with previous created session webservice
/** @var SessionWs $sessionWs */
$checkVatIdWs = new VatIdCheckWs($sessionWs);
// Check at level one only returns valid
var_dump($checkVatIdWs->check('ATU36975500'));
/**
* CSoellinger\FonWebservices\Result\VatIdCheck\ValidLevelOne
* valid => (bool) true
*/
// At level two you also get name and address of the organisation if available
var_dump($checkVatIdWs->check('ATU36975500', 2));
/**
* CSoellinger\FonWebservices\Result\VatIdCheck\ValidLevelTwo
* name => (string) 'McDonald's Franchise GmbH'
* address => (string) 'Campus 21,Liebermannst A01601 AT-2345 Brunn am Gebirge'
* valid => (bool) true
*/// Initialize with previous created session webservice
/** @var SessionWs $sessionWs */
$databoxDownloadWs = new DataboxDownloadWs($sessionWs);
// Get a list of your databox
$databoxList = $databoxDownloadWs->get();
var_dump($databoxList);
/**
* array
* 0 =>
* CSoellinger\FonWebservices\Result\DataboxDownload\ListItem
* stnr => (string) '99 999/9999'
* name => (string) 'Mustermann Max'
* anbringen => (string) 'STB-ZUSI'
* zrvon => (string) ''
* zrbis => (string) ''
* datbesch => (string) '2019-07-15+02:00'
* erltyp => (string) 'B'
* fileart => (string) 'PDF'
* ts_zust => (string) '2020-11-02T07:04:10.044+01:00'
* applkey => (string) '2019-07-15-11.45.07.000000'
* filebez => (string) '99_9999999_B_2008-11-20_2008-11-20-100948804630.PDF'
* status => (string) ''
*/
// Get one entry by the applkey
$entry = $databoxDownloadWs->getEntry($databoxList[0]->applkey);
var_dump($entry);
/**
* (string) 'JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgNTk1Ny9PIDgvRSAxNzAzL'...
*/The easiest way to start the examples is to start a PHP server:
php -S localhost:8005 --docroot ./examplesNow open your browser and go to http://localhost:8005
composer installThis project uses modern PHP tooling for code quality:
- Pest - Modern testing framework with expressive syntax
composer test # Run Pest tests composer test:coverage # Run tests with coverage report
- PHP-CS-Fixer - Automatic code style fixer (PSR-12)
composer format # Auto-fix code style composer format:check # Check code style (for CI)
- PHPStan - Static analysis tool (max level)
- Psalm - Static analysis and type checker (level 1)
composer analyse # Run PHPStan + Psalm composer analyse:phpstan # Run PHPStan only composer analyse:psalm # Run Psalm only
- Rector - Automated code refactoring and upgrades
composer rector # Check for refactoring opportunities composer rector:fix # Apply automated refactorings
composer lint # Check PHP syntax (parallel-lint)
composer check # Run all quality checks (lint + format + analyse)Test across all supported PHP versions using Podman Compose:
# Build all containers
podman-compose build
# Install/update dependencies (run after composer.json changes)
podman-compose run --rm php82 composer update
# Run tests on a specific PHP version
podman-compose run --rm php81 composer test
podman-compose run --rm php82 composer test
podman-compose run --rm php83 composer test
podman-compose run --rm php84 composer test
# Test all versions at once
bash bin/test-all-versions.shSupported PHP versions: 8.1, 8.2, 8.3, 8.4
Note: After modifying composer.json, you need to run composer update inside a container to update dependencies before running tests.
API documentation is available in docs/api/
Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.
If you found a bug or have an idea feel free to post it here on github.
The csoellinger/php-fon-webservices library is free and unencumbered software released into the public domain. Please see UNLICENSE for more information.