Корпоративный мерч в других странах:AMArmeniaGEGeorgiaTRTürkiyeRSSerbiaAEUAECYCyprusITItalyPTPortugalESSpain

Node.js SDK для Польша

@corp-merch/sdk — TypeScript-first, ноль зависимостей, работает на Node 18+, Bun, Deno, Vercel и AWS Lambda.

Установка и init

npm install @corp-merch/sdk. Инициализация: const cm = new CorpMerch({ apiKey: process.env.CM_KEY, country: 'Poland', env: 'production' }). Клиент автоматически загружает VAT 23% и маршрутизирует счета через KSeF; хаб Варшава по умолчанию.

Quickstart — отправка заказа

const order = await cm.orders.create({ idempotencyKey: crypto.randomUUID(), buyer: { vatId: 'EU…' }, lines: [{ sku: 'TSH-001', qty: 200 }], promisedDate: '2026-07-01' }); console.log(order.id, order.estimatedVATAmountCents). Возвращает типизированный Order с discriminated-union status. Ошибки выбрасываются как ValidationError / RateLimitError и т.п.

Верификация webhook

В Express/Fastify route: const event = cm.webhooks.constructEvent(rawBody, req.headers['x-corp-signature'], process.env.CM_WEBHOOK_SECRET); switch (event.type) { case 'invoice.issued': … }. Выбрасывает SignatureVerificationError при mismatch или устаревшем timestamp (>5 мин).

FAQ

ESM или CommonJS?

Оба — dual package. ESM предпочтителен (.mjs + .d.ts), CommonJS через require() работает через package.json exports.

Работает с Bun и Deno?

Да — тестируется в CI на Bun 1.x и Deno 1.x с той же test suite, что и Node. Используйте npm: specifier в Deno или просто import в Bun.

Как настраиваются retry?

По умолчанию 3 retry на 5xx, 429 и сетевые ошибки с backoff. Override через new CorpMerch({ retries: 5, retryBackoffMs: 200 }).

Есть streaming-метод для каталога?

Да — cm.catalog.list({ country: 'Poland' }) возвращает AsyncIterator; for await (const item of …) итерирует по всем страницам автоматически (cursor внутри).

Исходники доступны?

MIT-лицензия на GitHub: github.com/corp-merch/sdk-js. PR приветствуются; CLA требуется для нетривиальных вкладов.

Поговорите со специалистом