Модули для CMS и понятный API

Магазин на популярной CMS подключается модулем без программиста. Для своего сайта или приложения — REST API с примерами на PHP, Python и Node.js и песочницей с тестовыми ключами.

Готовые модули

Подключение к CMS за один вечер

Архив модуля и пошаговую инструкцию менеджер передаёт вместе с ключами. Обновления модулей — в кабинете.

WooCommerce

WordPress

Способ оплаты NordPay появляется в оформлении заказа WooCommerce. Покупатель выбирает СБП, карту или криптовалюту на странице оплаты, статус заказа меняется сам.

  • Оплата заказа через СБП, карты и USDT
  • Автоматическая смена статуса заказа по вебхуку
  • Возврат полностью или частично из карточки заказа
  • Тестовый режим отдельным переключателем
Требования: Актуальные WordPress и WooCommerce, PHP 7.4 или новее

Установка

  1. 1

    В админке WordPress откройте «Плагины → Добавить новый → Загрузить плагин» и установите архив модуля.

  2. 2

    Перейдите в «WooCommerce → Настройки → Платежи → NordPay» и вставьте секретный ключ и секрет вебхука из кабинета.

  3. 3

    Скопируйте адрес для уведомлений из настроек модуля в кабинет NordPay, раздел «Вебхуки и API-ключи».

  4. 4

    Включите тестовый режим, оплатите заказ тестовой картой и проверьте статус. Затем замените ключ на боевой.

Нет вашей CMS в списке? Подключим через API или ссылки на оплату — напишите менеджеру.Написать менеджеру
SDK и примеры

Ваш язык — наши примеры

Примеры работают на чистом HTTP без зависимостей. Обёртки для PHP, Python и Node.js передаём при подключении вместе с ключами.

API

Один запрос — и покупатель на странице оплаты

REST и JSON, ключи Bearer, суммы в копейках. Повторный запрос с тем же Idempotency-Key не создаст второй платёж — безопасно ретраить при обрывах сети.

  • Тестовые и боевые ключи — sk_test_ и sk_live_, одинаковые методы и ответы
  • Вебхуки с подписью HMAC-SHA256 и повторами до суток при недоступности
  • USDT в пяти сетях — параметр crypto_network: trc20, ton, bep20, erc20, sol или выбор покупателя на странице оплаты
  • Обёртки для PHP, Python и Node.js передаём при подключении, а примеры справа работают без зависимостей
const res = await fetch('https://api.nordpay.pro/v1/payments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.NORDPAY_SECRET_KEY}`,
    'Idempotency-Key': `order-${order.id}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    amount: 499000,
    currency: 'RUB',
    method: null,
    description: `Заказ №${order.id}`,
    order_id: String(order.id),
    return_url: `https://shop.ru/orders/${order.id}`,
  }),
});

const payment = await res.json();
redirect(payment.confirmation.url);
Варианты оплаты

Как покупатель платит

Выберите сценарий под ваш продукт — их можно сочетать на одном сайте.

  1. Страница оплаты

    Быстрый старт

    Создаёте платёж на сервере и отправляете покупателя по confirmation.url. Все методы, 3-D Secure и QR СБП уже на странице — ничего не нужно верстать.

  2. Ссылка на оплату

    Без разработчика

    Без кода: ссылку или QR создаёте в кабинете и отправляете клиенту в мессенджер или по почте. Подходит для услуг, предоплат, самозанятых и частных лиц без сайта.

  3. QR СБП в своём интерфейсе

    Для приложений

    Берёте sbp.qr_payload из ответа API и рисуете QR прямо в приложении или на экране кассы. Статус приходит вебхуком и по SSE.

checkout.js
document.querySelector('#pay').addEventListener('click', async () => {
  const res = await fetch('/api/orders/1042/pay', { method: 'POST' });
  const { confirmation_url } = await res.json();
  window.location.assign(confirmation_url);
});

Платёж создаётся на вашем сервере секретным ключом, в браузер уходит только ссылка confirmation.url. Ключи никогда не попадают во фронтенд.

Вебхуки

Узнайте об оплате раньше, чем покупатель вернётся на сайт

Каждое событие подписано: заголовок NordPay-Signature содержит время и HMAC-SHA256 от тела запроса. Если ваш сервер не ответил 2xx, повторим через 1 минуту, 5 и 30 минут, 2, 6 и 24 часа.

Тестовую отправку любого события можно сделать из кабинета — с реальной подписью и журналом ответов вашего сервера.
Вебхуки в документации
webhook.js
import crypto from 'node:crypto';
import express from 'express';

const app = express();

app.post('/webhooks/nordpay', express.raw({ type: 'application/json' }), (req, res) => {
  const header = req.get('NordPay-Signature') || '';
  const { t, v1 } = Object.fromEntries(header.split(',').map((p) => p.split('=')));
  const expected = crypto
    .createHmac('sha256', process.env.NORDPAY_WEBHOOK_SECRET)
    .update(`${t}.${req.body}`)
    .digest('hex');

  const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;
  const valid = v1 && v1.length === expected.length && crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
  if (!fresh || !valid) return res.sendStatus(400);

  const event = JSON.parse(req.body);
  if (event.type === 'payment.succeeded') markOrderPaid(event.data.object.order_id);
  res.sendStatus(200);
});
Подключение

Нужна помощь с интеграцией?

Подскажем, какой сценарий подойдёт, пришлём модуль для вашей CMS и проверим тестовые платежи вместе с вашим разработчиком.

Менеджер по подключению
@nyajacky
Пн–Пт, 10:00–19:00 (МСК)
  • Подключение бесплатно, без абонентской платы
  • Компании, ИП, самозанятые и частные лица
  • Тестовый ключ — до подписания договора