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

Go SDK в Италии

github.com/corp-merch/sdk-go — context-aware клиент, пагинаторы на generics и типизированные ошибки в Италии.

Архитектура — Установка и инициализация в Италии

go get github.com/corp-merch/sdk-go. Инициализация: cm := corpmerch.New(os.Getenv("CM_KEY"), corpmerch.WithCountry("Италия")). Опция country автоматически применяет IVA 22% и маршрутизирует счета через SdI (хаб в Милане). Go 1.22+; ноль внешних зависимостей в ядре (net/http и encoding/json). Drop-in для любого роутера chi/gin/echo.

Как подключить — Быстрый старт с context

ctx, cancel := context.WithTimeout(ctx, 10*time.Second); defer cancel(). order, err := cm.Orders.Create(ctx, &corpmerch.OrderCreateParams{IdempotencyKey: uuid.NewString(), Buyer: &corpmerch.Buyer{VatID: "EU…"}, Lines: []corpmerch.Line{{SKU: "TSH-001", Qty: 200}}}). Пагинация на дженериках: iter := cm.Catalog.List(ctx, params); for iter.Next() { item := iter.Current() }.

Эксплуатация и пограничные случаи — Типизированные ошибки и подпись webhook

Ошибки реализуют errors.Is и errors.As. Проверка: if errors.Is(err, corpmerch.ErrRateLimit) { … }. Проверка webhook: event, err := cm.Webhooks.ConstructEvent(body, signature, secret) с константно-временным сравнением через subtle.ConstantTimeCompare. ID подтверждений Sistema di Interscambio (SdI) доступны как event.Invoice.AcknowledgementID.

Частые вопросы

Какие версии Go?

1.22 и 1.23 в CI; 1.21 может работать, но не гарантируется.

Зависимости?

У ядра ноль внешних зависимостей. Опциональные модули (otel) подтягивают OpenTelemetry.

Generics?

Да — пагинаторы как Iterator[T] с типизированными элементами. Сильно лучше DX, чем reflection.

Подпись webhook?

cm.Webhooks.ConstructEvent(body, sig, secret) — константно-временное сравнение через subtle.ConstantTimeCompare.

IVA 22% и SdI?

На сервере через WithCountry('Италия'). ID подтверждения SdI доступен в типах событий счёта.

Свяжитесь со специалистом