Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

CURL import Fio banky

fifinka
verified
rating uzivatele
22. 5. 2015 15:37:33
Ahojte,
snažím se pro sebe vytvořit jednoduchý skript pro upload platebních příkazů do Fio banky. Data se posílají přes cURL, se kterým jsem ještě nikdy nedělal a nedaří se mně už druhý den zprovoznit.
Terminálový příkaz, který funguje bez problémů, vypadá takto:
Podle dokumentace a s pomocí funkčního skriptu pro Nette jsem vytvořil následovný kód:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, FIO_REST.'import/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; charset=utf-8;'));
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'type' => 'xml',
'token' => BANK_CZK_TOKEN,
'lng' => 'cs',
'file' => '@import.xml'
));
$result = curl_exec($curl);
Server vrací neustále chybu "The server encountered an internal error that prevented it from fulfilling this request." V dokumentaci Fio popisují tuto chybu tak, že "Pokoušíte se soubor odeslat jako klasický POST a nikoli jako přílohu."
Z dokumentaci se dále píše jenom "Soubor s příkazy se posílají s kódováním multipart/form-data (data jsou oddělena hraniční čarou "boundary". Data jsou identifikována jménem "file". Jméno původního souboru je předáno v parametru filename nebo v hlavičce content-disposition: form-data." Z toho ale moc chytrý nejsu.
Pokud by mně věděl někdo poradit nebo aspoň navést, byl bych moc rád.
Petr
22. 5. 2015 15:37:33
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114780
i-PRESS
verified
rating uzivatele
(2 hodnocení)
22. 5. 2015 16:09:03
Jak skutečně vypadá ten POST z CURLOPT_POSTFIELDS ? Pod klíčem file je požadovaný soubor?.
22. 5. 2015 16:09:03
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114779
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
22. 5. 2015 16:39:29
Taky jsem se na tom zasekl. Nakonec jsem místo curl použil Guzzle, protože má hezky udělané chybové hlášení a ono to najednou začalo fungovat.
22. 5. 2015 16:39:29
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114778
Default
verified
rating uzivatele
(94 hodnocení)
22. 5. 2015 16:54:31
Data jsou identifikována jménem "file". Jméno původního souboru je předáno v parametru filename nebo v hlavičce content-disposition: form-data."
Já to chápu tak, že má být v poli toto, nebo to alespoň tak vyznělo
array(
'file' => array(
'type' => 'xml',
'token' => BANK_CZK_TOKEN,
'lng' => 'cs',
'filename' => '@import.xml'
)
)
Teď jsem koukl ale na ten jejich dokument, ještě mě napadlo i tohle
array(
'type' => 'xml',
'token' => BANK_CZK_TOKEN,
'lng' => 'cs',
'file' => array(
'filename' => '@import.xml'
)
)
22. 5. 2015 16:54:31
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114777
fifinka
verified
rating uzivatele
22. 5. 2015 19:47:31
@i-PRESS: Ano, import.xml je vzorový XML soubor podle dokumentace a přes příkazovou řádku se odeslal v pořádku i report byl OK. Je ve stejném adresáři jako cURL skript.
@kubiro: Bohužel, pořád stejná chyba. Vůbec tomu nerozumím.
22. 5. 2015 19:47:31
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114776
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
22. 5. 2015 19:49:54
Upload přes @ je od PHP 5.6 deprecated (nebo dokonce defaultně vypnutý?). Nemůže být problém v tom? Hlásí něco curl_error()?
22. 5. 2015 19:49:54
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114775
fifinka
verified
rating uzivatele
22. 5. 2015 20:15:45
@Souki: Trefa. Opravdu je to tak. curl_error sice nic nehlásil, ale upload přes @ je deprecated. Pokud je XML 100% v pořádku, stačí nastavit CURLOPT_SAFE_UPLOAD na FALSE. Jinak použít CURLFile třídu.
Kdyby to někoho zajímalo, více zde:
http://stackoverflow.com/questions/25934128/curl-file-uploads-not-working-anymore-after-upgrade-from-php-5-5-to-5-6
http://php.net/manual/en/class.curlfile.php
Ale moc díky za pomoc. Už jsem začínal být zoufalý.
22. 5. 2015 20:15:45
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114774
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
22. 5. 2015 20:22:11
Mimochodem na komunikaci přes API vážně doporučuju spíš Guzzle a nevymýšlet kolo. Mraky problémů vyřeší a narozdíl od čistého curl chyby nezamlčuje:
Quickstart — Guzzle Documentation
22. 5. 2015 20:22:11
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114773
fifinka
verified
rating uzivatele
22. 5. 2015 20:47:41
Zatím jsem o něm neslyšel, ale určitě vyzkouším.
22. 5. 2015 20:47:41
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114772
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
22. 5. 2015 21:05:57
Je to knihovna, kterou běžně používají jiné knihovny pro práci s API - třeba AWS SDK je na tom celé postavené.
22. 5. 2015 21:05:57
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114771
Pesan
verified
rating uzivatele
13. 6. 2015 13:06:16
Ahoj, narazil jsem na zdejsi diskuzi a trapi me to same. Podarilo se nakonec komunikaci a zadavani plateb zporovoznit?
13. 6. 2015 13:06:16
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114770
fifinka
verified
rating uzivatele
13. 6. 2015 17:13:14
Ahoj, ano funguje spolehlivě. Můj kód vypadá takto:
13. 6. 2015 17:13:14
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114769
Pesan
verified
rating uzivatele
15. 6. 2015 12:40:01
Dekuji. Moc mi to pomohlo. Musel jsem trochu upravit vytvareni souboru s platbama, protoze nemam k dispozici tridu CURLfile ani funkci curl_file_create. Ale uz mi to chodi.
15. 6. 2015 12:40:01
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114768
Mongo
verified
rating uzivatele
23. 12. 2022 14:16:23
Predpokladam, ze BANK_TOKEN je token uzavrety v uvodzovkach. Nieco ako ´fhfjgkdhsjfosurjHjf´ cely cas mi totiz vracia chybu “Required request parameter 'token' for method parameter type String is not present” napriek tomu, ze token mam  nastaveny presne ako je v kode vyssie.
23. 12. 2022 14:16:23
https://webtrh.cz/diskuse/curl-import-fio-banky/#reply1114767
Pro odpověď se přihlašte.
Přihlásit