WebSyX – Webes szinkronizáció

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):

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?

  1. Először is kell a terméktörzs feltöltése webre
  2. 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)
  3. Árak feltöltése webre (csak akkor kell, ha a Symbol Ügyvitelben levő árak közül szeretnénk megjeleníteni a weben árat)
  4. Dokumentumok feltöltése webre (nem kötelező)
  5. 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)
  6. 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)
  7. Termék webkategóriák feltöltése webre (szorosan kapcsolódik az előző ponthoz)
  8. Árszabályok feltöltése webre (nem kötelező)
  9. 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)
  10. Vevők letöltése webről
  11. Rendelések letöltése webről