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 [2020/10/02 08:33] – [Praktiline näide - artiklite väljund] ott | et:xmlcore [2024/04/16 09:19] (Hetkel kehtiv) – [Andmete pärimine Directost ehk väljund] toomas | ||
---|---|---|---|
Rida 1: | Rida 1: | ||
======XML andmevahetusliidese üldine kirjeldus====== | ======XML andmevahetusliidese üldine kirjeldus====== | ||
=====Üldine===== | =====Üldine===== | ||
- | Iga Directo baasi külge saab soovi korral häälestada andmevahetusliidese, | + | Iga Directo baasi külge saab soovi korral häälestada andmevahetusliidese, |
Sõltumata konkreetse liidestusprojekti spetsiifikast on teatud printsiibid, | Sõltumata konkreetse liidestusprojekti spetsiifikast on teatud printsiibid, | ||
Rida 8: | Rida 8: | ||
* 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 38: | ||
* 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 49: | ||
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:// | + | < |
+ | curl --location 'https:// | ||
+ | --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:// | + | < |
+ | curl --location 'https:// | ||
+ | --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 130: | ||
* '' | * '' | ||
- | ===Praktiline näide - müügiarvete sisend=== | + | Sisendliideses tuleb XML postitata aadressile: |
- | Seda tüüpi sisendit kasutatakse näiteks | + | https:// |
+ | POST muutujatega „put=1“, „key=[appkey väärtus]“, | ||
+ | Sisend xml peab vastama skeemile. | ||
+ | Palun vältida tühja sisuga väljade saatmist | ||
- | <wrap important> | + | ===Praktiline näide=== |
+ | Seda tüüpi sisendit kasutatakse näiteks sellisel puhul, kui mingis välises süsteemis genereeritakse müügi tellimusi, mida on vaja Directos kajastada. Lisaks on ka Klientide skeemi kirjeldus | ||
- | Oletame, et liidese URL on antud juhul https:// | + | <wrap important> |
- | Andmeid kirjeldab | + | ==Müügitellimuse sisend liides:== |
+ | Andmeid kirjeldab | ||
- | Schemale | + | Skeemile |
<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 160: | ||
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 170: | ||
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 204: | ||
===Väljund=== | ===Väljund=== | ||
<code php> | <code php> | ||
- | $url = ' | ||
+ | $url = ' | ||
+ | $key = ' | ||
$ch = curl_init(); | $ch = curl_init(); | ||
curl_setopt($ch, | curl_setopt($ch, | ||
Rida 118: | Rida 212: | ||
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 129: | Rida 224: | ||
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 141: | Rida 237: | ||
===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, | ||
Rida 159: | Rida 260: | ||
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.1601616794.txt.gz · Viimati muutnud: 2020/10/02 08:33 persoon ott