Zmena stavu objednávky cez API

Ostatné technické problémy.

Zmena stavu objednávky cez API

Poslaťod minos » 29. Aug 2017 8:34

Dobrý deň, mám opencart 2.3.0.2. Ďalej mám externý fakturačný systém. Objednávky z opencartu sa exportuju do fa systému(cez xml). Avšak by som potreboval, aby keď zmením stav objednávky, tak zmenilo stav objednávky aj v opencarte. Vygeneroval som si nový api kľúč. SKúšal som tento návod:
Kód: Vybrať všetko
https://webkul.com/blog/use-opencarts-rest-api/
prihlásiť sa mi podari, aj v admin api kľúči vidím priradený token. Ale neviem urobiť aby mi to zmenilo stav objednávky. Ďakujem.
minos
 
Príspevky: 4
Registrovaný: 14. Apr 2015 12:47
Verzia OpenCartu: 2.02

Re: Zmena stavu objednávky cez API

Poslaťod Martin80 » 29. Aug 2017 12:24

Ak tomu dobre rozumiem, stav objednávky meníš v tom fakturačnom systéme a túto zmenu chceš preniesť do OC? O ktorý fa systém ide? Mal by si nahliadnuť do ich API či je takáto možnosť vôbec k dispozícii. Pri niektorých je prenes objednávok jednosmerný. S obojsmerným pri objednávkach som sa zatiaľ nestretol, ale tak samozrejme, nemám ich naštudované všetky.
Martin80
 
Príspevky: 58
Registrovaný: 30. Jan 2017 12:03
Verzia OpenCartu: 2.3.0.2

Re: Zmena stavu objednávky cez API

Poslaťod minos » 30. Aug 2017 7:53

No fa system mám vlastný a viem do neho vložiť hocijaký php kód. Ide o to, že externým php kódom neviem zmeniť stav objednávok v OC.
minos
 
Príspevky: 4
Registrovaný: 14. Apr 2015 12:47
Verzia OpenCartu: 2.02

Re: Zmena stavu objednávky cez API

Poslaťod Martin80 » 30. Aug 2017 12:58

Aha.
No mohol by si poskytnúť i viac detailov o logike ktorú si naprogramoval. Lebo namojdušu neviem či máš problém typu 'nejde mi to' alebo typu 'ako na to'.
V tom prvom prípade Ti viac informácií v OC dá chybový protokol no a vo vlastnom fa systéme nejaký debugovací nástroj, povedzme aj obyčajný print_r(). Postupne vykrokuješ kým neodhalíš chybu.
V to druhom prípade je to len jedna z možností, ale skús preskúmať. Požíva sa pri viacerých fakturačných systémoch.
1) Vo svojom fakturačnom systéme naprogramuješ funkciu/metódu, ktorá môže prijímať voliteľne parametre, napríklad id objednávok
2) Výstup z tejto metódy bude json s dátami aké potrebuješ
3) Táto metóda bude verejne dostupná cez url, bude to vlastne API tvojho fakturačného systému.
4) Pristupuješ k nej zväčša vo svojom OC cez Curl
5) V oc si naprogramuješ nejaký triger, ktorý bude spúšťať túto adresu, na začiatok postačí aj button, neskôr naviažeš na čo sa ti bude hodiť.
6) Získané dáta použiješ na modifikáciu, napríklad stavu objednávok

Respektíve tak fušersky môžeš zadať 'tajnú' :) url, ktorá ti vyvolá tú metódu a tá ak má prístupové údaje k db pre oc, môže modifikovať čokoľvek. No ale to by potom mohol vykonávať úpravy ktokoľvek, však.

externým php kódom neviem zmeniť stav objednávok v OC

V tom prípade treba krokovať a nechať si vypisovať, kde nastane problém. Pripojenie k db, poskladanie query, odpoveď z db. Preveriť nastavenie DB oprávnení.

EDIT:
Ale to curl nie je samozrejme jediný možný prístup, ako si to naprogramuješ, tak to bude. Ale pre PHPčko je je to asi najlepšia voľba.
Martin80
 
