Как настроить Webhook‑уведомления в Payeer для автоматической обработки заказов

Как настроить Webhook‑уведомления в Payeer для автоматической обработки заказов

Если ты ведёшь онлайн-бизнес — продажи цифровых товаров, подписок, услуг или даже физических товаров через Payeer — ты знаешь, как утомительно вручную проверять поступления. Клиент заплатил, ты ждёшь уведомление, заходишь в личный кабинет, сверяешь сумму, и только потом высылаешь товар. Это не масштабируется. И если ты хочешь, чтобы система работала сама — без твоего участия — Webhook в Payeer это то, что тебе нужно.

Я не буду рассказывать, что такое Webhook в теории. Скажу просто: это автоматический сигнал от Payeer, который приходит на твой сервер, как только клиент платит. Ты настраиваешь его один раз — и дальше всё делает система: проверяет платёж, активирует доступ, отправляет ключ, обновляет статус заказа. Никаких ручных проверок. Ни утренних звонков клиентам с вопросом «вы оплатили?». Ни пропущенных платежей. Ни ошибок из-за усталости.

Что тебе нужно, чтобы начать

Ты не обязан быть программистом, но должен понимать базовые вещи:

  • У тебя есть сайт или сервис, где принимаются заказы (даже простой WordPress с WooCommerce или Telegram-бот).
  • У тебя есть хостинг с доступом к PHP, Node.js или другому серверному языку (даже бесплатный хостинг вроде Glitch или Render подойдёт).
  • Ты можешь открыть порт на сервере (обычно 80 или 443) и дать Payeer доступ к твоему URL — это не сложнее, чем настроить DNS.
  • Ты умеешь копировать и вставлять ссылку в форму.

Если ты не умеешь писать код — не беда. Я покажу, как сделать это с минимальными техническими знаниями. Главное — ты должен быть готов к тому, что нужно будет вставить 10–15 строк кода. Или использовать готовый плагин, если ты на WordPress.

Как настроить Webhook в Payeer — пошагово

  1. Зайди в свой аккаунт Payeer → «Настройки» → «Webhook».
  2. Нажми «Добавить Webhook».
  3. В поле «URL» введи адрес своего сервера, где будет принимать уведомления. Пример: https://tvoysait.ru/payeer-webhook. Это должен быть HTTPS-адрес. Без SSL — Payeer не примет.
  4. Выбери событие: “Payment received” — именно оно тебе нужно для обработки заказов.
  5. Оставь поле «Secret key» пустым — пока. Мы добавим его позже, чтобы убедиться, что уведомление пришло от Payeer, а не от хакера.
  6. Нажми «Сохранить».

Теперь Payeer будет слать POST-запрос на твой URL всякий раз, когда кто-то оплатит. Но твой сервер пока не знает, что с этим делать. Нужно написать обработчик.

Как написать простой обработчик (для тех, кто не программист)

Допустим, ты используешь PHP. Создай файл payeer-webhook.php на своём сервере и вставь туда это:

<?php
// Получаем данные от Payeer
$data = file_get_contents('php://input');
payload = json_decode(data, true);

// Проверяем, что это реальный платёж от Payeer
if (payload['status'] == 'success' &&payload['currency'] == 'USD' && $payload['amount'] > 0) {
    // Сохраняем ID платежа — это твой ключ к заказу
    paymentId =payload['m_orderid'];
    amount =payload['amount'];
    payer =payload['payer'];

    // Тут ты связываешь платёж с заказом в своей БД
    // Например: если $paymentId = 'order_12345', то активируй доступ к товару для клиента
    // Это может быть: отправка email, выдача ключа, открытие доступа к курсу

    file_put_contents('log.txt', date('Y-m-d H:i:s') . ' - Платёж ' . paymentId . ' на ' .amount . ' USD от ' . $payer . PHP_EOL, FILE_APPEND);
    
    // Отвечаем Payeer, что всё ок — иначе он будет пытаться отправить уведомление снова
    http_response_code(200);
    echo 'OK';
} else {
    // Если что-то не так — возвращаем ошибку, чтобы Payeer не считал, что всё прошло успешно
    http_response_code(400);
    echo 'Invalid payment';
}
?>

