et:xmlcore
Erinevused
Siin näed erinevusi valitud versiooni ja hetkel kehtiva lehekülje vahel.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:xmlcore [2015/08/26 09:38] – ott | et:xmlcore [2025/09/02 09:03] (Hetkel kehtiv) – [Üldine] toomas | ||
|---|---|---|---|
| Rida 1: | Rida 1: | ||
| ======XML andmevahetusliidese üldine kirjeldus====== | ======XML andmevahetusliidese üldine kirjeldus====== | ||
| =====Üldine===== | =====Üldine===== | ||
| - | Iga Directo | + | Directo |
| + | Oluline on arvestada, et liidesed ei kuulu vaikimisi | ||
| + | |||
| + | Liidese | ||
| + | |||
| + | Directo pakub lisaks kliendipõhistele lahendustele ka mitmeid **valmisliideseid**, | ||
| + | |||
| + | * **[[et: | ||
| + | * **[[et: | ||
| + | * **[[et: | ||
| + | * **[[et: | ||
| + | |||
| + | Lisaks on saadaval veel teisigi valmisliideseid, | ||
| + | |||
| + | **Millal kasutada valmisliideseid ja millal kliendipõhiseid lahendusi? | ||
| + | |||
| + | **Valmisliidesed** sobivad hästi olukorras, kus: | ||
| + | * äriprotsess vastab juba olemasoleva lahenduse loogikale; | ||
| + | * soovitakse kiiret kasutuselevõttu ilma eriarendusteta; | ||
| + | * oluline on kuluefektiivsus ja standardlahenduse stabiilsus. | ||
| + | |||
| + | **Kliendipõhised** liidesed sobivad juhul, kui: | ||
| + | * ettevõttel on spetsiifilised tööprotsessid või unikaalsed andmevahetuse nõuded; | ||
| + | * standardlahendus ei kata kõiki vajalikke andmetüüpe või töövooge; | ||
| + | * on vaja siduda Directo väga eripäraste või majasiseste süsteemidega. | ||
| + | |||
| + | Sageli on praktiline lähenemine kombineeritud — kasutada olemasolevat valmisliidest standardsete funktsioonide jaoks ning täiendada seda kliendile kohandatud arendustega, | ||
| Sõltumata konkreetse liidestusprojekti spetsiifikast on teatud printsiibid, | Sõltumata konkreetse liidestusprojekti spetsiifikast on teatud printsiibid, | ||
| Rida 8: | Rida 34: | ||
| * Andmete kodeering on UTF-8 | * Andmete kodeering on UTF-8 | ||
| * Transpordiprotokoll on HTTPS (avalikult tunnustatud sertifikaadiga) | * Transpordiprotokoll on HTTPS (avalikult tunnustatud sertifikaadiga) | ||
| - | * Andmete pärimisel kasutatakse GET meetodit | + | * Liidesele ligipääsuks |
| - | * Andmete postitamisel | + | |
| * Andmeliikluse algatab alati väline osapool sõltumata sellest, kas andmeid päritakse või saadetakse, Directo liides on passiivne | * Andmeliikluse algatab alati väline osapool sõltumata sellest, kas andmeid päritakse või saadetakse, Directo liides on passiivne | ||
| * POST päringule vastab liides sünkroonse XML sõnumiga, mille töötlemine võib protsessi edukuse huvides oluline olla | * POST päringule vastab liides sünkroonse XML sõnumiga, mille töötlemine võib protsessi edukuse huvides oluline olla | ||
| * Andmete struktuur peab olema kirjeldatav XSD schemana, võimaluse korral eelistada schemat, kus väärtuste kandjaks on atribuudid, mitte elemendid | * Andmete struktuur peab olema kirjeldatav XSD schemana, võimaluse korral eelistada schemat, kus väärtuste kandjaks on atribuudid, mitte elemendid | ||
| + | * Dokumendi numbrid Directos on //integer// tüüpi, mis tähendab, et suurim võimalik number on // | ||
| + | * Üks XML liidese postitus ei tohi olla suurem kui 10Mb | ||
| + | |||
| + | =====Liidestele ligipääs===== | ||
| + | |||
| + | Liidesele ligipääs käib POST meetodil, form/ | ||
| + | Ligipääsu tagamiseks tuleb kasutada appkey' | ||
| + | Appkey tuleb POST meetodil muutujas KEY (sarnaselt siis html vormi postitamisele) | ||
| + | |||
| + | Näide | ||
| + | < | ||
| + | curl --location ' | ||
| + | --header ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | </ | ||
| =====Näited===== | =====Näited===== | ||
| Rida 21: | Rida 64: | ||
| * Vastussõnumid | * Vastussõnumid | ||
| * Võtmed | * Võtmed | ||
| + | |||
| + | Testimiseks kasutage seda vormi: https:// | ||
| ====Andmete pärimine Directost ehk väljund==== | ====Andmete pärimine Directost ehk väljund==== | ||
| - | GET päringu korral on alati täidetud vähemalt kolm parameetrit: | + | Andmete pärimine käib POST meetodil |
| * '' | * '' | ||
| * '' | * '' | ||
| Rida 30: | Rida 75: | ||
| ja võimalikud lisaparameetrid. Kasutusel olevad andmeliikide verbid, võtme väärtused ja andmeliigipõhised lisaparameetrid lepitakse kokku iga konkreetse installatsiooni käigus. | ja võimalikud lisaparameetrid. Kasutusel olevad andmeliikide verbid, võtme väärtused ja andmeliigipõhised lisaparameetrid lepitakse kokku iga konkreetse installatsiooni käigus. | ||
| + | XML’ist jäetakse alati välja koos nimega sellised väljad, mille sisu baasis on NULL (tühi). | ||
| - | ===Praktiline näide | + | |
| - | Seda tüüpi | + | |
| + | ===Praktiline näide=== | ||
| + | Seda tüüpi | ||
| <wrap important> | <wrap important> | ||
| - | Antud näiteks kasutatakse verbi '' | + | ==Artiklite väljund: |
| + | Antud näiteks kasutatakse verbi '' | ||
| + | Kõik filtrid on võimalikud, | ||
| + | " | ||
| + | Artiklite | ||
| + | |||
| + | Artklite päring muudatuste kohta (ts=Time stamp): | ||
| + | < | ||
| + | curl --location ' | ||
| + | --header ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | </ | ||
| + | |||
| + | Aja filtris võib kasutada ka kellaaega sellisel kujul: & | ||
| Terve tootebaasi päring: | Terve tootebaasi päring: | ||
| - | https://directo.gate.ee/ | + | < |
| + | curl --location 'https://login.directo.ee/ | ||
| + | --header ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode 'get=1' \ | ||
| + | --data-urlencode 'what=item' \ | ||
| + | </ | ||
| Üksiku toote päring, toote koodi järgi, lisaparameeter '' | Üksiku toote päring, toote koodi järgi, lisaparameeter '' | ||
| - | https://directo.gate.ee/ | + | < |
| + | curl --location 'https://login.directo.ee/ | ||
| + | --header ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode 'get=1' \ | ||
| + | --data-urlencode 'what=item' \ | ||
| + | --data-urlencode 'code=0000' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==Klientide väljund: | ||
| + | < | ||
| + | curl --location ' | ||
| + | --header ' | ||
| + | --data-urlencode 'key=2852DD553B767B463C807ADB36B5BB2F' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | Näidis filtrite võimalused: | ||
| + | Klientide struktuuri kirjeldav skeem: | ||
| + | |||
| + | ==Laoseisude väljund: | ||
| + | < | ||
| + | curl --location ' | ||
| + | --header ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | --data-urlencode ' | ||
| + | </ | ||
| + | |||
| + | Näidis filtrite võimalused:" | ||
| + | Laoseisude struktuuri kirjeldav skeem: | ||
| ====Andmete saatmine Directosse ehk sisend==== | ====Andmete saatmine Directosse ehk sisend==== | ||
| Rida 52: | Rida 156: | ||
| * '' | * '' | ||
| - | ===Praktiline näide | + | Sisendliideses tuleb XML postitata aadressile: |
| - | Seda tüüpi sisendit kasutatakse näiteks sellisel puhul, kui mingis välises süsteemis genereeritakse | + | https:// |
| + | POST muutujatega „put=1“, | ||
| + | Sisend xml peab vastama skeemile. | ||
| + | Palun vältida tühja sisuga väljade saatmist sellisel kujul: customer_code="" | ||
| + | |||
| + | ===Praktiline näide=== | ||
| + | Seda tüüpi sisendit kasutatakse näiteks sellisel puhul, kui mingis välises süsteemis genereeritakse | ||
| <wrap important> | <wrap important> | ||
| - | Oletame, et liidese URL on antud juhul https:// | + | ==Müügitellimuse sisend liides:== |
| + | Andmeid kirjeldab skeem [[https://login.directo.ee/ | ||
| - | Andmeid kirjeldab schema {{: | + | Skeemile |
| - | + | ||
| - | Schemale | + | |
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| - | <invoices> | + | <orders> |
| - | <invoice AppKey="1234567879012345678790" | + | <order number="1" |
| - | InvoiceDate="2015-06-07" | + | <rows> |
| - | <lines> | + | <row item="item1" |
| - | <line ProductID="KILLERPRODUCT" | + | <row item="item2" |
| - | <line ProductID="FREESAMPLE" | + | </rows> |
| - | </lines> | + | </order> |
| - | </invoice> | + | </orders> |
| - | </invoices> | + | |
| </ | </ | ||
| Rida 78: | Rida 186: | ||
| Postitusele vastab liides sünkroonse XML sõnumiga, kust saab teada, mis juhtus. | Postitusele vastab liides sünkroonse XML sõnumiga, kust saab teada, mis juhtus. | ||
| - | Näide, postitus oli edukas ja Directosse võeti vastu müügiarve | + | Näide, postitus oli edukas ja Directosse võeti vastu müügitellimuse |
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| < | < | ||
| - | <Result Type=" | + | <Result Type=" |
| </ | </ | ||
| </ | </ | ||
| Rida 88: | Rida 196: | ||
| Kui '' | Kui '' | ||
| - | Näide, | + | Näide, |
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| < | < | ||
| - | <Result Type=" | + | <Result Type=" |
| </ | </ | ||
| </ | </ | ||
| - | Ühest pakis võib olla korraga ka mitu arvet, igaühe kohta tuleb omaette '' | + | Ühest pakis võib olla korraga ka mitu tellimust, igaühe kohta tuleb omaette '' |
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| < | < | ||
| - | <Result Type=" | + | <Result Type=" |
| - | <Result Type=" | + | <Result Type=" |
| </ | </ | ||
| </ | </ | ||
| Vastussõnumi töötlemine on oluline, juhul kui pole õnnestunud saada edukat vastuvõttu tähistavat sõnumit, tuleb saatmine ebaedukaks lugeda ja mingi intervalli järel (mitte vähem kui 60s) uuesti proovida. | Vastussõnumi töötlemine on oluline, juhul kui pole õnnestunud saada edukat vastuvõttu tähistavat sõnumit, tuleb saatmine ebaedukaks lugeda ja mingi intervalli järel (mitte vähem kui 60s) uuesti proovida. | ||
| + | |||
| + | ==Klientide sisend liides:== | ||
| + | Andmeid kirjeldab skeem [[https:// | ||
| + | Skeemile vastav, aga sugugi mitte kõiki võimalikke atribuute kasutab XML võib välja näha näiteks selline: | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| Rida 111: | Rida 230: | ||
| ===Väljund=== | ===Väljund=== | ||
| <code php> | <code php> | ||
| - | $url = ' | ||
| + | $url = ' | ||
| + | $key = ' | ||
| $ch = curl_init(); | $ch = curl_init(); | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| + | curl_setopt($ch, | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| - | curl_setopt($ch, | + | curl_setopt($ch, |
| + | curl_setopt($ch, | ||
| $result = curl_exec($ch); | $result = curl_exec($ch); | ||
| Rida 128: | Rida 250: | ||
| print '< | print '< | ||
| - | + | print_r($data); | |
| - | foreach ($data->items->item as $item) { | + | foreach ($data-> |
| - | print $item[' | + | print |
| foreach ($item-> | foreach ($item-> | ||
| print chr(9) . $df[' | print chr(9) . $df[' | ||
| } | } | ||
| } | } | ||
| + | |||
| </ | </ | ||
| Rida 140: | Rida 263: | ||
| ===Sisend=== | ===Sisend=== | ||
| <code php> | <code php> | ||
| + | $url = ' | ||
| + | $key = ' | ||
| - | $xmldata = '<' | + | $xmldata = <<< |
| - | <invoice AppKey="1234567879012345678790" | + | <?xml version=" |
| - | InvoiceDate="2015-06-07" | + | <items> |
| - | <lines> | + | <item code="LMP0001" |
| - | <line ProductID="KILLERPRODUCT" | + | <datafields> |
| - | <line ProductID="FREESAMPLE" | + | <data code="ART_VARV" |
| - | </lines> | + | <data code="VEEBIS" |
| - | </invoice>'; | + | </datafields> |
| + | </item> | ||
| + | </ | ||
| + | XML; | ||
| - | $url = ' | ||
| $ch = curl_init(); | $ch = curl_init(); | ||
| + | |||
| curl_setopt($ch, | curl_setopt($ch, | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| + | curl_setopt($ch, | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| curl_setopt($ch, | curl_setopt($ch, | ||
| + | curl_setopt($ch, | ||
| - | curl_setopt($ch, | ||
| $result = curl_exec($ch); | $result = curl_exec($ch); | ||
| + | curl_close($ch); | ||
| - | print '<textarea cols=80 rows=10>' | + | echo '<pre>'; |
| - | curl_close($ch); | + | print '</ |
| </ | </ | ||
| + | |||
| + | ===Postman=== | ||
| + | Väljund ja Sisend [[https:// | ||
| + | {{: | ||
| + | |||
et/xmlcore.1440571104.txt.gz · Viimati muutnud: 2015/08/26 09:38 persoon ott