Integracje

PrestaShop + SMSIK — powiadomienia SMS o zamówieniach

Tomasz Lewandowski — Lead Developer, SMSIK 8 min czytania

PrestaShop to druga najpopularniejsza platforma e-commerce w Polsce. Dowiedz się, jak dodać powiadomienia SMS o zamówieniach — bez modułu, własnym kodem PHP.

PrestaShop to druga najpopularniejsza platforma e-commerce w Polsce (po WooCommerce). Jeśli go używasz, możesz dodać powiadomienia SMS o zamówieniach w prosty sposób — bez kupowania modułu, własnym kodem PHP.

Dlaczego SMS-y w PrestaShop?

Klienci chcą wiedzieć, co się dzieje z ich zamówieniem. PrestaShop domyślnie wysyła e-maile, ale:

  • E-maile często trafiają do spamu
  • Klient może nie sprawdzić e-maila przez kilka godzin
  • SMS dociera w 1-3 sekundy i jest otwierany w 90% przypadków

Efekt: mniej pytań do obsługi klienta, wyższa ocena sklepu.

Jak to działa?

PrestaShop ma system haczyków (hooks) — zdarzeń, na które można zareagować własnym kodem. Wystarczy stworzyć mały moduł, który nasłuchuje zmiany statusu zamówienia i wywołuje SMSIK API.

Krok 1: Klucz API SMSIK

Zarejestruj się na smsik.pl, wejdź w panel developera, kliknij "Nowy klucz". Skopiuj klucz.

Krok 2: Utwórz moduł PrestaShop

W katalogu modules/ swojego PrestaShop utwórz folder smsiknotify/ z plikiem smsiknotify.php:

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}

class SmsikNotify extends Module
{
    public function __construct()
    {
        $this->name = 'smsiknotify';
        $this->tab = 'administration';
        $this->version = '1.0.0';
        $this->author = 'Twoja Firma';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = ['min' => '1.7', 'max' => _PS_VERSION_];

        parent::__construct();

        $this->displayName = 'SMSIK Notifications';
        $this->description = 'Wysyła SMS-y o zmianie statusu zamówienia przez SMSIK API.';
    }

    public function install()
    {
        return parent::install()
            && $this->registerHook('actionOrderStatusPostUpdate');
    }

    /**
     * Haczyk: po zmianie statusu zamówienia.
     * Mapowanie po ID statusu (nie po nazwie — nazwy są tłumaczone!).
     */
    public function hookActionOrderStatusPostUpdate($params)
    {
        $order_id = (int) $params['id_order'];
        $new_status = $params['newOrderStatus'];

        $order = new Order($order_id);
        if (!Validate::isLoadedObject($order)) {
            return;
        }

        $phone = $order->getBillingPhone();
        if (empty($phone)) {
            return;
        }

        // Mapowanie ID statusu -> treść SMS.
        // Domyślne ID w PrestaShop 1.7:
        //   2 = płatność zaakceptowana (processing)
        //   4 = wysłane (shipped)
        //   5 = dostarczone (delivered)
        //   6 = anulowane (cancelled)
        // Dostosuj do własnego sklepu, jeśli masz własne statusy.
        $messages = [
            2 => 'Zamowienie #' . $order_id . ' przyjete. Dziekujemy!',
            4 => 'Zamowienie #' . $order_id . ' nadane! Sprawdz maila po numer sledzenia.',
            5 => 'Zamowienie #' . $order_id . ' dostarczone. Dziekujemy!',
            6 => 'Zamowienie #' . $order_id . ' anulowane. Kontakt: sklep@example.pl',
        ];

        $status_id = (int) $new_status->id;
        if (!isset($messages[$status_id])) {
            return; // nieobsługiwany status
        }

        $message = $messages[$status_id];

        // Pobierz klucz API z konfiguracji
        $api_key = Configuration::get('SMSIK_API_KEY');
        if (empty($api_key)) {
            PrestaShopLogger::addLog('SMSIK: brak klucza API', 3);
            return;
        }

        // Wywołanie SMSIK API
        $ch = curl_init('https://smsik.pl/api/v1/sms/send');
        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'X-API-Key: ' . $api_key,
                'Content-Type: application/json',
            ],
            CURLOPT_POSTFIELDS => json_encode([
                'to_number' => $phone,
                'message' => $message,
                'idempotency_key' => 'ps-order-' . $order_id . '-status-' . $status_id,
            ]),
            CURLOPT_TIMEOUT => 30,
        ]);

        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($http_code !== 200) {
            PrestaShopLogger::addLog('SMSIK HTTP ' . $http_code . ': ' . $response, 3);
        }
    }
}

Krok 3: Zainstaluj moduł

  1. Zaloguj się do panelu admina PrestaShop
  2. Wejdź w Moduły → Menedżer modułów
  3. Kliknij "Prześlij moduł" — spakuj folder smsiknotify/ do ZIP i wgraj
  4. Kliknij "Zainstaluj"

Krok 4: Ustaw klucz API

W panelu PrestaShop wejdź w Zaawansowane → Konfiguracja i dodaj zmienną:

SMSIK_API_KEY = sk_live_TWOJ_KLUCZ

Możesz to też zrobić przez bazę danych:

INSERT INTO ps_configuration (name, value, date_add, date_upd)
VALUES ('SMSIK_API_KEY', 'sk_live_TWOJ_KLUCZ', NOW(), NOW());

Krok 5: Test

  1. Złóż testowe zamówienie
  2. Zmień status na "W realizacji" (processing)
  3. Sprawdź telefon — powinien przyjść SMS
  4. Jeśli nie — sprawdź Zaawansowane → Logi w panelu PrestaShop

Idempotencja

Pole idempotency_key jest unikalne per (zamówienie, status) — jeśli haczyk wywoła się dwa razy, SMSIK nie wyśle drugiego SMS-a. To ochrona przed duplikatami przy retry.

Alternatywa: moduł gotowy

W sklepie PrestaShop Addons jest moduł "SMSAPI", ale wymaga konta SMSAPI. Dla SMSIK najprościej jest własny moduł (jak wyżej) — 80 linii PHP, które możesz dostosować.

Koszty

Każdy SMS to 1 grosz brutto. Dla sklepu z 1000 zamówień miesięcznie i 3 SMS-ami na zamówienie (przyjęte + nadane + dostarczone):

  • 3000 SMS-ów miesięcznie
  • Koszt: 30 zł miesięcznie

Podsumowanie

  • ✅ 30 minut pracy (klucz API + moduł PHP)
  • ✅ 0 zł za moduł (własny kod)
  • ✅ 1 grosz brutto za SMS
  • ✅ Idempotencja (brak duplikatów)
  • ✅ Pełna kontrola nad treścią SMS-ów

Zarejestruj się bezpłatnie — dostajesz 5 groszy na start.

Wypróbuj SMSIK bezpłatnie

Rejestracja zajmuje 2 minuty. Otrzymasz 5 groszy na start.

Utwórz darmowe konto
ŚRODOWISKO DEWELOPERSKIE - wersja testowa (nieprodukcyjna)