lt:xmlcore
Skirtumai
Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
lt:xmlcore [2020/07/13 13:22] – robertas | lt:xmlcore [2021/12/16 16:27] – [2.4. Pavyzdys PHP kalba] ignas | ||
---|---|---|---|
Linija 1: | Linija 1: | ||
======Bendras XML duomenų mainų sąsajos aprašymas====== | ======Bendras XML duomenų mainų sąsajos aprašymas====== | ||
+ | |||
+ | ====Bendra informacija==== | ||
+ | |||
+ | Jei pageidaujama, | ||
Integracijos principai: | Integracijos principai: | ||
- | | + | |
- | * Duomenų koduotė UTF-8; | + | * Duomenų koduotė UTF-8; |
- | * Metodas informacijai pasiekti HTTPS (sertifikatas viešai pripažįstamas); | + | * Metodas informacijai pasiekti HTTPS (sertifikatas viešai pripažįstamas); |
- | * GET metodas naudojamas duomenims gauti; | + | * GET metodas naudojamas duomenims gauti; |
- | * POST metodas yra naudojamas duomenis išsiųsti; | + | * POST metodas yra naudojamas duomenis išsiųsti; |
- | * Duomenų apsikeitimą visuomet inicijuoja išorinė šalis, nepriklausomai nuo apsikeitimo krypties; | + | * Duomenų apsikeitimą visuomet inicijuoja išorinė šalis, nepriklausomai nuo apsikeitimo krypties; |
- | * Į POST užklausą atsakoma sinchronizuotu XML pranešimu, kurio apdorojimas gali daryti įtaką sėkmingam procesui; | + | * Į POST užklausą atsakoma sinchronizuotu XML pranešimu, kurio apdorojimas gali daryti įtaką sėkmingam procesui; |
- | * Duomenų struktūra turi atitikti paruoštą XSD schemą. Pageidaujama reikšmes siųsti atributuose. | + | * Duomenų struktūra turi atitikti paruoštą XSD schemą. Pageidaujama reikšmes siųsti atributuose. |
+ | * Directo dokumentų numerių tipas yra integer, tai reiškia, kad didžiausias galimas skaičius yra 2147483647. | ||
+ | * Tuščios (NULL) reikšmės nebus įtraukiamos į XML su lauko pavadinimu. Tą patį darykite ir siųsdami duomenis į Directo - praleiskite laukus, kuriuose turi būti tuščių (NULL) reikšmių. Reikėtų vengti siųsti laukus su tuščia reikšme, kaip pavyzdžiui: | ||
+ | **Endpoint URL:** [[https:// | ||
- | * **Endpoint URL:** https:// | ||
- | ==== 2.1. Informacijos pasiėmimas iš Directo (OUT) ==== | + | |
+ | ==== 1. Prieiga prie serviso ==== | ||
+ | |||
+ | Serviso nuorodos yra pasiekiamos '' | ||
+ | <code xml>< | ||
+ | |||
+ | Pavyzdys naudojant cURL: | ||
+ | <code bash> | ||
+ | curl -v -d " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====2. Pavydžiai ==== | ||
+ | Toliau pateikti pavyzdžiai turi būti laikomi tik apytiksliais ir svarbu atsiminti, kad konkrečioje kuriamoje sąsajoje beveik tikrai bus naudojamos kitokios **schemos, URL, parametrai, apribojimai, | ||
+ | Norėdami išbandyti, naudokite šią formą: [[https:// | ||
+ | |||
+ | |||
+ | === 2.1. Informacijos pasiėmimas iš Directo (OUT) === | ||
GET metodo atveju bent 3 parametrai turi būti nurodyti: | GET metodo atveju bent 3 parametrai turi būti nurodyti: | ||
- | * get=1 | + | * '' |
- | * what=SERVISO_KODAS | + | * '' |
- | * key=SUGENERUOTAS_RAKTAS | + | * '' |
Papildomi parametrai yra derinami individualiai pagal poreikį, integracijos derinimo metu. | Papildomi parametrai yra derinami individualiai pagal poreikį, integracijos derinimo metu. | ||
+ | Šiame pavyzdyje naudojami '' | ||
- | Šio pavyzdžio atveju yra naudjamas **what** = " | + | Užklausa prekėms pagal išsaugojimo datą (ts = Time stamp): [[https://login.directo.ee/ |
+ | Laiko filtras taip pat gali naudoti laiką taip: & ts = 01.03.2021 12:30 / & ts = 01.03.2021%2012: | ||
Užklausos pavyzdys, norint gauti visų prekių sąrašą: | Užklausos pavyzdys, norint gauti visų prekių sąrašą: | ||
- | + | https://login.directo.ee/ | |
- | https:// | + | |
Užklausos pavyzdys, norint gauti konkrečios prekės informaciją: | Užklausos pavyzdys, norint gauti konkrečios prekės informaciją: | ||
+ | https:// | ||
- | https:// | + | == Pirkėjo išvestis (OUT): |
- | **PHP pavyzdys** | + | [[https://login.directo.ee/ |
- | < | + | |
- | $url = 'https:// | + | |
- | $ch = curl_init(); | + | Filtro parinkčių pavyzdžiai: |
- | curl_setopt($ch, CURLOPT_HEADER, 0); | + | |
- | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | + | |
- | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); | + | |
- | curl_setopt($ch, | + | |
- | curl_setopt($ch, | + | |
- | $result | + | == Sandėlio kiekio išvestis |
- | + | ||
- | header(' | + | https://login.directo.ee/xmlcore/ |
- | + | ||
- | print '< | + | Filtro parinkčių pavyzdžius: |
- | + | ||
- | $data = new SimpleXMLElement($result); | + | |
- | + | === 2.3. Informacijos siuntimas į Directo | |
- | print '< | + | |
- | + | ||
- | foreach ($data-> | + | |
- | print $item[' | + | |
- | foreach | + | |
- | print chr(9) . $df[' | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | ==== 2.2. Informacijos siuntimas į Directo (IN) ==== | + | Duomenys siunčiami naudojant '' |
- | Duomenys siunčiami naudojant POST metodą. | + | Užpildomi formos kintamieji: |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | Užpildomi trys formos kintamieji: | + | Įvesties sąsajoje XML turi būti išsiųstas adresu [[https:// |
- | * put=1 | + | |
- | * what=INVOICE | + | |
- | * xmldata=<?xml version=" | + | |
+ | <wrap important> | ||
+ | Šiame pavyzdyje nurodyti URL ir XML pavyzdžiai yra visiškai išgalvoti ir negali būti naudojami testavimui. Testavimas visada atliekamas realiame procese. | ||
+ | </ | ||
- | Šis siuntimas naudojamas, pavyzdžiui, | + | **Praktinis pavyzdys** |
- | Šiame pavyzdyje nurodyti URL ir XML pvz. yra visiškai išgalvoti ir negali | + | Tokio tipo įvestis naudojama, pavyzdžiui, |
- | Tarkime, kad šiuo atveju URL pvz. https://directo.gate.ee/ | + | Tarkime, kad šiuo atveju URL pvz. [[https://login.directo.ee/ |
- | Pavyzdinio serviso XSD schemą: | + | Pavyzdinio serviso XSD schemą: |
Pavyzdinis XML: | Pavyzdinis XML: | ||
- | < | + | < |
<?xml version=" | <?xml version=" | ||
< | < | ||
- | < | + | <invoice InvoiceNr=" |
InvoiceDate=" | InvoiceDate=" | ||
< | < | ||
Linija 97: | Linija 110: | ||
</ | </ | ||
- | + | Servisas | |
- | **PHP pavyzdys** | + | |
- | < | + | |
- | $xmldata = '<' | + | |
- | <invoice AppKey=" | + | |
- | InvoiceDate=" | + | |
- | < | + | |
- | <line ProductID=" | + | |
- | <line ProductID=" | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | $url = ' | + | |
- | + | ||
- | $ch = curl_init(); | + | |
- | curl_setopt($ch, | + | |
- | curl_setopt($ch, | + | |
- | curl_setopt($ch, | + | |
- | curl_setopt($ch, | + | |
- | curl_setopt($ch, | + | |
- | + | ||
- | curl_setopt($ch, | + | |
- | $result = curl_exec($ch); | + | |
- | + | ||
- | print '< | + | |
- | + | ||
- | curl_close($ch); | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Servisas | + | |
Pavyzdžiui įkėlimas buvo sėkmingas ir Directo sąskaitos dokumentui priskyrė numerį 123: | Pavyzdžiui įkėlimas buvo sėkmingas ir Directo sąskaitos dokumentui priskyrė numerį 123: | ||
- | < | + | < |
<?xml version=" | <?xml version=" | ||
< | < | ||
Linija 142: | Linija 125: | ||
Pavyzdžiui sąskaita numeriu 123 buvo atmesta, nes Directo sistemoje jau egzistavo sąskaitos dokumentas tokiu numeriu: | Pavyzdžiui sąskaita numeriu 123 buvo atmesta, nes Directo sistemoje jau egzistavo sąskaitos dokumentas tokiu numeriu: | ||
- | < | + | < |
<?xml version=" | <?xml version=" | ||
< | < | ||
Linija 151: | Linija 134: | ||
Vienu siuntimu galima įkelti kelias sąskaitas iš karto. Tokiu atveju rezultatas turi būti grąžinamas kiekvienai sąskaitai: | Vienu siuntimu galima įkelti kelias sąskaitas iš karto. Tokiu atveju rezultatas turi būti grąžinamas kiekvienai sąskaitai: | ||
- | < | + | < |
<?xml version=" | <?xml version=" | ||
< | < | ||
Linija 159: | Linija 142: | ||
</ | </ | ||
- | :!: Svarbu sulaukti atsakymo apie sėkmingą įkėlimą. Jeigu tokio rezultato nesulaukiama arba yra gaunama klaida, siuntimą reikia pakartoti ne anksčiau kaip po minutės. | + | <wrap important> |
+ | Svarbu sulaukti atsakymo apie sėkmingą įkėlimą. Jeigu tokio rezultato nesulaukiama arba yra gaunama klaida, siuntimą reikia pakartoti ne anksčiau kaip po minutės. | ||
+ | </ | ||
- | ==== 2.3. HTML forma ==== | + | **Pirkėjo įvesties sąsaja: |
+ | |||
+ | Duomenys aprašyti schemoje [[https:// | ||
+ | |||
+ | <code xml> | ||
+ | <? | ||
+ | < | ||
+ | < | ||
+ | </ customer > | ||
+ | </ customers > | ||
+ | </ | ||
+ | |||
+ | === 2.4. HTML forma === | ||
Parametrai, kuriuos reikia nurodyti: | Parametrai, kuriuos reikia nurodyti: | ||
- | * **What** – webserviso | + | * **What** – web serviso |
* **Put** – statinis. Visada „1“ jei tai importas į Directo. | * **Put** – statinis. Visada „1“ jei tai importas į Directo. | ||
* **Get** - statinis. Visada „1“ jei tai eksportas iš Directo. | * **Get** - statinis. Visada „1“ jei tai eksportas iš Directo. | ||
+ | * **Key** - web serviso autorizacijos raktas. | ||
* **Xmldata** – dinaminis. Laukus reiktų derinti, kadangi servisas būtų programuojamas individualiai pagal poreikį. | * **Xmldata** – dinaminis. Laukus reiktų derinti, kadangi servisas būtų programuojamas individualiai pagal poreikį. | ||
Linija 172: | Linija 170: | ||
Pavyzdinė užsakymo forma: | Pavyzdinė užsakymo forma: | ||
- | < | + | < |
- | <form method=" | + | <form method=" |
<input name=" | <input name=" | ||
Linija 179: | Linija 177: | ||
<input name=" | <input name=" | ||
- | < | + | <input name=" |
+ | |||
+ | < | ||
<input TYPE=" | <input TYPE=" | ||
Linija 185: | Linija 185: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | |||
+ | === 2.5. Pavyzdys PHP kalba === | ||
+ | |||
+ | Į servisą | ||
+ | |||
+ | **OUT** | ||
+ | <code php> | ||
+ | $url = ' | ||
+ | $key = ' | ||
+ | |||
+ | $ch = curl_init(); | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | |||
+ | $result = curl_exec($ch); | ||
+ | |||
+ | header(' | ||
+ | |||
+ | print '< | ||
+ | |||
+ | $data = new SimpleXMLElement($result); | ||
+ | |||
+ | print '< | ||
+ | print_r($data); | ||
+ | foreach ($data-> | ||
+ | print ' | ||
+ | foreach ($item-> | ||
+ | print chr(9) . $df[' | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **IN** | ||
+ | <code php> | ||
+ | $url = ' | ||
+ | $key = ' | ||
+ | |||
+ | $xmldata = <<< | ||
+ | <?xml version=" | ||
+ | <invoice InvoiceNr=" | ||
+ | InvoiceDate=" | ||
+ | < | ||
+ | <line ProductID=" | ||
+ | <line ProductID=" | ||
+ | </ | ||
+ | </ | ||
+ | XML; | ||
+ | |||
+ | |||
+ | $ch = curl_init(); | ||
+ | |||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | curl_setopt($ch, | ||
+ | |||
+ | $result = curl_exec($ch); | ||
+ | curl_close($ch); | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | print '</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | === 2.6. Postman === | ||
+ | [[https:// | ||
+ |
lt/xmlcore.txt · Keista: 2023/09/15 15:27 vartotojo jaroslav