Przygotowane przez nas rozwiązanie pozwala na bazową integrację zamówień wystawianych w systemie Baselinker z systemem Optimes
Aktualnie aplikacja obsługuje następujący proces:
Rozwiązanie pozwala a podstawową integrację między systemami i może być dowolnie dostosowane do potrzeb klienta.
Poniżej zamieszamy krótką instrukcję jak skonfigurować rozwiązanie.
Pierwszym krokiem w konfiguracji jest uzupełnienie danych do połączenia z bazą danych. Parametry połączeniowe znajdują się w pliku .env
Definicje zmiennych:
INTEGRATOR_DATABASE_USER => Nazwa użytkownika do połączenia do bazy danych
INTEGRATOR_DATABASE_PASS => Hasło do bazy danych
INTEGRATOR_DATABASE_LINK => Adres do serwera mysql
INTEGRATOR_DATABASE_NAME => Nazwa bazy danych
Następnie konfigurujemy parametry integratora w pliku: config/services.yaml
Definicje zmiennych:
baselinkerApiKey => klucz API do systemu baselinkera
baselinkerOrderStatusToImport => id statusu zamówienia z baselinkera, które mają być przesłane do optimesa.
baselinkerOrderStatusToSend => id statusu zamówienia z baselinkera, który ma być ustawiony podczas aktualizacji zamówienia w Baselinkerze
optimesApiKey => Klucz API z systemu Optimes
optimesApiToken => Token bezpieczeństwa systemu Optimes
optimesOrderStatus => id statusu zamówienia, który ma być ustawiony w zamówieniu, które zostało zaimportowane do optimesa.
optimesOrderAttributeDeliveryMethod => id atrybutu w Optimesie dot. metody dostawy
optimesOrderAttributeDeliveryPrice => id atrybutu w Optimesie dot. ceny dostawy
optimesOrderAttributePaymentMethod => id atrybutu w Optimesie dot. metody płatności
optimesOrderAttributeAdditionalField1 => id atrybutu w Optimesie dot. dodatkowe pole 1
optimesOrderAttributeAdditionalField2 => id atrybutu w Optimesie dot. dodatkowe pole 2
optimesOrderAttributeNote => id atrybutu w Optimesie dot. uwag
optimesCustomerAttributeLogin => id atrybutu w Optimesie dot. loginu Klienta
baselinkerApiLink => link do integracji API z bazelinkerem
optimesProductPost => link do integracji API z optimesem dot. Produktów
optimesOrderPost => link do integracji API z optimesem dot. Zamówień
optimesClientPost => link do integracji API z optimesem dot. Klientów
W systemie znajdują się dwa pliki dot mapowania parametrów:
config/vat.txt
oraz
config/currencies.txt
oba pliki mają strukturę: Wartość parametru;ID parametru w Optimes
a) instalujemy paczki z composera (wersja php7.1):
php composer.phar install
b) wykonujemy migrację:
bin/console doctrine:migrations:migrate
c) pobieramy wszystkie produkty z Optimesa do integratora:
bin/console rcc:product-integration:run
Połączenie z bazą danych:
Połączenie z bazą danych jest niezbędne do prawidłowego działania integratora. Jest ona potrzebna do składowania danych dot. produktów oraz przesłanych zamówień. Bazę danych wraz z użytkownikiem można utworzyć w panelu administracyjnym serwera na którym zostanie zainstalowany integrator.
System Optimes:
OPTIMES_API_KEY – klucz ten znajdziemy logując się do naszej instancji systemu Optimes na następnie wchodząc w lewym menu w zakładkę Pracownicy.
Aby przy danym pracowniku można było wygenerować API KEY rola, którą posiada musi mieć włączone w ustawieniach Nadawanie kluczy API:
Następnie musimy wejść w edycję pracownika za pomocą, którego chcemy się łączyć z Fakturowani.pl lub utworzyć nowego.
W edycji wybranego pracownika wchodzimy w zakładkę Dodatkowe informacje po lewej stronie.
Kopiujemy wartość z pola Klucz API lub generujemy nowy.
OPTIMES_WEBHOOKTOKEN – ten ten znajdziemy logując się do naszej instancji systemu Optimes na następnie wchodząc w lewym menu w zakładkę Ustawienia a następnie w menu Webhooki.
W tym miejscu musimy wygenerować nowy webhook:
Nazwa – dowolna nazwa pozwalająca ocenić do czego służy dany webhook
Token bezpieczeństwa – tutaj wpisujemy ciąg znaków który stanowił będzie nasz token bezpieczeństwa
Adres wywołania – tutaj wpisujemy adres internetowy pod którym umieszczony zostanie nasz plik integracyjny np.: https://test.pl/integration
Źródło zdarzenia – tutaj wybieramy następujące typy:
Produkt – Usunięcie
Produkt – Aktualizacja
Produkt – Utworzenie
Zamówienie – Aktualizacja
Zapisujemy zmiany
optimesOrderStatus – statusy zamówień w optimesie można sprawdzić w widoku: Ustawienia => Statusy encji. W tym widoku wybieramy ID z listy dla encji: Zamówienie
Parametry do zamówienia:
optimesOrderAttributeDeliveryMethod, optimesOrderAttributeDeliveryPrice, optimesOrderAttributePaymentMethod, optimesOrderAttributeAdditionalField1, optimesOrderAttributeAdditionalField2, optimesOrderAttributeNote, optimesCustomerAttributeLogin definiujemy w widoku: Ustawienia => Atrybuty
Parametry te nie są domyślnie zdefiniowane i trzeba je dodać do systemu. Jako Encja wybieramy Zamówienie
Odnośniki do integracji z API:
optimesProductPost, optimesOrderPost, optimesClientPost
to linki w domenie w której postawiona jest instancja optimesa:
optimesProductPost => https://[OPTIMES_LINK]/api/v1/Warehouse/Products
optimesOrderPost => https://[OPTIMES_LINK]/api/v1/Orders/Orders
optimesClientPost => https://[OPTIMES_LINK]/api/v1/Clients/Clients
gdzie:
OPTIMES_LINK – to link do instancji Optimesa.
Plik config/vat.txt zawiera mapper stawek VAT o konstrukcji:
VAT,ID VAT
Zawiera wartość VAT oraz id VAT w systemie optimes. Stawki VAT można zobaczyć w widoku: Ustawienia => Handel => Stawki VAT
Id stawki VAT możemy zobaczyć tylko z linku do edycji.
Plik config/currencies.txt zawiera mapper walut o konstrukcji:
CURRENCY,ID CURRENCY
Zawiera walutę oraz id waluty w systemie optimes. Waluty można zobaczyć w widoku: Ustawienia => Handel => Waluty
Id waluty możemy zobaczyć tylko z linku do edycji.
System Baselinker.pl:
baselinkerApiKey – jest to klucz APIU, który możemy pobrać z widoku Moje konto zakładka API
Statusy zamówień: baselinkerOrderStatusToImport oraz baselinkerOrderStatusToSend możemy pobrać z widoku: Zamówienia => Statusy zamówień. Identyfikatory nie są jawnie pokazane na stronie, trzeba sprawdzić link który jest odpowiedzialny za edycję statusu.
BaselinkerApiLink jest to ogólny link do integracji API, jest to wartość stała niezależnie od domeny baselinkera:
https://api.baselinker.com/connector.php
W systemie trzeba skonfigurować zadania CRON. Można to zrobić zarówno jako proces php (wersja 7.1)
Poniżej przykład wywołania:
*/5 * * * * /usr/bin/php7.1 /[LINK_DO INSTANCJI]/bin/console rcc:integration:run > /dev/null
*/5 * * * * /usr/bin/php7.1 /[LINK_DO INSTANCJI]/bin/console rcc:order-integration:run > /dev/null
Gdzie:
LINK_DO INSTANCJI => to folder na serwerze w którym postawiona jest instancja
Dodatkowo jeśli serwer nie umożliwia wywoływanie w cronie zadań pod php7.1 można w CRONIE wywoływać procesy jako linki (WGET):
http://test.pl/rccloud/integration/integrate
http://run.syneo.pl/rccloud/integration/integrateorder
W tym momencie możemy już przetestować czy w momencie ustawienia w zamówieniu odpowiedniego statusu w Baselinkerze zostanie ono zaimportowane do optimesa, oraz jak już zaimportowane zamówienie w Optimesie zostanie zaakceptowane to zmieni status w Baselinkerze.