Aplikacja do integracji sklepu internetowego pracującym na SoteSHOP z serwisem kurierskim Apaczka (przez API)
apaczka-sdk-ts to kompletne rozwiązanie integracyjne, składające się z dwóch głównych komponentów:
- Serwer Node.js - backendu napisanego w TypeScript, który komunikuje się z API serwisu Apaczka
- Skrypt dla przeglądarki - frontend, który można zainstalować poprzez rozszerzenie do przeglądarki np. Tampermonkey/Greasemonkey, osadzany na stronie panelu administracyjnego sklepu
System umożliwia automatyzację procesu nadawania przesyłek bezpośrednio z panelu administracyjnego sklepu, bez konieczności ręcznego przepisywania danych klientów.
Serwer Node.js z Express obsługuje komunikację z API Apaczka, przetwarzając i przekazując dane do serwisu kurierskiego.
- Runtime: Node.js (rekomendowana wersja 14.x lub wyższa)
- Język: TypeScript (kompilowany do JavaScript)
- System modułów: CommonJS
- Komunikacja API: Wykorzystuje bibliotekę
axios
do zapytań HTTP - Zależności:
dotenv
do zarządzania zmiennymi środowiskowymiexpress
do obsługi serwera HTTP
SDK wykorzystuje zmienne środowiskowe do konfiguracji. Wymagane są następujące zmienne:
APP_ID
: Identyfikator aplikacji ApaczkaAPP_SECRET
: Klucz aplikacji ApaczkaAPI_URL
: Bazowy URL dla API Apaczka (domyślnie: https://api.apaczka.com/v1/)PORT
: Port, na którym uruchomiony zostanie serwer Express
Zmienne te można ustawić w pliku .env
w katalogu głównym projektu lub dostarczyć przez środowisko wdrożeniowe.
Serwer Express udostępnia następujące endpointy:
POST /api/apaczka/order-valuation
: Wycena zamówieniaPOST /api/apaczka/order-send
: Wysłanie nowego zamówienia
SDK dostarcza następujące metody:
order(id: string)
: Pobierz szczegóły konkretnego zamówieniaorders(page?: number, limit?: number)
: Lista zamówieńwaybill(id: string)
: Pobierz list przewozowy dla zamówieniapickupHours(postalCode: string, serviceId?: string)
: Pobierz dostępne godziny odbioruorderValuation(order: OrderRequest)
: Wycena zamówieniaorderSend(order: OrderRequest)
: Wyślij nowe zamówieniecancelOrder(id: string)
: Anuluj zamówienieserviceStructure()
: Pobierz strukturę usługpoints(type?: string)
: Pobierz punkty odbioru/dostawycustomerRegister(customer: Record<string, unknown>)
: Zarejestruj nowego klientaturnIn(orderIds: string[])
: Zgłoś zamówienia do odbioru
Skrypt frontendowy (scriptForApaczka.js
) jest zaprojektowany do instalacji poprzez rozszerzenie Tampermonkey lub podobne. Skrypt działa na stronie edycji zamówienia w panelu administracyjnym sklepu.
- Automatyczne pobieranie danych - Skrypt analizuje DOM strony zamówienia, aby pobrać dane klienta (np. imię, nazwisko, adres, email, telefon)
- Interfejs użytkownika - Dodaje formularz do strony zamówienia, wypełniony automatycznie pobranymi danymi
- Wycena przesyłki - Umożliwia wycenę przesyłki przed jej nadaniem
- Wysyłanie zamówienia - Przesyła dane do serwera, który komunikuje się z API Apaczka
- Limit znaków dla DPD - API DPD (service_id: 21) ma ścisły limit 49 znaków dla zawartości przesyłki. Pole "Zawartość przesyłki" w formularzu wyświetla licznik znaków, ograniczając długość tekstu do 49 znaków, aby zapobiec błędom API.
Skrypt komunikuje się z backendem poprzez wysyłanie żądania POST do endpointu /api/apaczka/order-send
z danymi przesyłki.
Aby skonfigurować projekt do rozwoju:
- Sklonuj repozytorium
- Zainstaluj zależności:
npm install
- Zbuduj projekt:
npm run build
- Uruchom projekt:
npm start
- Zainstaluj rozszerzenie Tampermonkey w przeglądarce
- Utwórz nowy skrypt i skopiuj zawartość pliku
frontScript/scriptForApaczka.js
- Zapisz skrypt i aktywuj go
- Przejdź do panelu administracyjnego sklepu, na stronę edycji zamówienia
Rafał Majewski