Payout

Node.js

Node.js SDK для интеграции с Payment Easy Payout API.

Node.js

Node.js SDK для интеграции с Payment Easy Payout API.

Установка

git clone https://github.com/unitewt/sdk-payout.git
cd sdk-payout/nodejs
npm install

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

const fs = require('fs');
const { Config, PayoutClient, ServiceCode, BankCode } = require('payout-sdk');

const config = new Config({
  baseUrl: 'https://your-server.example.com',
  username: 'your_username',
  privateKeyPem: fs.readFileSync('./private-key.pem', 'utf8'),
});

const client = new PayoutClient(config);

// Запрос баланса
const balance = await client.balance();
console.log(`Баланс: ${balance.balance} копеек`);

// Выплата на карту
const resp = await client.payment({
  id: 'unique-tx-id',
  sum: 100000, // 1000 рублей в копейках
  service: ServiceCode.BANK_CARD,
  account: '4277255555555555',
  date: new Date(),
  phone: '79999999999',
});

if (resp.isFinalState()) {
  console.log(`Успех: ${resp.isSuccessful()}`);
}

// Проверка статуса
const status = await client.getStatus('unique-tx-id');
console.log(`code=${status.code}, state=${status.state}, final=${status.final}`);

Конфигурация

const config = new Config({
  baseUrl: 'https://your-server.example.com',       // URL сервера
  username: 'your_username',                         // имя пользователя
  privateKeyPem: '-----BEGIN PRIVATE KEY-----...',   // RSA приватный ключ (PEM)
  serverPublicKeyPem: '-----BEGIN PUBLIC KEY-----...', // опционально: верификация ответов
  timeoutMs: 300000,                                 // таймаут в мс (по умолчанию 300000)
});
ПараметрТипОбязательныйПо умолчаниюОписание
baseUrlstringдаURL сервера
usernamestringдаИмя пользователя
privateKeyPemstringдаRSA приватный ключ (PEM)
serverPublicKeyPemstringнетnullПубличный ключ сервера
timeoutMsnumberнет300000HTTP таймаут (мс)

API

PayoutClient

МетодОписаниеВозвращает
balance()Запрос балансаPromise<BalanceResponse>
payment(params)Выполнение выплатыPromise<PaymentResponse>
getStatus(txId)Проверка статусаPromise<PaymentResponse>

Параметры payment()

ПараметрТипОбязательныйОписание
idstringдаУникальный ID транзакции (до 64 байт)
sumnumberдаСумма в копейках
serviceServiceCodeдаТип сервиса
accountstringдаНомер карты / телефона / кошелька
dateDateдаДата транзакции
phonestringдаТелефон плательщика
payeeBankCodestringнетКод банка получателя (для СБП)

PaymentResponse

Свойство/МетодТипОписание
idstringВаш ID транзакции
codenumberКод результата
statenumberСостояние платежа
finalnumber1 = финальный статус
transstringID транзакции на стороне шлюза
feenumber|nullКомиссия в копейках
errorDescriptionstring|nullОписание ошибки
isSuccessful()booleancode=0, state=60, final=1
isFailed()booleancode=20, state=80, final=1
isNotFound()booleancode=15, state=-2, final=1
isProcessing()booleancode=1, state=40, final=0
isFinalState()booleanfinal=1

BalanceResponse

СвойствоТипОписание
balancenumberБаланс в копейках
overdraftnumberОвердрафт в копейках

Сервисы

ServiceCode.BANK_CARD    // 24 — банковские карты
ServiceCode.QIWI_WALLET  // 25 — кошельки QIWI
ServiceCode.SBP           // 26 — СБП
ServiceCode.MOBILE_PHONE  // 28 — мобильные телефоны

Коды банков (СБП)

BankCode.SBERBANK_OF_RUSSIA  // '100000000111'
BankCode.TINKOFF_BANK        // '100000000004'
BankCode.ALFA_BANK           // '100000000008'
// ... 238 банков

Выплата через СБП

const resp = await client.payment({
  id: 'sbp-tx-id',
  sum: 50000,
  service: ServiceCode.SBP,
  account: '79876543210',
  date: new Date(),
  phone: '79999999999',
  payeeBankCode: BankCode.SBERBANK_OF_RUSSIA,
});

Обработка ошибок

SDK определяет три класса ошибок:

  • PayoutError — базовый класс
  • ApiError — ошибки API (свойства: transactionId, statusCode)
  • SignatureError — ошибки подписи
const { ApiError, SignatureError } = require('payout-sdk');

try {
  const resp = await client.payment(params);
} catch (err) {
  if (err instanceof ApiError) {
    console.error(`API ошибка: ${err.message}, status=${err.statusCode}`);
  } else if (err instanceof SignatureError) {
    console.error(`Ошибка подписи: ${err.message}`);
  }
}

Примеры

  • examples/generate_keys.js — генерация RSA-ключей
  • examples/integration_test.js — полный интеграционный тест
# Генерация ключей
npm run generate-keys

# Интеграционный тест
export PAYOUT_BASE_URL="https://your-server.example.com"
export PAYOUT_USERNAME="your_username"
export PAYOUT_PRIVATE_KEY_PATH="./private-key.pem"

npm run integration-test
Copyright © 2026