Autor Zpráva
jtfcobra
Profil
Ahoj potreboval bych poradit zkousim udelat vypis s XML a pise to chybu:

Kod:
<?php
$xml=simplexml_load_file($root."https://www.fio.cz/ib_api/rest/by-id/E5nOcS/2016/1/transactions.xml");

foreach ($xml->Transaction as $item){
if ($item['column_22'] == "ID pohybu") echo $item['name'];
}

?>



Chyba:
Warning: simplexml_load_file(https://www.fio.cz/ib_api/rest/by-id/E5nOcS/2016/1/transactions.xml): failed to open stream: HTTP request failed! HTTP/1.1 409 Conflict in /data/web/virtuals/56850/virtual/www/ucto/banka.php on line 127

Warning: simplexml_load_file(): I/O warning : failed to load external entity "https://www.fio.cz/ib_api/rest/by-id/E5nOcS/2016/1/transactions.xml" in /data/web/virtuals/56850/virtual/www/ucto/banka.php on line 127

Warning: Invalid argument supplied for foreach() in /data/web/virtuals/56850/virtual/www/ucto/banka.php on line 129


XML stažené
<AccountStatement>
<Info>
<accountId>1111111111</accountId>
<bankId>2010</bankId>
<currency>CZK</currency>
<iban>CZ0820100001111</iban>
<bic>FIOBCZPPXXX</bic>
<openingBalance>112.13</openingBalance>
<closingBalance>129.78</closingBalance>
<dateStart>2016-02-01+01:00</dateStart>
<dateEnd>2016-02-29+01:00</dateEnd>
<yearList>2016</yearList>
<idList>2</idList>
<idFrom>11111</idFrom>
<idTo>11111111</idTo>
</Info>
<TransactionList>
<Transaction>
<column_22 name="ID pohybu" id="22">45443233</column_22>
<column_0 name="Datum" id="0">2016-02-15+01:00</column_0>
<column_1 name="Objem" id="1">6500.00</column_1>
<column_14 name="Měna" id="14">CZK</column_14>
<column_2 name="Protiúčet" id="2">111111111</column_2>
<column_10 name="Název protiúčtu" id="10">AAAA</column_10>
<column_3 name="Kód banky" id="3">2700</column_3>
<column_12 name="Název banky" id="12">UniCredit Bank Czech Republic and Slovakia, a.s.</column_12>
<column_5 name="VS" id="5">20160003</column_5>
<column_7 name="Uživatelská identifikace" id="7">AAA</column_7>
<column_16 name="Zpráva pro příjemce" id="16">02016</column_16>
<column_8 name="Typ" id="8">Bezhotovostní příjem</column_8>
<column_25 name="Komentář" id="25">AAAA</column_25>
<column_17 name="ID pokynu" id="17">45460230</column_17>
</Transaction>

<Transaction>
<column_22 name="ID pohybu" id="22">45443233</column_22>
<column_0 name="Datum" id="0">2016-02-15+01:00</column_0>
<column_1 name="Objem" id="1">6500.00</column_1>
<column_14 name="Měna" id="14">CZK</column_14>
<column_2 name="Protiúčet" id="2">111111111</column_2>
<column_10 name="Název protiúčtu" id="10">AAAA</column_10>
<column_3 name="Kód banky" id="3">2700</column_3>
<column_12 name="Název banky" id="12">UniCredit Bank Czech Republic and Slovakia, a.s.</column_12>
<column_5 name="VS" id="5">20160003</column_5>
<column_7 name="Uživatelská identifikace" id="7">AAA</column_7>
<column_16 name="Zpráva pro příjemce" id="16">02016</column_16>
<column_8 name="Typ" id="8">Bezhotovostní příjem</column_8>
<column_25 name="Komentář" id="25">AAAA</column_25>
<column_17 name="ID pokynu" id="17">45460230</column_17>
</Transaction>

</TransactionList>
</AccountStatement>
Keeehi
Profil
No, tak z chyby je snad evidentní, že se to nepovedlo stáhnout. Do dokumentace API FIO banky jsi se díval? Já bych řekl že ne, protože tam je vysvětleno, co chybový kód 409 znamená.

8. 3. Status Code:409 Conflict
Není dodržen minimální interval 30 sekund mezi stažením dat z banky / uploadem dat do banky u
konkrétního tokenu (bez ohledu na typ formátu). Konkrétní token lze použít pouze 1x pro čtení nebo zápis
během 30 sekund
jtfcobra
Profil
Udelal jsem tohle ale stejnak se to XML nenacte soubor se v poradku stahne ale nenacte

$source_url='https://www.fio.cz/ib_api/rest/by-id/E2kjwJDN2Ukewzf5nOcS/2016/1/transactions.xml';
$local_path_with_file_name='/data/web/virtuals/56850/virtual/www/ucto/banka/transactions.xml';
$stazeni = copy($source_url, $local_path_with_file_name);
$xml=simplexml_load_file($root."http://www.xxx.cz/ucto/banka/transactions.xml");

foreach ($xml->Transaction as $item){
if ($item['column_22'] == "ID pohybu") echo $item['name'];
}
Alphard
Profil
jtfcobra:
$xml=simplexml_load_file($root."http://www.xxx.cz/ucto/banka/transactions.xml");
Jestli už je stažený, tak k čemu je tato nesmyslná adresa? Lokální cesta je v $local_path_with_file_name.
jtfcobra
Profil
To je je místo kam se to ulozilo

Našel jsem fio api ale vyjede pole ale nevím jak použít do MySQL

github.com/tutchek/fio-api?files=1

<?php
/**
 * Copyright (c) 2013, Michal Tuláček
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of Michal Tuláček nor the
 * names of its contributors may be used to endorse or promote products
 * derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MICHAL TULÁČEK BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * FIO Api popsane v dokumentu http://www.fio.cz/docs/cz/API_Bankovnictvi.pdf
 * 
 * Umi pouze cist, neumi zapis
 */
class FioApi {
    const URL_RESET = 'https://www.fio.cz/ib_api/rest/set-last-date/%s/%s/';
    const URL_DATA = 'https://www.fio.cz/ib_api/rest/last/%s/transactions.json';
    /**
     *
     * Token pro prislusny ucet
     * @var string
     */
    protected $_token;
    /**
     * Konstruktor pro FIO API objekt
     * 
     * FIO Api pouziva pro pristup k uctu token, ktery se da vygenerovat 
     * v internetovem bankovnictvi.
     * 
     * 
     * @param string $token API fio token
     */
    public function __construct($token) {
        $this->_token = $token;
    }
    /**
     * Vynuluje casovou znacku, od ktere se stahuji data
     * 
     * 
     * @param string $resetDate Datum ke kteremu se ma vynulovat citac
     */
    public function reset($resetDate = '2000-01-01 00:00:00') {
        $date = date_create($resetDate)->format('Y-m-d');
        $url = sprintf(self::URL_RESET, $this->_token, $date);
        file_get_contents($url);
    }
    /**
     * Stahne data z banky
     * 
     * Stahne data od posledni casove znacky (da se vynulovat prikazem reset).
     * Data na vystupu jsou v nasledujicim formatu:
     * 
     * array(
     *   'iban' => iban uctu
     *   'cislo' => cislo uctu (udaj pred lomitkem)
     *   'kod_banky' => vzdy 2010
     *   'mena' => mena dle ISO 4217, tedy CZK, USD, EUR apod
     *   'transakce' => pole transakci ve formatu popsanem nize
     * )
     * 
     * Kazda transakce ma nasledujici format:
     * 
     * array(
     *   'protiucet' => cislo protiuctu (udaj pred lomitkem)
     *   'banka' => kod banky protiuctu
     *   'castka' => castka transakce, kladna = kredit, zaporna = debit
     *   'mena' => mena dle ISO 4217, tedy CZK, USD, EUR apod
     *   'ks' => konstantni symbol
     *   'vs' => variabilni symbol
     *   'ss' => specificky symbol
     *   'datum' => datum zauctovani ve formaty Y-m-d H:i:s, tedy napr. 2013/04/03 18:30:12
     *   'popis' => zprava pro prijemce
     *   'popis_interni' => uzivatelska identifikace
     *   'ident' => id transakce, unikatni v ramci uctu, pri prevodu mezi 
     *              vlastnimi ucty se muze opakovat, tedy neni samo o sobe vhodne 
     *              jako primarni klic
      'typ' => slovni vyjadreni transakce
     * )
     * 
     * @return array
     */
    public function getData() {
        $url = sprintf(self::URL_DATA, $this->_token);
        $data = file_get_contents($url);
        $cleanData = json_decode($data);
        return $this->_processData($cleanData);
    }
    protected function _processData($jsonData) {
        $accountInfo = $jsonData->accountStatement->info;
        $account = array(
            'iban' => $accountInfo->iban,
            'cislo' => $accountInfo->accountId,
            'kod_banky' => $accountInfo->bankId,
            'mena' => $accountInfo->currency,
            'transakce' => array()
        );
        $transactions = array();
        $cols = array(
            1 => 'castka',
            2 => 'protiucet',
            3 => 'kod_banky',
            4 => 'ks',
            5 => 'vs',
            6 => 'ss',
            7 => 'popis',
            8 => 'typ',
            9 => 'provedl',
            14 => 'mena',
            16 => 'zprava',
            17 => 'id_pokyn',
        );
        if (!is_array($jsonData->accountStatement->transactionList->transaction)) {
            $jsonData->accountStatement->transactionList->transaction = array();
        }
        foreach ($jsonData->accountStatement->transactionList->transaction as $t) {
            $tr = array(
                'id' => $t->column22->value,
                'datum' => date_create($t->column0->value),
            );
            foreach ($cols as $k => $v) {
                $c = $t->{'column' . $k};
                $tr[$v] = !is_null($c) ? $c->value : null;
            }
            $transactions[] = $tr;
        }
        foreach ($transactions as $transaction) {
            $t = array(
                'protiucet' => $transaction['protiucet'],
                'banka' => $transaction['kod_banky'],
                'castka' => $transaction['castka'],
                'mena' => $accountInfo->currency,
                'ks' => $transaction['ks'],
                'vs' => $transaction['vs'],
                'ss' => $transaction['ss'],
                'datum' => $transaction['datum']->format('Y-m-d H:i:s'),
                'popis' => $transaction['zprava'],
                'popis_interni' => $transaction['popis'],
                'ident' => $transaction['id'],
                'typ' => $transaction['typ']
            );
            $account['transakce'][] = $t;
        }
        return $account;
    }
}



Výpis

<?php
date_default_timezone_set('Europe/Prague');
require_once dirname(__FILE__).'/fio.api.php';
$fio = new FioApi('..token..');
$fio->reset();
$transactions = $fio->getData();
var_dump($transactions);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: