MMyPayОткрыть кабинет
Все разделы

@mypay/sdk

npm-пакет для Node.js: ссылки на оплату, счета для «Мой Налог» и проверка webhook-подписи на вашем сервере.

Установка

Пакет публикуется под @mypay/sdk и требует Node.js 18+.

Terminal

npm i @mypay/sdk

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

Токен выпускается из кабинета. Все методы SDK оборачивают REST API и возвращают типизированные ответы.

server.js

import { MyPay } from '@mypay/sdk';

const mypay = new MyPay({
  apiKey: process.env.MYPAY_API_KEY,
  baseUrl: 'https://api.mypay.ru/v1',
});

const link = await mypay.paymentLinks.create({
  amount: 1200.0,
  description: 'Консультация · 60 минут',
});
// { token: 'pay_a1b2…', url: 'https://pay.mypay.ru/pay/pay_a1b2…' }

Создание ссылки

  • paymentLinks.create(input) - новая ссылка; передайте idempotencyKey, чтобы избежать дублей.
  • paymentLinks.list(cursor, limit) - пагинация ключ-курсором.
  • paymentLinks.pause(token) / resume(token) - приостановить или возобновить ссылку.
  • payments.list() - список платежей со статусами и суммами.
  • payments.refund(id) - возврат по успешному платежу.

Проверка webhook-подписи

Каждое событие подписано HMAC-SHA256 секретом из кабинета. Проверяйте подпись, прежде чем обрабатывать уведомление.

webhook.js

import { verifySignature } from '@mypay/sdk';

// Express / Fastify / Next.js route
app.post('/webhooks/mypay', (req, res) => {
  const ok = verifySignature({
    secret: process.env.MYPAY_WEBHOOK_SECRET,
    payload: req.rawBody,
    signature: req.headers['x-mypay-signature'],
  });
  if (!ok) return res.status(401).end();
  // событие достоверно - обрабатываем
  res.status(200).end();
});