Kasutaja tarvikud

Lehe tööriistad



lt:xmlcore

Skirtumai

Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.

Lõlita võrdlemise vaatele

Next revision
Previous revision
Next revision Both sides next revision
lt:xmlcore [2020/06/17 13:42]
robertas sukurtas
lt:xmlcore [2021/10/08 15:12]
jaroslav [Bendras XML duomenų mainų sąsajos aprašymas]
Linija 10: Linija 10:
     * Į 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:​ ''​%%customer_code = ""​%%''​
  
  
-  * **Endpoint URL:** https://directo.gate.ee/​xmlcore/​demo_lt_153/​xmlcore.asp (Jūsų sukurtam servisui pasikeis tik „demo_lt_153“ dalis).+  * **Endpoint URL:** https://login.directo.ee/​xmlcore/​demo_lt_153/​xmlcore.asp (Jūsų sukurtam servisui pasikeis tik „demo_lt_153“ dalis).
  
-==== 2.1. Informacijos pasiėmimas iš Directo (OUT) ====+ 
 +==== 2.1. Prieiga prie serviso ==== 
 + 
 +Serviso nuorodos yra pasiekiamos ''​form/​urlencoded''​ POST metodu. Autorizacijai reikalingas raktas turi būti perduodamas POST metodu kintamajame KEY siunčiant užklausą. Jei raktas neteisingas arba raktas siunčiamas neteisingu būdu, gaunamas atsakymas:​ 
 +<code xml><​result type="​5"​ desc="​Unauthorized"/></​code>​ 
 + 
 +Pavyzdys naudojant cURL: 
 +<code bash> 
 +curl -v -d "​key=2852DD553B767B463C807ADB36B5BB2F&​what=item&​get=1&​ts=01.01.2021&​code=000001"​ -H "​Content-Type:​ application/​x-www-form-urlencoded"​ -X POST "​https://​login.directo.ee/​xmlcore/​demo_ee/​xmlcore.asp"​ 
 +</​code>​ 
 + 
 + 
 +==== 2.2. 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 +  ​* **get**=1 
-  * what=SERVISO_KODAS +  ​* **what**=SERVISO_KODAS 
-  * key=SUGENERUOTAS_RAKTAS+  ​* **key**=SUGENERUOTAS_RAKTAS
  
 Papildomi parametrai yra derinami individualiai pagal poreikį, integracijos derinimo metu. Papildomi parametrai yra derinami individualiai pagal poreikį, integracijos derinimo metu.
 +
 +<wrap important>​
 +Šiuose pavyzdžiuose esančios nuorodos yra iliustracinio pobūdžio. Jokiu būdu negarantuojama,​ kad šie URL iš tikrųjų atitiks užklausą. Jei užklausos metu duomenys yra gaunami, jie yra 100% fiktyvūs ir nesusiję su jokių tikrų įmonių duomenimis.
 +</​wrap>​
  
  
