Első lepésben jelentkezzünk be a szerverre, és kezdeményezzük a kívánt funkciót.
Kulcs | Lehetséges érteké/példa alapján | típusa | Leírás | ||||
dok | rendeles_xml_felulet | szöveg | Jelen esetben a kívánt funkció a dok kulcs rendeles_xml_felulet | ||||
token | szöveg | Egy userhez tartozó tokent jelenti | |||||
lang | HU | szöveg | A rendszer nyelve | ||||
tetel_mezok | 2 | szám | A rendelésen szereplő tételek száma, ennyi tétel sablont fog a rendszer a válasz XML-be generálni. Ez a folyamat közben változtatható |
Példa:
http://.../cgi-bin/index.cgi?xml''<?xml version''"1.0" encoding''"UTF-8"?> <esystem><click><data><record><field><name>dok</name><value>rendeles_xml_felulet</value></field> <field><name>token</name><value>Ez a token helye</value></field><field><name>lang</name><value>HU</value></field> <field><name>tetel_mezok</name><value>2</value></field></record></data></click></esystem>
<?xml version''"1.0" encoding''"UTF-8"?> <esystem> <frame> <framename>main</framename> <choice> <choicename>form</choicename> <click> <session> <record> ... <field> <name>formb</name> <value>rendeles_xml_felulet</value> </field> </record> </session> <data> <record> <field> <name>partner_id</name> <value></value> <metadata> <type>num</type> <human> <help>Partner ID</help> <label>Partner ID</label> </human> </metadata> </field> <field> <name>tetel_mezok</name> <value>2</value> <metadata> <type>hidden</type> </metadata> </field> ..... <field> <name>tetel_megj_2</name> <value></value> <metadata> <type>text</type> <human> <label>Tetel netto</label> </human> </metadata> </field> <field> <name>button</name> <value></value> <metadata> <type>submit</type> <check> <options>b_felvesz</options> <options>b_eldob</options> </check> </metadata> </field> </record> </data> </click> </choice> <choice> <choicename>back</choicename> ... </choice> <choice> <choicename>DEV_Frissít</choicename> <click> ... </click> </choice> <info_message> </info_message> </frame> </esystem>
Kulcs | típus | Leírás | |||
oid | num | nem használt mező, értekét nem kell változtatni | |||
partner_id | szám | A partner id-je akihez a rendelés tartozik | |||
szallitasi_hatarido | dátum | ||||
rendelesi_hivatkozas | szöveg | ||||
megjegyzes | szöveg | A rendelés megjegyzés mezője | |||
tetel_mezok | szám | a rendelés tételeinek a száma | |||
tetel_tipusa_$i | szöveg(termék/szolgáltatás) | a tétel típusa | |||
tetel_cikkszam_$i | szöveg | tétetel cikkszáma | |||
tetel_menny_$i | szám | ||||
tetel_netto_$i | szám | ||||
tetel_megj_$i | szöveg |
a $i valtozo [1..tetel_mezok] intervallum elemeit veszi fel. …
<?xml version''"1.0" encoding''"UTF-8"?><esystem> <click> ...... <data> <record> <field> <name>oid</name> <value></value> <metadata> <type>hidden</type> <human> <help>oid</help> <label>oid</label> </human> </metadata> </field> <field> <name>partner_id</name> <value>1</value> <metadata> <type>num</type> <human> <help>Partner ID</help> <label>Partner ID</label> </human> </metadata> </field> ...... <field> <name>tetel_mezok</name> <value>2</value> <metadata> <type>hidden</type> </metadata> </field> <field> <name>tetel_tipusa_1</name> <value>termék</value> <metadata> <type>select</type> <check> <options></options> <options>szolgáltatás</options> </check> <human> <label>Tetel tipus</label> </human> </metadata> </field> <field> <name>tetel_cikkszam_1</name> <value>termek1</value> <metadata> <type>text</type> <human> <label>Tetel cikkszáma</label> </human> </metadata> </field> <field> <name>tetel_menny_1</name> <value>3</value> <metadata> <type>num</type> <human> <label>Tetel menny</label> </human> </metadata> </field> <field> <name>tetel_netto_1</name> <value>300</value> <metadata> <type>num</type> <human> <label>Tetel netto</label> </human> </metadata> </field> <field> <name>tetel_megj_1</name> <value>megj1</value> <metadata> <type>text</type> <human> <label>Tetel netto</label> </human> </metadata> </field> ...... <field> <name>button</name> <value>b_felvesz</value> <metadata> <type>submit</type> <check> <options>b_felvesz</options> <options>b_eldob</options> </check> </metadata> </field> </record> </data> </click></esystem>
<?xml version''"1.0" encoding''"UTF-8"?> <esystem> <frame> <framename>main</framename> <choice> <choicename>form</choicename> <click> .... </click> </choice> .... <info_message> <msg> <level>Info</level> <time>2011.03.30 13:54:02</time> <message>Rendelés rögzítve</message> </msg> </info_message> </frame> </esystem>
A példa kód feltételezi a termek1 cikszámú terméket és a szolg1 cikkszámú szolgáltatás meglétét.
<?php ini_set("error_reporting",E_ALL); function esystem_catch_choice_click ($text,$choice_name){ if (preg_match("/<choice>\s*<choicename>$choice_name<\/choicename>(\s*<click>.*?<\/click>)\s*<\/choice>/s", "$text", $matches)) { return $matches[1]; } else { die ('nem talalom a choice-t'); } }; function esystem_change_field_value ($text,$field_name,$value){//TODO:fel van tetelezve, hogy elol van a name, es utanna a value! $count = 0; $new_text = preg_replace("/(<field>.*?<name>$field_name<\/name>.*?<value>).*?(<\/value>.*?<\/field>)/s",'${1}'.$value.'${2}', $text,'-1',$count); if ($count == 1) { return $new_text; } else { die ('talalatok szam('.$count.') != 1 a fieldet:'.$field_name); } }; function esystem_xml_communication ($url,$fields) { $head = urlencode('<?xml version="1.0" encoding="UTF-8"?><esystem><click><data><record>'); $tail = urlencode('</record></data></click></esystem>'); $head_nc = '<?xml version="1.0" encoding="UTF-8"?><esystem><click><data><record>'; $tail_nc = '</record></data></click></esystem>'; print "A server fele kuldeno adatok:\n"; var_dump($fields); $text = $head; $text_nc = $head_nc; foreach($fields as $key=>$value) { $text.='<field><name>'.urlencode($key).'</name><value>'.urlencode($value).'</value></field>'; $text_nc.='<field><name>'.$key.'</name><value>'.$value.'</value></field>'; } $text .= $tail; $text_nc .= $tail_nc; print "\nA server fele kuldott get keres (url encodolatlanul):\n".$url.'?xml='.$text_nc."\n\n"; $contents = file_get_contents($url.'?xml='.$text); print "\nA server felol kapott valasz\n".$contents."\n\n"; return $contents; } function esystem_xml_send_text ($url,$text) { $head = '<?xml version="1.0" encoding="UTF-8"?><esystem>'; $tail = '</esystem>'; $text = $head.$text.$tail; print "A server fele xml kuldes: ".$text."\n\n"; # print "send:\n".$text."\n\n\n"; $postdata = http_build_query( array( 'xml' => $text, ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); print "\nA server felol kapott valasz:\n".$result."\n\n"; return $result; } $url = 'http://.../cgi-bin/index.cgi'; $fields = array( 'dok'=>'rendeles_xml_felulet', 'token'=>'A token helye', 'lang'=>'HU', 'tetel_mezok'=>'2', ); $result = esystem_xml_communication($url,$fields); # print $result; $click = esystem_catch_choice_click($result,'form'); $click = esystem_change_field_value($click,'partner_id',1); $click = esystem_change_field_value($click,'szallitasi_hatarido','2010-01-02'); $click = esystem_change_field_value($click,'rendelesi_hivatkozas','renles0001'); $click = esystem_change_field_value($click,'megjegyzes','XML test'); $click = esystem_change_field_value($click,'tetel_mezok','2'); $click = esystem_change_field_value($click,'tetel_tipusa_1','termék'); $click = esystem_change_field_value($click,'tetel_cikkszam_1','termek1'); $click = esystem_change_field_value($click,'tetel_menny_1','3'); $click = esystem_change_field_value($click,'tetel_netto_1','300'); $click = esystem_change_field_value($click,'tetel_megj_1','megj1'); $click = esystem_change_field_value($click,'tetel_tipusa_2','szolgáltatás'); $click = esystem_change_field_value($click,'tetel_cikkszam_2','szolg1'); $click = esystem_change_field_value($click,'tetel_menny_2','4'); $click = esystem_change_field_value($click,'tetel_netto_2','500'); $click = esystem_change_field_value($click,'tetel_megj_2','tetel megj'); $click = esystem_change_field_value($click,'button','b_felvesz'); $result = esystem_xml_send_text($url,$click); # print $result; ?>
– Main.SzaboAmbrus - 2011-03-30