Forum » Programiranje » eTurizem in PHP
eTurizem in PHP
MUC ::
Ne gre mi testna vzpostavitev povezave PHPja z eTurizmom. Prenesel sem testen cert in naredil en testen XML za oddajo gosta:
Tukaj imam testno PHP skriptico:
V skripti oddam XML kot string (kar ni čisto po navodilih, kjer hočejo XML - navodila) in dobim odgovor AJPESA:
Če pa nekoliko spremenim skripto in XML spremenim v DOM oziroma objekt, pa dobim exception: SOAP-ERROR: Encoding: object has no 'any' property"
Tukaj spodaj pastam C# kodo, ki jo navajajo kot primer. Kakšna ideja v čem je težava? Hvala
<?xml version="1.0" encoding="UTF-8"?> <knjigaGostov> <row idNO="0" zst="14" ime="Grace" pri="Fraser" sp="F" dtRoj="1985-11-26" drzava="SE" vrstaDok="H" idStDok="132F20F6-73E" casPrihoda="2018-02-18T08:05:00" casOdhoda="2018-02-22T23:26:00" ttObracun="12" ttVisina="0.246" status="1"/> </knjigaGostov>
Tukaj imam testno PHP skriptico:
$wsdl = "https://wwwt.ajpes.si/rno/rnoApi/eTurizem/wsETurizemPorocanje.asmx?WSDL"; $init = array( "local_cert" => p12ToPem(__DIR__ . '/eTurizem_test.p12'), "trace" => true, "exception" => true, "cache_wsdl" => WSDL_CACHE_NONE ); try { $soapClient = new SoapClient($wsdl, $init); $file = __DIR__ . '/knjigaGostov.xml'; $xml = file_get_contents($file); $parameters = array( "uName" => $ajpes_username, "pwd" => $ajpes_password, "data" => $xml, "format" => 1 ); $result = $soapClient->__soapCall("oddajPorocilo", array("parameters" => $parameters)); var_dump($result); } catch(Exception $e) { var_dump($e); }
V skripti oddam XML kot string (kar ni čisto po navodilih, kjer hočejo XML - navodila) in dobim odgovor AJPESA:
<data packageGuid="-1" time=18.2.2018 19:35:36 success="0" failure="-1" failureRows="-1" source="Invalid XML root" />
Če pa nekoliko spremenim skripto in XML spremenim v DOM oziroma objekt, pa dobim exception: SOAP-ERROR: Encoding: object has no 'any' property"
Tukaj spodaj pastam C# kodo, ki jo navajajo kot primer. Kakšna ideja v čem je težava? Hvala
using System; using System.Security.Cryptography.X509Certificates; using System.Xml; namespace apiTest { public partial class index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string rsp = ""; try { //pridobi KDP (certifikat) String path = Server.MapPath("test.p12"); X509Certificate Cert = new X509Certificate(); //import KDP Cert.Import(path); string userName = "apiTest"; //vaše uporabniško ime (enako kot za AJPES portal) string pwd = "Test123!"; // vaše geslo (enako kot za AJPES portal) //pridobi XML dokument s podatki (dnevnega ali mesečnega poročila) XmlDocument doc = new XmlDocument(); path = Server.MapPath("testniPodatki_knjigaGostov.xml"); doc.Load(path); int format = 1; //format poročila o prenosu podatkov (1 = XML, 2 ? JSON) //create SOAP client using VSDL imported via Web References and add your certificate var client = new apiTest.serviceTest.rno(); client.ClientCertificates.Add(Cert); //servis lahko vrne tudi šifrante ... //seznam držav //doc.LoadXml("<sifDrzave/>"); //časovne omejitve za mesečno poročanje //doc.LoadXml("<mrLimits/>"); //turistične takse //doc.LoadXml("<sifTT/>"); //vrste dokumentov //doc.LoadXml("<sifDokId/>"); //seznam napak //doc.LoadXml("<sifNapake/>"); //status mesečnega poročanja //doc.LoadXml("<statusPor/>"); //validacijska shema za poročanje iz knjige gostov //doc.LoadXml("<knjigaGostovSchema/>"); //validacijska shema za mesečno poročanje //doc.LoadXml("<knjigaGostovMesecnoPorociloSchema/>"); //poročilo za že posredovane podatke //doc.LoadXml("<packageGuid>RequiredPackageGuid</packageGuid>"); //stringG = "yourPackegeGuid" //rsp = client.oddajPorocilo(userName, pwd, doc, stringG, format); //pošlji podatke in prevzami poročilo o prenosu rsp = client.oddajPorocilo( userName, pwd, doc, format); } catch (Exception ex) { rsp = ex.Message.ToString(); } txtXml.Text = rsp.Replace("<", Environment.NewLine + "<"); } } }
tadejkan ::
Tudi sam sem imel precej težav, ampak v Javi, zato ti s točno kodo ne morem pomagati :/
Težava je, da oni hočejo XML v podatkih, kar je malo čudno (ok, celoten SOAP je itak čuden), hkrati pa so precej občutljivi na to, kaj dobijo.
Najboljše je, da si s pomočjo http://php.net/manual/en/soapclient.get... izpišeš kaj točno si poslal tja.
Da zadeva deluje, mora request izgledati takole:
Pri meni sta se pojavljali dve težavi:
- če sam dal kot string (kar bi bilo precej enostavno), mi je seveda
- če sam dal kot XML, mi je zraven rinilo namespace in mi je zgeneriralo nekaj v smislu
To se mi sliši, da bi bila pravilna rešitev, ampak težko rečem 100%.
Mogoče poglej https://stackoverflow.com/questions/187..., omenjajo XSD_ANYXML.
Težava je, da oni hočejo XML v podatkih, kar je malo čudno (ok, celoten SOAP je itak čuden), hkrati pa so precej občutljivi na to, kaj dobijo.
Najboljše je, da si s pomočjo http://php.net/manual/en/soapclient.get... izpišeš kaj točno si poslal tja.
Da zadeva deluje, mora request izgledati takole:
<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:oddajPorocilo xmlns:ns2="http://www.ajpes.si/eturizem/"><ns2:uName>apiTest</ns2:uName><ns2:pwd>Test123!</ns2:pwd><ns2:data><knjigaGostov><row idNO="0" zst="14" ime="Grace" pri="Fraser" sp="F" dtRoj="1985-11-26" drzava="SE" vrsta...
Pri meni sta se pojavljali dve težavi:
- če sam dal kot string (kar bi bilo precej enostavno), mi je seveda
<knjigaGostov>... escapalo, kar ni bilo kul,
- če sam dal kot XML, mi je zraven rinilo namespace in mi je zgeneriralo nekaj v smislu
<ns:knjigaGostov... kar spet ni bilo kul.
Če pa nekoliko spremenim skripto in XML spremenim v DOM oziroma objekt, pa dobim exception: SOAP-ERROR: Encoding: object has no 'any' property"
To se mi sliši, da bi bila pravilna rešitev, ampak težko rečem 100%.
Mogoče poglej https://stackoverflow.com/questions/187..., omenjajo XSD_ANYXML.
MUC ::
Hvala, sem sedaj rešil preko tvojega XMLja.
Sem že prej hotel narest vse skupaj "ročno" in poslat kar skupen XML, ampak sem vztrajal, pa mi ne gre ..
Sedaj pošiljem ročno oblikovan XML preko curl in dobim uspešno potrditev... končno :)
Sem že prej hotel narest vse skupaj "ročno" in poslat kar skupen XML, ampak sem vztrajal, pa mi ne gre ..
Sedaj pošiljem ročno oblikovan XML preko curl in dobim uspešno potrditev... končno :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 319358 (59361) | Macketina |
» | E-računOddelek: Programiranje | 7097 (3860) | ivanhoe5x |
» | PHP davčna blagajnaOddelek: Programiranje | 7661 (5685) | brble |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3058 (1788) | peterv6i |
» | SMS iz linuxaOddelek: Pomoč in nasveti | 4577 (2133) | Apple |