Strana 1 z 1

Zmena stavu objednávky cez API

Napísané: 29. Aug 2017 8:34
od používateľa minos
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.

Re: Zmena stavu objednávky cez API

Napísané: 29. Aug 2017 12:24
od používateľa Martin80
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.

Re: Zmena stavu objednávky cez API

Napísané: 30. Aug 2017 7:53
od používateľa minos
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.

Re: Zmena stavu objednávky cez API

Napísané: 30. Aug 2017 12:58
od používateľa Martin80
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.

Re: Zmena stavu objednávky cez API

Napísané: 30. Aug 2017 19:55
od používateľa SelfMan
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.

Re: Zmena stavu objednávky cez API

Napísané: 31. Aug 2017 10:19
od používateľa minos
Ď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);
}

?>

Re: Zmena stavu objednávky cez API

Napísané: 01. Sep 2017 23:34
od používateľa SelfMan
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.

Re: Zmena stavu objednávky cez API

Napísané: 19. Sep 2017 12:31
od používateľa minos
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.

Re: Zmena stavu objednávky cez API

Napísané: 19. Sep 2017 23:59
od používateľa SelfMan
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.