Этот код:

  • Принимает данные от Payeer в формате JSON.
  • Проверяет, что платёж успешный, в USD и сумма больше нуля — это базовая фильтрация.
  • Извлекает ID заказа (это поле m_orderid — ты его задаёшь сам, когда формируешь платёж).
  • Записывает лог в файл — чтобы ты мог потом проверить, что всё приходило.
  • Отправляет ответ 200 OK — это важно. Payeer будет повторять отправку, если не получит ответ 200 в течение 10 минут.

Теперь — как ты связываешь этот платёж с заказом?

Когда клиент нажимает «Оплатить» на твоём сайте — ты формируешь платёж в Payeer и передаёшь в параметре m_orderid уникальный ID заказа из твоей системы. Например:

<form action="https://payeer.com/merchant/" method="POST">
  <input type="hidden" name="m_shop" value="1234567">
  <input type="hidden" name="m_orderid" value="order_789012">  <!-- это твой заказ в БД -->
  <input type="hidden" name="m_amount" value="29.99">
  <input type="hidden" name="m_curr" value="USD">
  <input type="hidden" name="m_desc" value="Доступ к курсу "Автоматизация"">
  <input type="submit" value="Оплатить 29.99 USD">
</form>

Когда Payeer пришлёт уведомление — ты получаешь m_orderid = order_789012 и знаешь: «Этот платёж — это заказ №789012 в моей базе. Нужно выдать доступ».

Почему важен Secret Key и как его использовать

Без ключа твой Webhook уязвим. Любой может подделать запрос и отправить ложное уведомление: «Оплата прошла! Выдайте ключ!» — и твой сервер повеселится, выдавая товары за бесплатно.

В Payeer есть поле «Secret key». Введи туда длинную случайную строку — например: 7xK9#pL2$qR6!nM8@vB4.

Теперь модифицируй свой код — добавь проверку подписи:

<?php
secretKey = '7xK9#pL2qR6!nM8@vB4'; // Твой секретный ключ из Payeer

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

// Генерируем хеш, который Payeer должен был отправить
hash = hash_hmac('sha256',data, $secretKey);

// Сравниваем с заголовком X-Payeer-Signature
signature =_SERVER['HTTP_X_PAYEER_SIGNATURE'] ?? '';

if (hash !==signature) {
    http_response_code(401);
    exit('Invalid signature');
}

// Только после проверки подписи — обрабатываем платёж
if (payload['status'] == 'success' &&payload['amount'] > 0) {
    // ... твоя логика обработки заказа
    http_response_code(200);
    echo 'OK';
} else {
    http_response_code(400);
    echo 'Invalid payment';
}
?>

Это необязательно для старта — но если ты хочешь, чтобы система была безопасной — обязательно добавь это. Без подписи — ты рискуешь, что кто-то подменит платёж и получит доступ к твоим товарам без оплаты.

Что Payeer отправляет в уведомлении

Вот основные поля, которые приходят в JSON-ответе:

Поле Что значит Почему важно
m_orderid Твой уникальный ID заказа Связывает платёж с заказом в твоей системе
amount Сумма платежа Проверяй, чтобы она совпадала с ценой товара
currency Валюта (USD, EUR, RUB и т.д.) Если клиент оплатил в RUB, а ты ждал USD — это может быть ошибка
status «success» или «fail» Только «success» — обрабатывай. «fail» — игнорируй
payer Счёт плательщика (например, P1234567) Полезно для аналитики — кто платил
payment_id ID платежа в Payeer Нужен для отслеживания в кабинете Payeer
timestamp Время платежа в Unix-формате Можно использовать для проверки, не старый ли запрос

Список всех полей — в официальной документации Payeer. Но для старта тебе хватит этих шести.

