Release notes

Журнал изменений

Что менялось в API и SDK balancedpay.

ДатаИзменение
2026-05-06Webhook signing v2: подпись считается от "<timestamp>.<body>", заголовок X-Freefin-Signature теперь t=…,v1=…,v2=…. Защита от replay-атак. v1 продолжает работать для legacy-клиентов; verifyWebhook во всех 8 SDK поддерживает оба формата.
2026-05-06balancedpay login + ~/.balancedpay/config.json: несколько профилей, проверка ключа при сохранении, balancedpay status / balancedpay use / balancedpay logout.
2026-05-06balancedpay trigger: payment.succeeded/failed/fraud/refunded/cancelled, payout.succeeded/failed — синтетические события одной командой.
2026-05-06Live API Explorer: session-память для зависимых ручек. POST /payments → cancel/refund/get автоматически подтягивают payment.id.
2026-05-06Algolia DocSearch: поддержка через NEXT_PUBLIC_ALGOLIA_* env. При отсутствии — фолбек на локальный полнотекстовый поиск (без регистрации Algolia).
2026-05-06balancedpay-cli: локальный helper, ловит webhook'и через SSE и форвардит на localhost. go install github.com/balancedpay/cli/balancedpay@latest.
2026-05-06Live API Explorer: кнопка Run в каждой ручке, запрос на test-ключе прямо из доки, без CORS (через proxy /api/docs-runner).
2026-05-06SDK на 8 языках: Node.js, Python, PHP, Ruby, Java, .NET, Go, Flutter/Dart. Все с автоматической идемпотентностью и проверкой webhook-подписей.
2026-05-06Палитра поиска по доке (⌘K) с подсветкой совпадений.
2026-05-06Раздел «Best practices»: дедуп webhook-ов, обработка 429, security-чеклист, мониторинг.
2026-05-06OpenAPI 3.0 spec: интерактивная Swagger UI на /docs/openapi, скачиваемый openapi.yaml, готовая база для генерации SDK на 50+ языков.
2026-05-06Multi-language code-табы (curl / Node.js / Python / Go / PHP) на ключевых ручках; раньше был только curl.
2026-05-06Idempotency-Key теперь Stripe-style: повтор с тем же телом возвращает ранее созданный объект (200 OK + idempotent: true), повтор с другим телом возвращает 409 idempotent_conflict.
2026-05-06Раздел «Готовые сценарии»: приём платежа, частичный возврат, polling, realtime SSE.
2026-05-06Стартовый Node.js SDK @balancedpay/sdk: createPayment / createPayout / verifyWebhook + типы TypeScript.
2026-05-06Добавили разделы: «Тестирование (симулятор)», «Метод any (мультиформа)», «Поле metadata», «Возврат покупателя», «Банки СБП», «Realtime (SSE)», «Коды отказов».
2026-05-06Унифицировали failure_code: наружу мерчанту уходит наш словарь (insufficient_funds, card_declined, …), сырой банковский код храним в metadata.bank_failure_code для аудита.
2026-05-06Появился публичный SSE-канал GET /api/v1/public/events под Bearer-ключом.
2026-05-06Появился справочник банков СБП: GET /api/v1/public/banks/sbp.
2026-05-06После оплаты возвращаем покупателя на return_url с query-параметрами ?payment_id=…&status=…
2026-05-06Включили проверку HMAC-подписи и IP allow-list на public-API. На магазине появилась опция «Требовать подпись». Без неё запросы возвращают 401.
2026-05-06Idempotency-Key теперь работает по-настоящему: повторный запрос с тем же ключом вернёт ранее созданный платёж/выплату, а не создаст дубль.
2026-05-06Включили per-merchant rate-limit на public-API. Лимиты настраиваются в админке (раздел «Лимиты API»). Дефолт: 20 burst + 1 req/sec.
2026-05-06Cancel и refund платежа теперь доступны под Bearer-ключом (POST /public/payments/{id}/cancel и /refund).
2026-05-06Добавили webhook-события payment.cancelled и payment.expired.
2026-05-06Дока сужена до публичного API-контура. Настройки магазина и CRUD webhook-endpoint'ов делаются только в ЛК.
2026-05-05Привели список webhook-событий в соответствие с реальным backend.
2026-05-05Многоязычные примеры HMAC-подписи: Node.js, Python, Go, PHP, Ruby, C#, Java.
2026-05-05Все публичные эндпоинты получили curl-примеры и образцы ответов.
2026-05-04Появился промежуточный статус processing с банковским TTL.
2026-05-04TTL-reconciler: pending по нашему TTL → expired, processing по банковскому → expired.
2026-05-04В ответе платежа появился список refunds[] и amount_refunded.