FlexiBee API - PHP načtení dat z FlexiBee

Již delší dobu se chystám udělat článek o tom, jak se z PHP nejlépe připojit do FlexiBee pomocí REST API. Jak se tedy připojím k FlexiBee API a získám data z nějaké evidence?

Nejdříve ale musíme ve FlexiBee zajistit několik věcí.

1. Je dobré mít 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í. To ale nevadí, protože se s ním máme připojovat jen přes API.
Role uživatele pak závisí jen 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. Ale bude mu bohatě postačovat role UŽIVATEL.

2. Vaše licence musí podporovat REST API. V současné době je REST API pro čtení součástí každé licence FlexiBee. Pokud budete potřebovat do FlexiBee zapisovat data tak je 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.

Také musíme zjistit adresu a port serveru na který se budeme připojovat a identifikátor firmy.

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 například něco jako 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říklade tedy demo).

Nyní již máme vše potřebné nastaveno a zjištěno a můžeme začít s programováním.

<?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);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 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>";
}
?>


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é první sloupec bude zkratka firmy a druhý 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

Jedná se o nejjednodušší způsob jak ze své vlastní PHP aplikace přistupovat k API FlexiBee a získávat z něj data.

REST API, FlexiBee API, PHP

- (17. 3. 2019)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login