Возврат лицензий плагинов в 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, можно настроить автоматический отзыв лицензий при возврате средств клиенту. Для этого:
- Настройте обработчик webhook на вашем сервере.
- При получении события возврата получите ключ лицензии из заказа.
- Отправьте запрос на 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 и систему аналитики для детального контроля.