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ł
- Zaloguj się do panelu admina PrestaShop
- Wejdź w Moduły → Menedżer modułów
- Kliknij "Prześlij moduł" — spakuj folder
smsiknotify/do ZIP i wgraj - 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
- Złóż testowe zamówienie
- Zmień status na "W realizacji" (processing)
- Sprawdź telefon — powinien przyjść SMS
- 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.