Príspevky: 58
Registrovaný: 30. Jan 2017 12:03
Verzia OpenCartu: 2.3.0.2

Re: Zmena stavu objednávky cez API

Poslaťod SelfMan » 30. Aug 2017 19:55

Takze v prvom rade - vsetky controller-y a ich metody sa nachadzaju v adresari catalog/controller/api
tam najdes jednotlivesubory plniace tu ktoru funkciu.
Into k openCart API najdes tu https://isenselabs.com/posts/using-the- ... pencart-2x
Sice je to pisane pre API k verzii 2.0.1.1, ale princip je rovnaky.
Pokial si dostatocne zbehly v PHP, mozes si dopisat aj vlastne API funkcie, ktore ti ulahcia pracu.
Hoci je API osetrene kontrolou IP adresy, v mnohych pripadoch sa tieto bezpecnostne funkcie vypinaju, lebo nie kazdy ma staticku IP adresu. Preto kladiem doraz na zabezpecenie spojenia cez SSL protokol a limitovanim IP adries s pristupom na API.
SelfMan
Administrátor
 
Príspevky: 970
Registrovaný: 19. Aug 2011 23:55

Re: Zmena stavu objednávky cez API

Poslaťod minos » 31. Aug 2017 10:19

Ďakujem. Avšak keď to urobím ako vtom návode a použijem knižnicu opencart.php neprebehne mi prihlasenie, a print_r vracia chybu Undefined index: key in /catalog/controller/api/login.php on line 11. meno dam nazov apikluca a heslo dam apikluc. Včom môže byť problém? Ďakujem.
Ešte prikládam môj php subor:
Kód: Vybrať všetko
<?php
include 'opencart.php';

$oc = new OpenCart\OpenCart('domena.sk', 'cookiejar');
       //$order_id=1;

if ($oc->login('nazovapikluca','apikluc')) {
//   $oc->order->delete($order_id);
   
} else {
echo $oc->getLastError();

  print_r ($oc);
}

?>
minos
 
Príspevky: 4
Registrovaný: 14. Apr 2015 12:47
Verzia OpenCartu: 2.02

Re: Zmena stavu objednávky cez API

Poslaťod SelfMan » 01. Sep 2017 23:34

Toto by ti mohlo pomoct dalej
https://webocreation.com/blog/opencart- ... -developer

Pointa veci je, ze data na API musia byt odoslane cez POST metodu.
Neviem z coho z akej aplikacie to chces menit.
SelfMan
Administrátor
 
Príspevky: 970
Registrovaný: 19. Aug 2011 23:55

Re: Zmena stavu objednávky cez API

Poslaťod minos » 19. Sep 2017 12:31

Ten posledný odkaz mi funguje ale tým sa len prihlásim, neviem ako poslať ďalšiu požiadavku tak aby som ostal prihlásený. Meniť stav chcem z inej domény, kde je fa systém. Ten fa systém je vlastný takže do neho môžem vložiť hocijaký kód. Stále mi to nechce fungovať. Môžete mi poslať ukážku ako spojiť prihlásenie s ďalšou akciou (napr vymazať objednávku podla id, alebo zmeniť stav obj.). Ďakujem.
minos
 
Príspevky: 4
Registrovaný: 14. Apr 2015 12:47
Verzia OpenCartu: 2.02

Re: Zmena stavu objednávky cez API

Poslaťod SelfMan » 19. Sep 2017 23:59

V $response premennej je ulozena odpoved zo servera. Jeden z parametrov by malo byt aj Cookie a v nom session ID.
Tento parameter je potrebne taktiez odoslat pri dalsom POST request-e.
Nahod si do Crome "Advanced REST client" a mozes sa hrat s odosielanim requestov.
SelfMan
Administrátor
 
Príspevky: 970
Registrovaný: 19. Aug 2011 23:55


Späť na Všeobecná podpora

Kto je on-line

Užívatelia prezerajúci fórum: Google [Bot] a 2 hostia

cron