Как автоматизировать процесс возврата лицензий WordPress плагинов

Возврат лицензий плагинов в WordPress — частая задача для разработчиков, занимающихся продажей своих продуктов. Автоматизация этого процесса помогает снизить нагрузку на службу поддержки, повысить уровень контроля и улучшить опыт пользователей. В этой статье разберём, как грамотно организовать автоматический отзыв лицензий с помощью PHP, REST API и вспомогательных инструментов.

Почему важно автоматизировать отзыв лицензий

Ручное управление лицензиями — это всегда риск ошибок и задержек. Автоматизация позволяет:

  • Мгновенно отзывать лицензии при возврате денег или нарушениях лицензионного соглашения.
  • Уменьшить вероятность мошенничества с использованием одной лицензии на нескольких сайтах.
  • Обеспечить прозрачность и учёт всех операций с лицензиями.
  • Сократить время реакции службы поддержки.

Это особенно актуально при большом количестве клиентов и лицензий.

Использование REST API для автоматического отзыва лицензий

REST API — стандартный и гибкий способ общения между вашим лицензионным сервером и плагинами. Для автоматизации отзыва лицензий можно реализовать специальный эндпоинт, который принимает запросы на отзыв и обновляет статус лицензии в базе.

Пример создания REST API эндпоинта для отзыва лицензии

add_action('rest_api_init', function () {
    register_rest_route('wplicense/v1', '/revoke-license', array(
        'methods' => 'POST',
        'callback' => 'wplicense_revoke_license_callback',
        'permission_callback' => function () {
            return current_user_can('manage_options');
        },
    ));
});

function wplicense_revoke_license_callback(WP_REST_Request $request) {
    $license_key = $request->get_param('license_key');
    if (empty($license_key)) {
        return new WP_Error('no_license_key', 'License key is required', array('status' => 400));
    }

    // Здесь добавьте логику поиска лицензии и смены статуса
    $result = wplicense_mark_license_revoked($license_key);

    if ($result) {
        return array('success' => true, 'message' => 'License revoked successfully');
    } else {
        return new WP_Error('revoke_failed', 'Failed to revoke license', array('status' => 500));
    }
}

function wplicense_mark_license_revoked($license_key) {
    global $wpdb;
    $table = $wpdb->prefix . 'wplicenses';
    $updated = $wpdb->update(
        $table,
        array('status' => 'revoked'),
        array('license_key' => $license_key),
        array('%s'),
        array('%s')
    );
    return ($updated !== false);
}

В этом коде мы создаём REST API маршрут /wplicense/v1/revoke-license с методом POST, который принимает ключ лицензии и меняет её статус на "revoked" в базе данных. Функция wplicense_mark_license_revoked отвечает за обновление записи.

Автоматизация отзыва лицензий по событию возврата платежа

Если вы используете платёжные системы с webhook, например, PayPal или Stripe, можно настроить автоматический отзыв лицензий при возврате средств клиенту. Для этого:

  1. Настройте обработчик webhook на вашем сервере.
  2. При получении события возврата получите ключ лицензии из заказа.
  3. Отправьте запрос на REST API эндпоинт для отзыва лицензии.

Пример обработки webhook для Stripe:

add_action('init', 'wplicense_stripe_webhook_handler');
function wplicense_stripe_webhook_handler() {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST' || $_SERVER['REQUEST_URI'] !== '/stripe-webhook') {
        return;
    }

    $payload = @file_get_contents('php://input');
    $event = json_decode($payload, true);

    if (!$event || empty($event['type'])) {
        status_header(400);
        exit;
    }

    if ($event['type'] === 'charge.refunded') {
        $license_key = wplicense_get_license_by_order_id($event['data']['object']['metadata']['order_id']);
        if ($license_key) {
            wp_remote_post(home_url('/wp-json/wplicense/v1/revoke-license'), array(
                'body' => json_encode(array('license_key' => $license_key)),
                'headers' => array('Content-Type' => 'application/json'),
            ));
        }
    }

    status_header(200);
    exit;
}

Функция wplicense_get_license_by_order_id должна реализовывать поиск лицензии по идентификатору заказа.

Использование плагина Clearfy Pro для управления лицензиями

Для расширенного контроля лицензий и безопасности плагинов можно использовать Clearfy Pro. Этот плагин помогает оптимизировать WordPress, убрать лишние запросы и повысить защиту, в том числе по лицензиям.

Clearfy Pro позволяет интегрировать защиту и автоматизацию без дополнительной разработки, что сильно экономит время при масштабировании.

Советы по безопасности при автоматизации возврата лицензий

При реализации автоматического отзыва лицензий важно не забывать про безопасность:

  • Используйте проверку прав на стороне REST API (например, current_user_can('manage_options') или OAuth токены).
  • Ограничьте доступ к эндпоинтам по IP, если возможно.
  • Шифруйте и проверяйте данные, поступающие из webhook.
  • Ведите логи операций для аудита и устранения ошибок.

Безопасность важна, чтобы избежать злоупотреблений и потери доверия клиентов.

Подводим итоги и расширяем функционал

Автоматизация отзыва лицензий в WordPress плагинах позволяет снизить нагрузку на поддержку и повысить защиту продукта. Реализация собственных REST API эндпоинтов и интеграция с платёжными webhook — наиболее гибкие и надёжные методы. Использование готовых решений, таких как Clearfy Pro, помогает быстро подключить оптимизации и защиту.

Для расширения можно добавить автоматические уведомления пользователям о смене статуса лицензии, интеграцию с CRM и систему аналитики для детального контроля.

Как отладить проблемы с активацией лицензий WordPress плагинов в разных условиях
11.03.2026
Решение проблем с лицензионными ключами WooCommerce плагинов при миграции сайта
31.05.2026
Как удалить старые лицензии WordPress плагинов из базы данных
18.03.2026
Оптимальные настройки WordPress для управления лицензиями плагинов
02.12.2025
Как создать автоматический отзыв лицензий WordPress плагинов по шаблонам
30.03.2026