PHP načtení dat z ABRA FlexiBee

Článek popisuje nejjednodušší způsob, jak se z PHP aplikace nejlépe připojit do systému ABRA FlexiBee pomocí REST-API, a získat tak data z evidence třetí strany.

První kroky

  1. Vytvořte pro API připojení samostatného uživatele. U tohoto uživatele postačí nastavit Typ uživatele na REST-API. Nepůjde se s ním tedy přihlásit přes desktopového klienta, ani přes webové rozhraní.
    Role uživatele pak závisí pouze na tom, jaké evidence má mít uživatel přístupné. Například uživatel pro propojení s e-shopem určitě nemusí být ADMIN. Bude mu bohatě stačit role UŽIVATEL.
  2. Licence musí podporovat REST-API. V současné době je REST-API pro čtení součástí každé licence ABRA FlexiBee. Pokud budete potřebovat do systému zapisovat data, bude nutná licence s REST-API pro zápis. Tento modul je doplatkový, ale automatizace, která se s jeho pomocí nechá zařídit, mnohokrát převýší počáteční investici.
  3. Zjistěte identifikátor firmy a adresu a port serveru, na který se budeme připojovat.
    Adresu a port serveru je možné zjistit v desktopového aplikaci, ve správě datových zdrojů nebo po připojení do firmy v dialogu O aplikaci FlexiBee (Nápověda – O aplikaci FlexiBee), na záložce Detaily o aplikaci, v poli Adresa centrálního serveru (bude se v něm vyskytovat výraz podobný např. demo.flexibee.eu:5434).
    Identifikátor firmy je možné zjistit pouze přes webové rozhraní. Na adrese server:port/c (např. demo.flexibee.eu/c), je možné nechat si vypsat firmy, které má uživatel ve FlexiBee přístupné. Po kliknutí na kteroukoliv z nich se připojíte do této firmy a URL se změní na server:port/c/identifikátor (např. demo.flexibee.eu/c/demo). Identifikátor je tedy konec URL adresy od posledního lomítka (na demo příkladě tedy demo).

Programování

Níže uvedený program se připojí k serveru demo.flexibee.eu. Pomocí http autentizace se přihlásí jako uživatel winstrom, s heslem winstrom, do firmy s identifikátorem demo. Z této firmy stáhne XML soubor adresáře a vypíše ho jako tabulku, ve které bude v prvním sloupci zkratka firmy a ve druhém název firmy.

Při chybě během načítání vypíše chybu „Při operaci nastala chyba“ a kód chyby.

Ukázka výstupu.

<?php
// URL with xml data
$url = "https://demo.flexibee.eu/c/demo/adresar.xml";

// create curl resource
$ch = curl_init();

// return content as a string from curl_exec
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

// follow redirects (compatibility for changes in FlexiBee)
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

// HTTP authentication
curl_setopt($ch, CURLOPT_HTTPAUTH, TRUE);
// FlexiBee by default uses Self-Signed certificates
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

// for debugging
// curl_setopt($ch, CURLOPT_VERBOSE, TRUE);

// set username and password
curl_setopt($ch, CURLOPT_USERPWD, "winstrom:winstrom");

// set URL
curl_setopt($ch, CURLOPT_URL, $url);

// set HTTP method
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

// execute
$output = curl_exec($ch);

$info = curl_getinfo($ch);

if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200
&& curl_getinfo($ch, CURLINFO_HTTP_CODE) != 201) {
printf ("Při operaci nastala chyba (HTTP %d): %sn",
curl_getinfo($ch, CURLINFO_HTTP_CODE), $output);
}

// close curl resource to free up system resources
curl_close($ch);

// display data
libxml_use_internal_errors(true);
$data = simplexml_load_string($output);
if (!$data) {
echo "Error loading XML";
foreach(libxml_get_errors() as $error) {
echo " ", $error->message;
}
} else {
echo "<table>";
foreach($data->children() as $radek) {
echo "<tr><td>";
echo $radek->kod;
echo "</td><td>";
echo $radek->nazev;
echo "</td></tr>";
}
echo "</table>";
}
?>