Частые ошибки — и как их избежать

  1. Не используешь HTTPS. Payeer не принимает Webhook на HTTP. Даже если твой сайт на HTTPS, а обработчик на HTTP — он не сработает. Убедись, что твой URL начинается с https://.
  2. Не отвечаешь 200 OK. Если твой сервер возвращает 500, 404 или вообще ничего — Payeer будет пытаться отправить уведомление ещё 5 раз в течение 10 минут. Это создаёт дубли. И если твой код не проверяет, был ли этот заказ уже обработан — ты можешь выдать товар 5 раз.
  3. Не проверяешь сумму. Клиент платит 1 USD, а ты выдаёшь доступ к курсу за 50 USD. Добавь проверку: if ($amount == 29.99) — только тогда выдавай товар.
  4. Не проверяешь подпись. Без X-Payeer-Signature любой может подделать платёж. Даже если ты не ведёшь крупный бизнес — это не повод игнорировать безопасность.
  5. Используешь один и тот же m_orderid для всех заказов. Если ты вручную вставляешь m_orderid=order_1 — Payeer будет считать, что это один и тот же платёж. Каждый заказ должен иметь уникальный ID: order_12345, order_12346 и т.д.
  6. Не логируешь. Без логов ты не поймёшь, почему что-то не сработало. Пиши в файл или базу: когда пришёл платёж, что пришло, что сделано.

Когда что выбрать — сценарии

Ты не один. У тебя может быть разная ситуация. Вот как действовать в разных случаях:

  • Ты просто продаёшь PDF-файлы и не хочешь вникать в код → Используй плагин для WordPress. Он настроен на Webhook, проверяет подписи, обрабатывает оплаты. Тебе нужно только ввести ключ и настроить продукт.
  • Ты продаёшь подписки и нужно автоматически продлевать доступ → Payeer не поддерживает регулярные платежи. Используй его только для первоначальной оплаты. Для продлений — переходи на Stripe или Paddle.
  • Ты продаёшь цифровые товары через Telegram → Сделай простой бот на Python (aiogram). Принимай Webhook на ngrok (временный HTTPS-туннель) → обрабатывай платёж → отправляй ключ в чат.
  • Ты продаёшь физические товары → Webhook можно использовать для автоматической отправки уведомления на почту менеджеру: «Поступил платёж на 1500 RUB — клиент Иванов, заказ №123». Но физические товары всё равно нужно отгружать вручную — Webhook тут только помогает не забыть.

Как лучше сделать — практические рекомендации

  • Всегда используй уникальные m_orderid. Генерируй их автоматически: order_ + timestamp + случайные 4 цифры.
  • Пиши логи. Даже если ты думаешь, что всё работает — логи спасут тебя, когда что-то сломается. Сохраняй в файл или базу: дата, сумма, ID заказа, статус, IP клиента.
  • Тестируй перед запуском. Используй Payeer Sandbox (тестовый аккаунт) или просто отправь платёж на 0.01 USD. Проверь, приходит ли уведомление, и что твой сервер его обрабатывает.
  • Не забывай про дубли. Payeer может отправить одно и то же уведомление дважды. Проверяй: был ли этот m_orderid уже обработан? Если да — просто отвечай 200 и не делай ничего.
  • Следи за сроком действия. Payeer не хранит Webhook-уведомления. Если твой сервер был недоступен 3 часа — платёж не придёт повторно. Убедись, что твой сервер работает 24/7.

Итог — что делать прямо сейчас

Если ты хочешь, чтобы Payeer автоматически обрабатывал заказы — сделай это:

  1. Включи Webhook в настройках Payeer → введи HTTPS-адрес своего сервера.
  2. Создай простой PHP-файл (или используй плагин), который принимает уведомление и проверяет m_orderid.
  3. Добавь Secret Key и проверку подписи — это не сложно, но критично важно.
  4. Свяжи m_orderid с заказом в твоей системе — и выдавай товар автоматически.
  5. Запусти тестовый платёж на 0.01 USD — проверь, приходит ли уведомление и работает ли логика.
  6. Включи логирование — и забудь про ручную проверку платежей.

Это не «надо сделать когда-нибудь». Это — то, что сделает твой бизнес масштабируемым. Даже если ты сейчас продаёшь 5 товаров в неделю — через полгода это станет 50. И ты не захочешь тратить 3 часа в день на проверку оплат.

Webhook — это не про технологии. Это про твоё время. И твоё спокойствие.

Информация в статье носит ознакомительный характер. Настройка автоматических платежей требует понимания безопасности и обработки данных. Перед внедрением в продакшен проконсультируйся с разработчиком или специалистом по онлайн-платежам.

Platejigid.ru