-Šio pavyzdžio atveju yra naudjamas ​**what** = "​item"​ ir **key** reikšmė yra "​20DAF3F822B782AF12D1198C23F45604"​. Esant poreikiui, galite peržiūrėti šio pavyzdinio serviso XSD schemą: [[http://​wiki.directo.ee/​_media/​et/​ws_artiklid.xsd|ws_artiklid.xsd]].+Šio pavyzdžio atveju yra naudojamas ​**what** = "​item"​ ir **key** reikšmė yra "​20DAF3F822B782AF12D1198C23F45604"​. Esant poreikiui, galite peržiūrėti šio pavyzdinio serviso XSD schemą: [[http://​wiki.directo.ee/​_media/​et/​ws_artiklid.xsd|ws_artiklid.xsd]].
  
  
 Užklausos pavyzdys, norint gauti visų prekių sąrašą: Užklausos pavyzdys, norint gauti visų prekių sąrašą:
  
-https://​directo.gate.ee/​xmlcore/​demo_ee/​xmlcore.asp?​get=1&​what=item&​key=20DAF3F822B782AF12D1198C23F45604+https://login.directo.ee/​xmlcore/​demo_ee/​xmlcore.asp?​get=1&​what=item
  
 Užklausos pavyzdys, norint gauti konkrečios prekės informaciją:​ Užklausos pavyzdys, norint gauti konkrečios prekės informaciją:​
  
-https://​directo.gate.ee/​xmlcore/​demo_ee/​xmlcore.asp?​get=1&​what=item&​code=0000&​key=20DAF3F822B782AF12D1198C23F45604+https://login.directo.ee/​xmlcore/​demo_ee/​xmlcore.asp?​get=1&​what=item&​code=0000
  
 +==== 2.3. Informacijos siuntimas į Directo (IN) ====
  
-==== 2.2. Informacijos siuntimas į Directo (IN) ==== +Duomenys siunčiami naudojant ​''​form/​urlencoded'' ​POST metodą.
- +
-Duomenys siunčiami naudojant POST metodą. +
- +
-Užpildomi trys formos kintamieji:​ +
-  * put=1 +
-  * what=INVOICE +
-  * xmldata=<?​xml version="​1.0"​ encoding="​utf-8"?><​PAYLOAD>​+
  
 +Užpildomi formos kintamieji:
 +  * **put**=1
 +  * **what**=INVOICE
 +  * **key**=SUGENERUOTAS_RAKTAS
 +  * **xmldata**=<?​xml version="​1.0"​ encoding="​utf-8"?><​PAYLOAD>​
  
 Šis siuntimas naudojamas, pavyzdžiui,​ kai pardavimo sąskaita yra sugeneruojama išorinėje sistemoje, kurią reikia perduoti į „Directo“. Šis siuntimas naudojamas, pavyzdžiui,​ kai pardavimo sąskaita yra sugeneruojama išorinėje sistemoje, kurią reikia perduoti į „Directo“.
  
-Šiame pavyzdyje nurodyti URL ir XML pvz. yra visiškai išgalvoti ir negali būti naudojami testavimui. Testavimas visada atliekamas realiame procese.+<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. 
 +</​wrap>​
  
-Tarkime, kad šiuo atveju URL pvz. https://directo.gate.ee/​xmlcore/​this_is_the_worlds_greatest_company/​xmlcore.asp+Tarkime, kad šiuo atveju URL pvz. https://login.directo.ee/​xmlcore/​this_is_the_worlds_greatest_company/​xmlcore.asp
  
 Pavyzdinio serviso XSD schemą: ​ [[http://​wiki.directo.ee/​_media/​et/​xml_in_arved.xsd|xml_in_arved.xsd]]. Pavyzdinio serviso XSD schemą: ​ [[http://​wiki.directo.ee/​_media/​et/​xml_in_arved.xsd|xml_in_arved.xsd]].
Linija 56: Linija 75:
 Pavyzdinis XML: Pavyzdinis XML:
  
-<​code>​+<​code ​xml>
 <?xml version="​1.0"​ encoding="​utf-8"?>​ <?xml version="​1.0"​ encoding="​utf-8"?>​
 <​invoices>​ <​invoices>​
-  <​invoice ​AppKey="​1234567879012345678790" ​InvoiceNr="​123" ​+  <invoice InvoiceNr="​123" ​
       InvoiceDate="​2015-06-07"​ CustomerCode="​CUST001">​       InvoiceDate="​2015-06-07"​ CustomerCode="​CUST001">​
     <​lines>​     <​lines>​
Linija 69: Linija 88:
 </​code>​ </​code>​
  
- +Servisas ​sinchroniškai grąžins XML atsakymą su pranešimu kas įvyko.
-Servisas ​sinchroninškai grąžins XML atsakymą su pranešimu kas įvyko.+
  
 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:
  
-<​code>​+<​code ​xml>
 <?xml version="​1.0"​ encoding="​UTF-8"​ ?>  <?xml version="​1.0"​ encoding="​UTF-8"​ ?> 
 <​results>​ <​results>​
Linija 85: Linija 103:
 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:
  
-<​code>​+<​code ​xml>
 <?xml version="​1.0"​ encoding="​UTF-8"​ ?>  <?xml version="​1.0"​ encoding="​UTF-8"​ ?> 
 <​results>​ <​results>​
Linija 94: Linija 112:
 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:
  
-<​code>​+<​code ​xml>
 <?xml version="​1.0"​ encoding="​UTF-8"​ ?>  <?xml version="​1.0"​ encoding="​UTF-8"​ ?> 
 <​results>​ <​results>​
Linija 102: Linija 120:
 </​code>​ </​code>​
  
-:!: 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. ​Reikėtų vengti kelių užklausų siuntimo vienu metu. 
 +</​wrap>​
  
-==== 2.3HMTL forma ====+==== 2.4HTML forma ====
  
 Parametrai, kuriuos reikia nurodyti: Parametrai, kuriuos reikia nurodyti:
-  * **What** – webserviso ​pavadinimas. Pvz.: “invoice” jei tai sąskaitos dokumentas.+  * **What** – web serviso ​pavadinimas. Pvz.: “invoice” jei tai sąskaitos dokumentas.
   * **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 115: Linija 136:
 Pavyzdinė užsakymo forma: Pavyzdinė užsakymo forma:
  
-<​code>​ +<​code ​html
-<form method="​POST"​ action="​https://​directo.gate.ee/​xmlcore/​demo_lt_153/​xmlcore.asp">​+<form method="​POST"​ action="​https://​login.directo.ee/​xmlcore/​this_is_the_worlds_greatest_company/​xmlcore.asp">​
  
  <input name="​what"​ value="​order">​  <input name="​what"​ value="​order">​
Linija 122: Linija 143:
  <input name="​put"​ value="​1">​  <input name="​put"​ value="​1">​
  
- <​textarea name="​xmldata"​ rows="​10"><​orders><​order ​key="​asdf12345678" ​order_time="​31.01.2018"​ number="​111222"​ customer_code="​FA"​ customer_name="​TEST TEST pirkejas"​ customer_order="​PORD11111"​ deliverydate="​31.01.2018"​ paymentterm="​10"​ customer_contact="​customer contact"​ phone="​phone"​ email="​email@test.com <​mailto:​email@test.com>​ " email_notification="​email notification"​ fax="​fax"​ regno="​regno"​ VATno="​vatno"​ comment="​comment"​ address1="​Address1"​ address2="​Address2"​ address3="​Address3"​ deliveryaddress1="​DAddress1"​ deliveryaddress2="​DAddress2"​ deliveryaddress3="​DAddress2"​ order_type="​otype"​ order_status="​ostatus"><​line item="​109819-0001"​ variant="​Dydziai_a"​ price="​100"​ discount="​15"​ qty="​10"​ unit="​unit"​ description="​item description"​ comment="​comment"​ supplier="​supp"​ rn="​1"></​line><​line barcode="​8714554972899"​ price="​100"​ discount="​15"​ qty="​10"​ unit="​unit"​ description="​item description"​ comment="​comment"​ supplier="​supp"​ rn="​2"></​line></​order></​orders></​textarea>​+ <input name="​key"​ value="​2852DD553B767B463C807ADB36B5BB2F">​ 
 + 
 + <​textarea name="​xmldata"​ rows="​10"><​orders><​order order_time="​31.01.2018"​ number="​111222"​ customer_code="​FA"​ customer_name="​TEST TEST pirkejas"​ customer_order="​PORD11111"​ deliverydate="​31.01.2018"​ paymentterm="​10"​ customer_contact="​customer contact"​ phone="​phone"​ email="​email@test.com <​mailto:​email@test.com>​ " email_notification="​email notification"​ fax="​fax"​ regno="​regno"​ VATno="​vatno"​ comment="​comment"​ address1="​Address1"​ address2="​Address2"​ address3="​Address3"​ deliveryaddress1="​DAddress1"​ deliveryaddress2="​DAddress2"​ deliveryaddress3="​DAddress2"​ order_type="​otype"​ order_status="​ostatus"><​line item="​109819-0001"​ variant="​Dydziai_a"​ price="​100"​ discount="​15"​ qty="​10"​ unit="​unit"​ description="​item description"​ comment="​comment"​ supplier="​supp"​ rn="​1"></​line><​line barcode="​8714554972899"​ price="​100"​ discount="​15"​ qty="​10"​ unit="​unit"​ description="​item description"​ comment="​comment"​ supplier="​supp"​ rn="​2"></​line></​order></​orders></​textarea>​
  
  <input TYPE="​submit">​  <input TYPE="​submit">​
  
 </​form>​ </​form>​
 +</​code>​
 +
 +
 +==== 2.4. Pavyzdys PHP kalba ====
 +
 +Į servisą ​ galima kreiptis bet kokia kalba, jeigu ta programavimo kalba yra galimybė padaryti https request‘ą,​ pateikiame pavyzdį PHP kalba:
 +
 +**OUT**
 +<code php>
 +$url = '​https://​login.directo.ee/​xmlcore/​this_is_the_worlds_greatest_company/​xmlcore.asp';​
 +$key = '​2852DD553B767B463C807ADB36B5BB2F';​
 +
 +$ch = curl_init();​
 +curl_setopt($ch,​ CURLOPT_HEADER,​ 0);
 +curl_setopt($ch,​ CURLOPT_RETURNTRANSFER,​ true);
 +curl_setopt($ch,​ CURLOPT_FOLLOWLOCATION,​ true);
 +curl_setopt($ch,​ CURLOPT_URL,​ $url );
 +curl_setopt($ch,​ CURLOPT_POSTFIELDS,​ '​key='​.urlencode($key) . '&​what=item&​get=1&​ts=01.01.2021&​code=000001'​ ); 
 +curl_setopt($ch,​ CURLOPT_POST,​ 1);
 + 
 +$result = curl_exec($ch);​
 + 
 +header('​Content-Type:​ text/html; charset=utf-8'​);​
 + 
 +print '<​textarea cols=80 rows=10>'​ . $result . '</​textarea>';​
 + 
 +$data = new SimpleXMLElement($result);​
 + 
 +print '<​pre>';​
 +print_r($data);​
 +foreach ($data->​item as $item) {
 + print '​Code:'​.$item['​code'​] . chr(9) .  '<​b>'​ . $item['​name'​] . '</​b>'​ . chr(9) .  $item['​class'​] . '<​br>​Datafields:<​br>';​
 + foreach ($item->​datafields->​data as $df ) {
 + print chr(9) . $df['​code'​] . ':'​ . $df['​content'​] . '<​br>';​
 + }
 +}
 +</​code>​
 +
 +
 +**IN**
 +<code php>
 +$url = '​https://​login.directo.ee/​xmlcore/​this_is_the_worlds_greatest_company/​xmlcore.asp';​
 +$key = '​2852DD553B767B463C807ADB36B5BB2F';​
 +
 +$xmldata =  <<<​XML
 +<?xml version="​1.0"​ encoding="​utf-8"?>​
 +<invoice AppKey="​1234567879012345678790"​ InvoiceNr="​123" ​
 +      InvoiceDate="​2015-06-07"​ CustomerCode="​CUST001">​
 +    <​lines>​
 +      <line ProductID="​KILLERPRODUCT"​ Quantity="​3"​ UnitPriceWoVAT="​123.45"/>​
 +      <line ProductID="​FREESAMPLE"​ Quantity="​1"​ UnitPriceWoVAT="​0.00"/>​
 +    </​lines>​
 +</​invoice>'​
 +XML;
 +
 + 
 +$ch = curl_init();​
 + 
 +curl_setopt($ch,​ CURLOPT_HEADER,​ 0);
 +curl_setopt($ch,​ CURLOPT_RETURNTRANSFER,​ true);
 +curl_setopt($ch,​ CURLOPT_FOLLOWLOCATION,​ true);
 +curl_setopt($ch,​ CURLOPT_URL,​ $url );
 +curl_setopt($ch,​ CURLOPT_POST,​ 1);
 +curl_setopt($ch,​ CURLOPT_POSTFIELDS,​ '​key='​.urlencode($key).'&​xmldata='​.urlencode($xmldata).'&​put=1&​what=invoice'​ );
 +
 +$result = curl_exec($ch);​
 +curl_close($ch);​
 + 
 +echo '<​pre>';​
 + 
 +print '</​pre><​textarea cols=80 rows=10>'​ . $result . '</​textarea>';​
 +
 </​code>​ </​code>​
lt/xmlcore.txt · Keista: 2023/09/15 15:27 vartotojo jaroslav