Официальный TypeScript SDK
loveandpay-sdk
Официальный SDK для TypeScript/JavaScript — установите через npm, yarn или pnpm.
Установка
npm install loveandpay-sdk
Быстрый старт
import { LoveAndPay } from 'loveandpay-sdk';
// Инициализация клиента
const client = new LoveAndPay({
apiKey: process.env.LOVEANDPAY_API_KEY!,
});
// Создание счёта
const invoice = await client.invoices.create({
amount: 1500,
currency: 'RUB',
description: 'Оплата заказа #12345',
});
console.log(`Ссылка для оплаты: ${invoice.paymentLink}`);
Возможности SDK
Полная типизация
TypeScript типы для всех методов и параметров
Автодополнение
IDE подсказки для быстрой разработки
Без зависимостей
Нет внешних зависимостей, только встроенный fetch
ESM и CommonJS
Поддержка обоих форматов модулей
API Reference
Инициализация
import { LoveAndPay } from 'loveandpay-sdk';
const client = new LoveAndPay({
apiKey: 'pk_live_xxx', // Обязательно
baseUrl: 'https://loveandpay.io/api/v1', // Опционально
timeout: 30000, // Опционально, мс
});
Счета (Invoices)
// Создание счёта
const invoice = await client.invoices.create({
amount: 1500,
currency: 'RUB',
description: 'Оплата заказа',
customer: {
email: '[email protected]',
name: 'Иван Иванов',
phone: '+79991234567',
},
metadata: {
orderId: '12345',
},
});
// Получение счёта по ID
const invoice = await client.invoices.get('invoice-id');
// Получение списка счетов
const { data: invoices, pagination } = await client.invoices.list({
status: 'PAID',
limit: 10,
});
// Получение QR-кода
const qr = await client.invoices.getQRCode('invoice-id', {
size: 300,
format: 'png',
});
// Отмена счёта
const cancelled = await client.invoices.cancel('invoice-id', 'Причина отмены');
Вебхуки (Webhooks)
// Создание вебхука
const webhook = await client.webhooks.create({
url: 'https://yoursite.com/webhook',
events: ['INVOICE_PAID', 'INVOICE_EXPIRED'],
});
console.log(`Секрет: ${webhook.secret}`); // Сохраните!
// Список вебхуков
const { data: webhooks } = await client.webhooks.list();
// Получение вебхука по ID
const webhook = await client.webhooks.get('webhook-id');
// Удаление вебхука
await client.webhooks.delete('webhook-id');
Верификация подписи вебхука
import express from 'express';
import { LoveAndPay } from 'loveandpay-sdk';
const app = express();
const client = new LoveAndPay({ apiKey: 'your-api-key' });
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-webhook-signature'] as string;
const rawBody = req.body.toString();
// Верификация подписи
const isValid = client.webhooks.verifySignature(
rawBody,
signature,
process.env.WEBHOOK_SECRET!
);
if (!isValid) {
return res.status(401).json({ error: 'Invalid signature' });
}
// Парсинг payload
const payload = client.webhooks.parsePayload(rawBody);
switch (payload.event) {
case 'INVOICE_PAID':
console.log(`Счёт ${payload.data.id} оплачен!`);
break;
case 'INVOICE_EXPIRED':
console.log(`Счёт ${payload.data.id} истёк`);
break;
}
res.json({ success: true });
});
// Или всё в одном шаге с verifyAndParse:
app.post('/webhook2', express.raw({ type: 'application/json' }), (req, res) => {
try {
const payload = client.webhooks.verifyAndParse(
req.body.toString(),
req.headers['x-webhook-signature'] as string,
process.env.WEBHOOK_SECRET!
);
// payload уже проверен и распарсен
console.log(payload.event, payload.data);
res.json({ success: true });
} catch (error) {
res.status(401).json({ error: 'Invalid signature' });
}
});
Асинхронная верификация (для браузера)
// Для браузерных окружений без Node.js crypto
const isValid = await client.webhooks.verifySignatureAsync(
rawBody,
signature,
secret
);
KYC Верификация
// Создание сессии
const session = await client.kyc.createSession({
level: 'basic',
redirectUrl: 'https://yoursite.com/kyc-complete',
metadata: { userId: 'user-123' },
});
console.log(`Ссылка для верификации: ${session.verificationUrl}`);
// Проверка статуса
const status = await client.kyc.getSession('session-id');
if (status.status === 'COMPLETED') {
console.log('Верификация пройдена!');
}
// Список всех сессий
const { data: sessions, pagination } = await client.kyc.listSessions({
limit: 10,
status: 'COMPLETED',
});
Аналитика
// Аналитика за период
const analytics = await client.analytics.get({
from: '2024-01-01',
to: '2024-01-31',
});
console.log(`Всего счетов: ${analytics.summary.totalInvoices}`);
console.log(`Оплачено: ${analytics.summary.totalAmount} RUB`);
console.log(`Конверсия: ${analytics.summary.conversionRate}%`);
// Быстрые методы
const today = await client.analytics.today();
const week = await client.analytics.lastWeek();
const month = await client.analytics.lastMonth();
Batch операции
// Создание нескольких счетов
const result = await client.batch.createInvoices([
{ amount: 1000, description: 'Заказ 1' },
{ amount: 2000, description: 'Заказ 2' },
{ amount: 3000, description: 'Заказ 3' },
]);
console.log(`Успешно: ${result.successful.length}`);
console.log(`Ошибки: ${result.failed.length}`);
Identy (AI Валидация подписей)
Identy API работает на отдельном домене https://identy.loveandpay.io и не требует аутентификации.
// Получение категорий
const categories = await client.identy.getCategories();
// Валидация подписи (Base64)
const result = await client.identy.validate(imageBase64, 'image/png');
if (result.isValid && result.confidenceScore > 80) {
console.log('Подпись подлинная!');
} else {
console.log(`Проблема: ${result.description}`);
console.log('Рекомендации:', result.recommendations);
}
// Валидация файла (Node.js)
import { readFileSync } from 'fs';
const file = new Blob([readFileSync('signature.png')]);
const result = await client.identy.validateFile(file);
Обработка ошибок
import { LoveAndPay, LoveAndPayError } from 'loveandpay-sdk';
try {
const invoice = await client.invoices.get('invalid-id');
} catch (error) {
if (error instanceof LoveAndPayError) {
console.log('Код ошибки:', error.statusCode);
console.log('Тип:', error.error);
console.log('Сообщение:', error.message);
}
}
Типы
Все типы экспортируются из пакета:
import type {
Invoice,
InvoiceStatus,
CreateInvoiceParams,
Webhook,
WebhookEvent,
WebhookPayload,
KYCSession,
AnalyticsSummary,
SignatureValidationResult,
LoveAndPayConfig,
LoveAndPayError,
} from 'loveandpay-sdk';
Поддерживаемые платформы
| Платформа | Поддержка |
|---|
| Node.js 18+ | ✅ |
| Bun | ✅ |
| Deno | ✅ |
| Edge Functions (Vercel, Cloudflare) | ✅ |
| Браузер | ⚠️ Только Identy API |
Планы по SDK
TypeScript SDK
Статус: Доступен ✅Первый официальный SDK с полной типизацией
Python SDK
Статус: Планируется 📋Для интеграции с Django, FastAPI, Flask
PHP SDK
Статус: Планируется 📋Для Laravel, Symfony и других фреймворков
Go SDK
Статус: Рассматривается 💭Для высоконагруженных систем
Ссылки