Пропустить контент
Купить

Расширение списка SMS-сервисов

Механизм подключения

Плагин предоставляет два фильтра для интеграции:

1. Добавление сервиса в список доступных

php
add_filter('iiko_sms_services', function ($sms_services) {
    $sms_services['my_service'] = "Название вашего сервиса";
    return $sms_services;
}, 10, 1);

Параметры:

  • my_service - уникальный ключ сервиса (латиница, без пробелов)
  • «Название вашего сервиса» - отображаемое имя в интерфейсе

2. Реализация обработчика отправки

php
add_filter('iiko_sms_methods', 'sendSmsByMyService', 10, 3);

function sendSmsByMyService($service, $phone, $sms) {
    // Проверяем наш ли это сервис
    if ($service !== 'my_service') {
        return $service;
    }
    
    // Формируем параметры запроса
    $params = [
        'user' => 'your_login',
        'from' => 'sender_name',
        'password' => 'your_password',
        'to' => $phone,
        'text' => $sms,
        // Дополнительные параметры API
    ];
    
    // Отправка HTTP-запроса
    $response = wp_remote_post('https://your-sms-gateway.com/api', [
        'body' => $params
    ]);
    
    // Обработка ответа
    if (!is_wp_error($response) && $response['response']['code'] == 200) {
        return true; // Успешная отправка
    }
    
    return false; // Ошибка отправки
}

Рекомендации по реализации

  1. Безопасность:

    • Храните учетные данные в wp-config.php
    • Используйте wp_remote_* функции для HTTP-запросов
  2. Обработка ошибок:

    • Логируйте неудачные попытки отправки
    • Реализуйте повторные попытки при временных ошибках
  3. Тестирование:

    • Проверяйте работу с разными номерами телефонов
    • Убедитесь в корректной обработке спецсимволов

Пример полной реализации

php
// Добавляем сервис в список
add_filter('iiko_sms_services', function ($services) {
    $services['my_sms_provider'] = "Мой SMS Провайдер";
    return $services;
});

// Регистрируем обработчик
add_filter('iiko_sms_methods', 'handle_my_sms_provider', 10, 3);

function handle_my_sms_provider($service, $phone, $message) {
    if ($service !== 'my_sms_provider') {
        return $service;
    }
    
    $api_key = defined('MY_SMS_API_KEY') ? MY_SMS_API_KEY : '';
    
    $response = wp_remote_post('https://api.my-sms-provider.com/v1/send', [
        'headers' => [
            'Authorization' => 'Bearer ' . $api_key,
            'Content-Type' => 'application/json',
        ],
        'body' => json_encode([
            'phone' => sanitize_phone($phone),
            'text' => sanitize_text_field($message),
            'sender' => 'iikoShop'
        ]),
        'timeout' => 15
    ]);
    
    if (is_wp_error($response)) {
        error_log('SMS sending error: ' . $response->get_error_message());
        return false;
    }
    
    $body = json_decode(wp_remote_retrieve_body($response), true);
    
    return isset($body['success']) && $body['success'] === true;
}

// или

apply_filters('iiko_sms_methods', 'sendSmsByMyService', 10, 3);
function sendSmsByMyService($service, $phone, $sms)
{
    if($service !== 'my_service'){
        return $service;
    }
    
    // Enter get params for your sms service
    $get_params = http_build_query(
        /*[
            'user' => $login,
            'sadr' => $sign,
            'pwd'  => $pass,
            'dadr' => $phone,
            'text' => $sms,
        ]*/
    );
    
    // send http request, for example:
    $response = wp_remote_get('https://your-service.ru/sendsms.php?' . $get_params);
    
    
    if (!is_wp_error($response)) {
        return true;
    }
    return false;
}

Для интеграции:

  1. Создайте файл custom-sms-integration.php в папке mu-plugins или mu-plugins или в вашей теме
  2. Добавьте туда свой код, после хука init
  3. Убедитесь, что ваш сервис появился в настройках плагина

::: Подсказка: Для сложных интеграций рекомендуется создать отдельный плагин :::

WOO2IIKO © 2019 - 2026 Алексей Тихомиров.