2011 első felében a Symbol Tech csapata publikussá tette az általános WebSyX modulját, mely a Symbol Ügyvitel és a különböző webáruházak közötti szinkronizációt hivatott megvalósítani.
Na most ennek használatához próbálunk egy kis segítséget nyújtani a php programozók számára.
Természetesen a fejlesztő cég honlapjain is lehet tájékozódni az alábbi linkeken:
Ha már letöltöttük a Symbol Ügyvitel demóját és a hozzá tartozó WebSyX modult, akkor a Beállítások/WebSyX beállításokban be kell állítani a webáruház linkjeit (természetesen ezeket implementálni kell):
- Termékek: http://webaruhazneve.hu/uploadproducts.php
- Készlet: http://webaruhazneve.hu/uploadproductquantities.php
- Árak: http://webaruhazneve.hu/uploadproductprices.php
- Dokumentumok: http://webaruhazneve.hu/uploadproductdocuments.php
- Web kategóriák: http://webaruhazneve.hu/uploadproductwebgroups.php
- Vevők feltöltése: http://webaruhazneve.hu/uploadcustomers.php
- Vevők letöltése: http://webaruhazneve.hu/downloadcustomers.php
- Rendelések: http://webaruhazneve.hu/downloadcustomerorders.php
- És a lista nem teljes…
FONTOS, hogy a kommunikáció mindig a Symbol Ügyvitel oldaláról indul, a Symbol Ügyvitel küldi át az adatokat a webáruháznak és kér a webáruháztól adatokat!
A webáruház interfészoldalainak implementálásához töltsük le az XML kommunikációs fájlokat a fejlesztő cég oldaláról, ide kattintva.
Ezekben a fájlokban lehet megtekinteni, hogy a Symbol Ügyvitel milyen adatokat szolgáltat és milyen XML struktúrában küldi, illetve fogadja az információt.
Az interfész linkek elkészítésénél a következőkre kell figyelni:
- A php oldalon mindig a POST-ból tudjuk kiszedni a kapott xml adatot, azaz $xml = $_POST[‘xmldata’]; – az ‘xmldata’ egy alapértelmezett beállítás a Symbol Ügyvitel WebSyX-ben, de természetesen a beállításokban átírhatjuk a nekünk tetszőre.
- Miután megkaptuk az xml adatot, nyerjük ki a kapott értékeket. A fejlesztő cég külön jelzi, ha valamelyik adat base64-gyel van elkódolva, ezeknél elég csak a jól ismert $decocedData = base64_decode($encodedData); függvényt meghívni.
- XML feldolgozás közben ügyeljünk arra, hogy a WebSyX újabb verziói további tag-ekkel egészülhetnek ki!
- A kinyert adathalmazt szervezzük úgy, hogy a webáruház adatbázisába elmenthető legyen. Ha esetleg rendelkezik (általában nem) import felülettel az áruház, akkor az importhoz szükséges adatstruktúrát kell létrehoznunk és azon keresztül betölteni az áruházba.
- Sikeres feldolgozás esetén, válaszként írassunk ki egy OK feliratot. Ha hiba történt a feldolgozás során, akkor a hibát írjuk ki válaszként, amit a Symbol Ügyvitel be tud jegyezni a SyX naplóba. Fontos, hogy a WebSyX beállításaiban be legyen kapcsolva a Hibakezelés feltöltéskor opció!
- Ha a Symbol Ügyvitel információt kér a webáruháztól, akkor a webáruház adataiból a fejlesztő cég által definiált XML struktúrába kell rendezni a vevőket, illetve rendeléseket és úgymond kiíratni az oldalra. Esetleg a gyorsabb szinkronizálás végett megoldható az is, hogy egy rendelés létrejöttekor rögtön kigenerálunk egy XML fájlt. Ekkor a Symbol Ügyvitelben a letöltési linkhez ennek a fájlnak az elérési útját kell megadni.
- Ahhoz, hogy a weboldal értesüljön egy rendelés vagy egy új vevő letöltéséről a kigenerált XML-ben el kell helyezni egy visszajelző URL-t, amit feedbackurlnek hívnak. Minden rendelésnél és minden vevőnél egyedinek kell lennie, ezért tegyük bele a webes ID-jét. A Symbol Ügyvitel ezt a linket kiegészíti a saját oldalán létrejött ID-jével és úgy hívja meg. Így webes oldalon is össze lehet párosítani a közölt információkat és a lekérdezett rendeléseket ki kell venni az XML-ből.
- A Symbol Ügyvitel alapesetben csak változásokat küldi. Tehát, ha egy termék létrejön, vagy valamilyen tulajdonsága megváltozik, akkor azt a terméket elküldi a webáruháznak (természetesen egy kommunikációban többet is). Természetesen van mód az összes adat felküldésére is, de ezt szerencsére nem kell külön implementálnunk, a webáruház részéről ez is csak szinkronizációnak látszik.
Példa szerveroldali feldolgozáshoz
<?php
$xmldata = $_POST["xmldata"];
$data = new SimpleXMLElement($xmldata);
$error = false;
$error_msg = "";
//TODO: processing data
foreach ($data as $product)
{
$code = $product->code; //read code value of actual product element
//TODO: processing product
}
if ($error)
{
echo $error_msg;
}
else
{
echo "OK";
}
?>
Szerver oldalon a Symbol Ügyviteltől kapott adatokat legegyszerűbben a php-s SimpleXML-lel lehet feldolgozni, melyről az alábbi linken lehet több mindent olvasni (angol nyelven)
Basic SimpleXML usage
Példa szerveroldali küldéshez
<?php
//Select Data With MySQLi
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
$sql = "SELECT orderid, customer, ... FROM CustomerOrder WHERE symbolid is null";
$result = $conn->query($sql);
$customerorders = new SimpleXMLElement(' ');
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$customerorder = $xml->addChild('customerorder');
$customerorder->addChild('orderid', $row["orderid"]);
$customerorder->addChild('customer', $row["customer"]);
//TODO: processing customerorder
}
}
$conn->close();
Header('Content-type: text/xml');
print($xml->asXML());
?>
Mi kell ahhoz, hogy a rendelések megérkezzenek a Symbol Ügyvitelbe?
- Először is kell a terméktörzs feltöltése webre
- Készlet információk feltöltése webre (csak akkor kell, ha a weben meg akarjuk jeleníteni a termék elérhetőségét)
- Árak feltöltése webre (csak akkor kell, ha a Symbol Ügyvitelben levő árak közül szeretnénk megjeleníteni a weben árat)
- Dokumentumok feltöltése webre (nem kötelező)
- Webes képek feltöltése webre (csak akkor kell, ha a Symbol Ügyvitelben szeretnénk a termék webes képgalériáját kezelni)
- Web kategóriák feltöltése webre (csak akkor kell, ha a Symbol Ügyvitelben szeretnénk kezelni azt, hogy a termék mely kategóriákban jelenjen meg a weben)
- Termék webkategóriák feltöltése webre (szorosan kapcsolódik az előző ponthoz)
- Árszabályok feltöltése webre (nem kötelező)
- Vevők feltöltése webre (abban az esetben kell feltölteni, ha a webre vissza akarjuk tölteni a Symbol Ügyvitelben módosított vevő adatokat, illetve ha a rendelésnél a vevő adatainál az ID mezőt kitöltve küldjük)
- Vevők letöltése webről
- Rendelések letöltése webről