Read and send payment order for FIO bank
PHP Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src Update Fio API to 1.5.1. Oct 3, 2016
tests
.gitattributes New major version start. Apr 7, 2015
.gitignore
.travis.yml
README.md
composer.json

README.md

Fio

Build Status Scrutinizer Code Quality Downloads this Month Latest stable

Support Fio API. Default read via json file.

Require PHP 5.5+. For older PHP 5.3+ let's use stable version 1.2.1.

Nette framework

Follow this extension.

Installation to project

The best way to install h4kuna/fio is using Composer:

$ composer require h4kuna/fio

How to use

Here is example and run via cli. This script require account.ini in same directory, whose looks like.

[my-account]
account = 123456789
token = abcdefghijklmn

[wife-account]
account = 987654321
token = zyxuvtsrfd

FioFactory

This object help you create instances of FioPay and FioRead.

use h4kuna\Fio;
$fioFactory = new Fio\Utils\FioFactory([
    'my-alias' => [
        'account' => '123456789',
        'token' => 'abcdefg'
    ],
    'next-alias' => [
        'account' => '987654321',
        'token' => 'tuvwxyz'
    ]
]);

$fioRead = $fioFactory->createFioRead('my-alias');
$fioPay = $fioFactory->createFioPay('next-alias');

Reading

Read range between date.

use h4kuna\Fio;
/* @var $fioRead Fio\FioRead */
/* @var $list Fio\Response\Read\TransactionList */
$list = $fioRead->movements(/* $from, $to */); // default is last week

foreach ($list as $transaction) {
    /* @var $transaction Fio\Response\Read\Transaction */
    var_dump($transaction->moveId);
    foreach ($transaction as $property => $value) {
        var_dump($property, $value);
    }
}

var_dump($list->getInfo());

You can download transaction by id of year.

use h4kuna\Fio;
/* @var $fioRead Fio\FioRead */
/* @var $list Fio\Response\Read\TransactionList */
$list = $fioRead->movementId(2, 2015); // second transaction of year 2015

Very useful method where download last transactions.

After download it automaticaly set new break point.

use h4kuna\Fio;
/* @var $fioRead Fio\FioRead */
/* @var $list Fio\Response\Read\TransactionList */
$list = $fioRead->lastDownload();
// same use like above
var_dump($list->getInfo()->idLastDownload);

Change your break point.

By date.

$fioRead->setLastDate('1986-12-30');
$list = $fioRead->lastDownload();
var_dump($list->getInfo()->idLastDownload);

By movement ID.

$fioRead->setLastId(123456789);
$list = $fioRead->lastDownload();
var_dump($list->getInfo()->idLastDownload); // 123456789

Custom Transaction class

By default is h4kuna\Fio\Response\Read\Transaction if you want other names for properties. Let's define as second parameter to FioFactory.

Define annotation and you don't forget id in brackets.

<?php

use h4kuna\Fio\Response\Read\TransactionAbstract

/**
 * @property-read float $amount [1]
 * @property-read string $to_account [2]
 * @property-read string $bank_code [3]
 */
class MyTransaction extends TransactionAbstract
{
    /** custom method */
    public function setBank_code($value)
    {
        return str_pad($value, 4, '0', STR_PAD_LEFT);
    }
}

$fioFactory = new Utils\FioFactory([/* ... */], 'MyTransaction');

Payment (writing)

Api has three response languages, default is set cs. For change:

/* @var $fioPay h4kuna\Fio\FioPay */
$fioPay->setLanguage('en');

For send request is method send whose accept, file path to your xml or abo file or instance of class Property.

$myFile = '/path/to/my/xml/or/abo/file'
$fioPay->send($myFile);

Object pay only to czech or slovak:

/* @var $national h4kuna\Fio\Request\Pay\Payment\National */
$national = $fioPay->createNational($amount, $accountTo);
$national->setVariableSymbol($vs);
/* set next payment property $national->set* */
$fioPay->send($national);

Euro zone payment:

/* @var $euro h4kuna\Fio\Request\Pay\Payment\Euro */
$euro = $fioPay->createEuro($amount, $accountTo, $name);
$euro->setVariableSymbol($vs);
/* set next payment property $euro->set* */
$fioPay->send($euro);

International payment:

/* @var $international h4kuna\Fio\Request\Pay\Payment\International */
$international = $fioPay->createInternational($amount, $accountTo, $bic, $name, $street, $city, $country, $info);
$international->setRemittanceInfo2('foo');
/* set next payment property $international->set* */
$fioPay->send($international);

Send more payments in one request:

foreach($pamentsRows as $row) {
    /* @var $national h4kuna\Fio\Request\Pay\Payment\National */
    $national = $fioPay->createNational($row->amount, $row->accountTo);
    $national->setVariableSymbol($row->vs);
    $fioPay->addPayment($national);
}
$fioPay->send();