Как создать настраиваемый платежный плагин для WordPress

В этой статье мы подробно рассмотрим, как самостоятельно создать платежный плагин для WordPress, который можно адаптировать под разные платежные системы и бизнес-задачи. Такой подход позволит вам получить полный контроль над процессом оплаты, а также гибко настраивать логику и внешний вид платежных форм.

Почему стоит создавать собственный платежный плагин для WordPress?

Готовые решения часто не учитывают особенности бизнеса, могут содержать лишний функционал или не поддерживать нужные вам способы оплаты. Собственный плагин позволит:

  • Интегрировать уникальные методы оплаты;
  • Оптимизировать производительность, оставляя только нужный функционал;
  • Гибко настраивать внешний вид и логику;
  • Обеспечить лучшую безопасность и контроль данных.

Но главное — вы сможете интегрировать плагин именно под свои задачи без ограничений.

Основные шаги разработки платежного плагина для WordPress

Давайте поэтапно разберём создание плагина. Мы создадим базовый шаблон платежного плагина с поддержкой обработки формы, валидацией и примерной интеграцией с API платежного шлюза.

1. Создание структуры плагина

В директории wp-content/plugins/ создайте папку wppay-custom-gateway. В ней создайте файл wppay-custom-gateway.php с шапкой плагина:

<?php
/*
Plugin Name: WPPay Custom Gateway
Description: Кастомный платежный плагин для WordPress
Version: 1.0
Author: WPPay.ru
*/

// Защита от прямого доступа
define('WPPAY_CG_PLUGIN_DIR', plugin_dir_path(__FILE__));

// Подключение основных функций
require_once WPPAY_CG_PLUGIN_DIR . 'includes/functions.php';

// Инициализация плагина
add_action('init', 'wppaycg_init');

function wppaycg_init() {
    // Регистрируем шорткод платежной формы
    add_shortcode('wppaycg_payment_form', 'wppaycg_render_payment_form');
}

В папке includes/ создайте файл functions.php и определите там функции рендера формы и обработки платежа.

2. Создание платежной формы с помощью шорткода

Добавим функцию вывода формы оплаты с полями для суммы, email и кнопкой оплаты:

function wppaycg_render_payment_form() {
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['wppaycg_submit'])) {
        return wppaycg_handle_payment($_POST);
    }
    ob_start();
    ?>
    <form method="post">
        <p>
            <label for="wppaycg_amount">Сумма платежа (руб):</label><br>
            <input type="number" step="0.01" name="amount" id="wppaycg_amount" required min="1" />
        </p>
        <p>
            <label for="wppaycg_email">Email для квитанции:</label><br>
            <input type="email" name="email" id="wppaycg_email" required />
        </p>
        <p>
            <input type="submit" name="wppaycg_submit" value="Оплатить" />
        </p>
    </form>
    <?php
    return ob_get_clean();
}

3. Обработка платежа и валидация данных

В функции wppaycg_handle_payment проверим корректность данных и имитируем отправку запроса к платежному API.

function wppaycg_handle_payment($data) {
    $amount = floatval($data['amount']);
    $email = sanitize_email($data['email']);

    if ($amount <= 0) {
        return '<p style="color:red;">Введите корректную сумму платежа.</p>';
    }
    if (!is_email($email)) {
        return '<p style="color:red;">Введите корректный email.</p>';
    }

    // Здесь можно добавить интеграцию с API вашего платежного шлюза
    // Например, отправка запроса и получение ссылки для оплаты

    $payment_url = wppaycg_mock_payment_api($amount, $email);

    if ($payment_url) {
        return '<p>Для завершения оплаты перейдите по ссылке: <a href="' . esc_url($payment_url) . '" target="_blank">Оплатить</a></p>';
    } else {
        return '<p style="color:red;">Ошибка при создании платежа. Попробуйте позже.</p>';
    }
}

function wppaycg_mock_payment_api($amount, $email) {
    // Заглушка для имитации ответа платежного сервера
    // В реальном плагине здесь будет запрос к API
    return 'https://example-payment-gateway.com/pay?amount=' . urlencode($amount) . '&email=' . urlencode($email);
}

Как добавить поддержку вебхуков для подтверждения платежа

Для автоматического обновления статуса платежа нужна точка приема уведомлений от платежной системы — вебхук. Добавим обработчик:

add_action('rest_api_init', function () {
    register_rest_route('wppaycg/v1', '/webhook', array(
        'methods' => 'POST',
        'callback' => 'wppaycg_handle_webhook',
        'permission_callback' => '__return_true',
    ));
});

function wppaycg_handle_webhook(WP_REST_Request $request) {
    $data = $request->get_json_params();

    // Проверка подписи и данных
    if (!wppaycg_verify_webhook_signature($request)) {
        return new WP_REST_Response('Invalid signature', 403);
    }

    $payment_id = sanitize_text_field($data['payment_id'] ?? '');
    $status = sanitize_text_field($data['status'] ?? '');

    if (!$payment_id || !$status) {
        return new WP_REST_Response('Missing data', 400);
    }

    // Логика обновления статуса платежа
    // Например, обновление метаданных заказа или базы данных

    return new WP_REST_Response('OK', 200);
}

function wppaycg_verify_webhook_signature(WP_REST_Request $request) {
    // Валидация подписи платежного шлюза
    // Здесь реализуйте проверку секретного ключа или подписи
    return true; // для примера
}

Рекомендации по безопасности платежного плагина

Обязательно соблюдайте следующие правила:

  • Используйте wp_nonce_field и проверяйте nonce при обработке форм;
  • Санитизируйте и валидируйте все входные данные;
  • Используйте HTTPS для передачи платежных данных;
  • Проверяйте подписи вебхуков и запросов от платежных систем;
  • Избегайте хранения чувствительных данных на сервере без шифрования.

Это поможет избежать уязвимостей и защитить пользователей и бизнес.

Пример интеграции с плагином Clearfy Pro для оптимизации платежного плагина

Плагин Clearfy Pro поможет оптимизировать работу сайта и плагинов, отключив ненужные скрипты и функции. Это особенно актуально для платежных плагинов, чтобы снизить время загрузки и повысить безопасность.

Для подключения Clearfy Pro достаточно установить и активировать плагин, затем в его настройках исключить загрузку скриптов других плагинов на страницах, где они не нужны, например, платежных форм.

Заключение

Создание собственного платежного плагина в WordPress — задача сложная, но вполне выполнимая. Такой плагин даст вам полный контроль над процессом оплаты, позволит гибко настраивать платежные методы и обеспечить безопасность. В этой статье вы получили базовый шаблон, который можно расширять и интегрировать с реальными платежными системами.

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

WooCommerce: как автоматически удалять зависшие платежи
10.07.2026
WooCommerce: как настроить автоматическое отключение неактивных подписок по срокам
22.06.2026
Как установить лимит на платежи в WordPress по суммам и пользователям
14.03.2026
WooCommerce: устранение проблемы отсутствия подтверждения платежа при оплате картой
25.05.2026
Как отладить проблемы с подключением платежных систем в WordPress
02.02.2026