Konfiguracja dostępu do modułów PrestaShop

Przed uruchomieniem pierwszej synchronizacji z danym sklepem PrestaShop należy stworzyć użytkownika PrestaShop WebService. W tym celu należy zalogować się do panelu administracyjnego sklepu PrestaShop i wykonać poniższe kroki konfiguracji. Jeśli takowa w części była wcześniej wykonywana należy odpowiednie elementy pominąć. Podana niżej instrukcja zawiera angielskie, oryginalne nazwy pół i akcji. Nie można tu podać polskich nazw ponieważ istnieje więcej niż jedna wersja tłumaczenia panelu administracyjnego PrestaShop. Wygląd ekranów stron administracji sklepu może się różnić od tu zaprezentowanego jeśli zainstalowany został inny temat graficzny. Opis został przygotowany w PrestaShop w wersji 1.5.2.0 i w innych wersjach może się nieznacznie różnić jednak zasada pozostanie podobna.

W menu [Advanced Parameters] => [Webservice] utworzyć dostęp do API PrestaShop. W wersji 1.4.6.0 PrestaShop opcja ta znajduje się w menu [Tools] => [Webservice].

Klikamy klawisz „Add new” znajdujący się nad listą i w nowym „okienku” podajemy niezbędne dane.

Jako „Key” podajemy wcześniej przygotowany ciąg znaków lub klikamy „Generate!” co spowoduje wpisanie losowego ciągu znaków. W polu „Key description” można podać dodatkowe dane identyfikujące dostęp. Ważne jest natomiast udostępnienie właściwie wszystkich zasobów takiemu użytkownikowi. Pozwoli to w przyszłości na wykonywanie większej ilości operacji przez plugin.

Pole „Status” powinno być zaznaczone jako aktywne/włączone.

I na zakończenie klikamy „Save”.

Od tego momentu za pomocą podanego klucza powinniśmy mieć dostęp do sklepu PrestaShop za pośrednictwem instalowanego dodatku do DGCS System.

Reguły Rewrite w .htaccess

Dostęp do API Prestashop wymaga właczonej obsługi „przepisywania” adresów Rewrite.

Aby prawidłowo obsługiwać identyfikacje na serwerze ze sklepem PrestaShop często konieczne jest dodanie reguły Rewrite do pliku .htaccess:

W wersji PrestaShop 1.4.11.0 konieczne było dodanie reguły:

RewriteRule ^api/?(.*)$ webservice/dispatcher.php?url=$1 [E=REMOTE_USER:%{HTTP:Authorization},QSA,L]

W innych testowanych wersjach wystarczało dodać regułę:

RewriteRule
.* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

A w niektórych takie:

RewriteRule ^api/?(.*)$
%{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1
[QSA,L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Obsługa błędów

W celu szybszej identyfikacji błędów z synchronizacją zaleca się włączenie ich wyświetlania po stronie PrestaShop. W domyślnej konfiguracji wyświetlanie błędów jest wyłączone i nie wiadomo co mogło być przyczyną wyjątkowej sytuacji.

Aby otrzymać opis błędu z PrestaShop należy w pliku „config/config.inc.php” (lub „config/defines.inc.php” w zależności od wersji sklepu PrestaShop) zmienić linię:

@ini_set('display_errors', 'off');

na

@ini_set('display_errors', 'on');

Fatal error: Allowed memory size of xxxx bytes exhausted

Na starcie synchronizacji produktów program pobiera listę identyfikatorów produktów, ich indeks, cenę oraz stan magazynowy aby potem błyskawicznie wyłuskać te, które wymagają aktualizacji.

Jeśli na początku synchronizacji produktów pojawia się błąd, który w treści zawiera „Allowed memory size of xxxx bytes exhausted” lub „Fatal error: Out of memory” czy zawiera coś podobnego do „… tried to allocate xxx bytes …” oznacza to, że po stronie serwera zabrakło pamięci na przygotowanie listy produktów znajdujących się w sklepie.

Aby zapobiec pojawianiu się tego wyjątku należy zwiększyć limit pamięci dostępnej dla procesora skryptów PHP na większą w konfiguracji PHP np:

memory_limit = 512M