Как создать автоматическую проверку платежей в WordPress

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

Почему важна автоматическая проверка платежей в WordPress

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

Автоматическая проверка позволяет:

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

Для этого чаще всего используют вебхуки от платежных систем или периодические запросы к API.

Использование вебхуков для автоматической проверки платежей

Вебхуки — это HTTP-запросы от платежного сервиса к вашему сайту при изменении статуса платежа. Они позволяют получать уведомления в реальном времени и обрабатывать их автоматически.

Пример работы с вебхуками:

add_action('wp_ajax_wppay_handle_webhook', 'wppay_handle_webhook');
add_action('wp_ajax_nopriv_wppay_handle_webhook', 'wppay_handle_webhook');

function wppay_handle_webhook() {
    // Получаем входящие данные
    $input = file_get_contents('php://input');
    $event = json_decode($input, true);

    if (!$event) {
        wp_send_json_error('Invalid data');
        exit;
    }

    // Проверяем подпись (пример для Stripe)
    $signature = $_SERVER['HTTP_STRIPE_SIGNATURE'] ?? '';
    if (!wppay_verify_signature($input, $signature)) {
        wp_send_json_error('Invalid signature');
        exit;
    }

    // Обрабатываем событие
    switch ($event['type']) {
        case 'payment_intent.succeeded':
            $payment_id = $event['data']['object']['id'];
            wppay_update_payment_status($payment_id, 'completed');
            break;
        case 'payment_intent.payment_failed':
            $payment_id = $event['data']['object']['id'];
            wppay_update_payment_status($payment_id, 'failed');
            break;
        // другие события
    }

    wp_send_json_success('Webhook processed');
    exit;
}

function wppay_verify_signature($payload, $signature) {
    $secret = 'your_webhook_secret';
    $expected = hash_hmac('sha256', $payload, $secret);
    return hash_equals($expected, $signature);
}

function wppay_update_payment_status($payment_id, $status) {
    // Логика обновления статуса платежа в базе WordPress
    global $wpdb;
    $wpdb->update(
        $wpdb->prefix . 'payments',
        ['status' => $status],
        ['payment_id' => $payment_id]
    );
}

Этот пример демонстрирует базовую структуру обработки вебхуков с проверкой подписи и обновлением статуса платежа в базе данных.

Настройка URL для вебхуков

Чтобы прием вебхуков работал, необходимо указать в платежной системе URL, по которому будут приходить уведомления. Он должен вести на обработчик, например, https://yourdomain.com/wp-admin/admin-ajax.php?action=wppay_handle_webhook.

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

Периодическая проверка статуса платежей через API

В некоторых случаях вебхуки недоступны или ненадежны. Тогда можно использовать периодические запросы к API платежного сервиса для обновления статусов.

Для этого создадим WP Cron задачу, которая будет запускаться, например, раз в час и проверять все платежи со статусом «ожидает».

function wppay_schedule_check_payments() {
    if (!wp_next_scheduled('wppay_cron_check_payments')) {
        wp_schedule_event(time(), 'hourly', 'wppay_cron_check_payments');
    }
}
add_action('wp', 'wppay_schedule_check_payments');

add_action('wppay_cron_check_payments', 'wppay_check_pending_payments');

function wppay_check_pending_payments() {
    global $wpdb;
    $payments = $wpdb->get_results("SELECT payment_id FROM {$wpdb->prefix}payments WHERE status = 'pending'");

    foreach ($payments as $payment) {
        $status = wppay_get_payment_status_from_api($payment->payment_id);
        if ($status && $status !== 'pending') {
            wppay_update_payment_status($payment->payment_id, $status);
        }
    }
}

function wppay_get_payment_status_from_api($payment_id) {
    // Пример запроса к API платежной системы
    $api_url = "https://api.example.com/payments/" . $payment_id;
    $response = wp_remote_get($api_url, [
        'headers' => [
            'Authorization' => 'Bearer your_api_token',
            'Accept' => 'application/json',
        ],
    ]);

    if (is_wp_error($response)) {
        return false;
    }

    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);

    return $data['status'] ?? false;
}

Этот код регистрирует задачу, которая будет проверять платежи с неопределенным статусом и обновлять их в базе данных.

Преимущества и недостатки периодической проверки

Плюсы:

  • Независимость от уведомлений платежной системы;
  • Возможность исправить пропущенные события;
  • Гибкая настройка интервалов.

Минусы:

  • Нагрузка на сервер и API при большом количестве платежей;
  • Задержка в обновлении статуса;
  • Необходимость контроля ошибок запросов.

Рекомендуемые плагины для автоматической проверки платежей в WordPress

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

  • WPPay — плагин для приема и обработки платежей с поддержкой вебхуков и расширенной логикой проверки.
  • Clearfy Pro — оптимизирует работу сайта и повышает безопасность, помогает избежать сбоев при обработке платежей.
  • ABC Pagination — удобен для отображения большого списка платежей с фильтрацией и сортировкой.

Использование этих плагинов позволит быстрее внедрить надежную систему проверки платежей и снизить риски ошибок.

Советы по безопасности и надежности проверок платежей

Для минимизации ошибок и мошенничества рекомендуем:

  • Использовать HTTPS для всех запросов и вебхуков;
  • Проверять подписи и токены в уведомлениях;
  • Логировать все операции для последующего аудита;
  • Настроить повторные попытки обработки при временных ошибках;
  • Проводить тестирование в тестовом режиме платежной системы;
  • Регулярно обновлять плагины и ядро WordPress.

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

Заключение

Автоматическая проверка платежей — важный элемент платежной системы на WordPress. Используя вебхуки и API, вы можете добиться своевременного обновления статусов и повысить надежность сайта. Приведенные примеры кода и советы помогут вам быстро реализовать такую систему с минимальными трудозатратами.

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

Как установить лимит покупок для пользователей в WordPress
25.02.2026
Как отображать платежные данные в админке WordPress
17.02.2026
Как создать автоплатёж с повтором в WordPress
20.03.2026
Как оптимизировать базы данных в WordPress для ускорения сайта
21.11.2025
Как отловить и исправить ошибки платежных запросов в WordPress
07.04.2026