Налаштування commercetools Project і API

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування commercetools Project і API
Середня
~3-5 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування commercetools Project та API

Перший крок перед будь-якою розробкою — правильне налаштування Project: регіони, валюти, мови, канали, сторе та API-клієнти. Помилки на цьому етапі дорого коштують: перенесення Project між регіонами не передбачено, а неправильна структура каналів ламає ціноутворення.

Вибір регіону

commercetools працює на GCP та AWS у кількох регіонах:

Регіон API Host Auth Host
Europe (GCP) api.europe-west1.gcp.commercetools.com auth.europe-west1.gcp.commercetools.com
US East (GCP) api.us-central1.gcp.commercetools.com auth.us-central1.gcp.commercetools.com
Australia api.australia-southeast1.gcp.commercetools.com auth.australia-southeast1.gcp.commercetools.com
Europe (AWS) api.eu-west-1.aws.commercetools.com auth.eu-west-1.aws.commercetools.com

Для ринку СНД — europe-west1.gcp. Регіон фіксується при створенні Project та не змінюється.

Первинне налаштування через Merchant Center

Після створення Project в mc.commercetools.com налаштуйте базові параметри:

Settings → International:

  • Languages: ru, en (перший — за замовчуванням)
  • Currencies: RUB, USD, EUR
  • Countries: RU, BY, KZ

Ці налаштування визначають дозволені значення для цін, перекладів та доставки по всьому Project.

Канали та Сторе

Channel — абстракція для ціноутворення та інвентаря. Store — точка продажу з фільтрацією каталогу.

// Створити Channel
const channel = await apiRoot.channels().post({
  body: {
    key: "storefront-ru",
    roles: ["ProductDistribution", "InventorySupply"],
    name: { ru: "Сайт Россия", en: "Website Russia" },
    defaultLocale: "ru",
    defaultCurrency: "RUB",
    address: { country: "RU" },
  },
}).execute();

// Створити Store з привязкою до Channel
const store = await apiRoot.stores().post({
  body: {
    key: "web-ru",
    name: { ru: "Веб-магазин Россия" },
    countries: [{ code: "RU" }],
    languages: ["ru"],
    distributionChannels: [{ typeId: "channel", id: channel.body.id }],
    supplyChannels: [{ typeId: "channel", id: channel.body.id }],
  },
}).execute();

Якщо потрібно кілька веб-сайтів (RU/BY/KZ), створіть окремий Channel та Store для кожного.

Налаштування API-клієнтів

Кожен сервіс отримує окремого API Client із мінімальними необхідними правами:

// Через Merchant Center: Settings → Developer settings → Create client

// Рекомендовані клієнти:
// 1. storefront-anonymous — view_products, view_categories, manage_my_carts, manage_my_orders
// 2. storefront-customer — + manage_my_profile, manage_my_payments
// 3. backend-import — manage_products, manage_orders, manage_customers
// 4. extensions — manage_orders, view_payments
// 5. terraform — manage_project (тільки для інфраструктурних завдань, не в коді)

Клієнт для сторфронту (anonymous):

const anonymousAuthMiddleware = createAuthMiddlewareForAnonymousSessionFlow({
  host: "https://auth.europe-west1.gcp.commercetools.com",
  projectKey: process.env.CTP_PROJECT_KEY!,
  credentials: {
    clientId: process.env.CTP_STOREFRONT_CLIENT_ID!,
    clientSecret: process.env.CTP_STOREFRONT_CLIENT_SECRET!,
  },
  scopes: [
    `view_products:${process.env.CTP_PROJECT_KEY}`,
    `manage_my_carts:${process.env.CTP_PROJECT_KEY}`,
    `manage_my_orders:${process.env.CTP_PROJECT_KEY}`,
  ],
});

Клієнт для залогованого користувача:

const customerAuthMiddleware = createAuthMiddlewareForPasswordFlow({
  host: "https://auth.europe-west1.gcp.commercetools.com",
  projectKey: process.env.CTP_PROJECT_KEY!,
  credentials: {
    clientId: process.env.CTP_STOREFRONT_CLIENT_ID!,
    clientSecret: process.env.CTP_STOREFRONT_CLIENT_SECRET!,
    user: { username: email, password },
  },
  scopes: [
    `manage_my_profile:${process.env.CTP_PROJECT_KEY}`,
    `view_orders:${process.env.CTP_PROJECT_KEY}`,
  ],
});

Terraform для version-controlled конфігурації

Конфігурація Project в Git — хороша практика для відтворюваних окружень:

# main.tf
terraform {
  required_providers {
    commercetools = {
      source  = "labd/commercetools"
      version = "~> 1.4"
    }
  }
}

provider "commercetools" {
  client_id     = var.ctp_client_id
  client_secret = var.ctp_client_secret
  project_key   = var.ctp_project_key
  token_url     = "https://auth.europe-west1.gcp.commercetools.com"
  api_url       = "https://api.europe-west1.gcp.commercetools.com"
}

resource "commercetools_channel" "storefront_ru" {
  key   = "storefront-ru"
  roles = ["ProductDistribution", "InventorySupply"]
  name = {
    ru = "Сайт Россия"
    en = "Website Russia"
  }
}

resource "commercetools_store" "web_ru" {
  key       = "web-ru"
  name      = { ru = "Веб-магазин Россия" }
  languages = ["ru", "en"]
  countries = ["RU"]

  distribution_channels = [commercetools_channel.storefront_ru.key]
  supply_channels       = [commercetools_channel.storefront_ru.key]
}
terraform init
terraform plan
terraform apply

Типи атрибутів (Product Types)

Product Type — схема атрибутів для групи товарів. Тип атрибута не можна змінити після створення, лише видалити та пересоздати.

await apiRoot.productTypes().post({
  body: {
    key: "apparel",
    name: "Одежда",
    description: "Атрибуты для одежды",
    attributes: [
      {
        name: "brand",
        label: { ru: "Бренд", en: "Brand" },
        type: { name: "text" },
        isRequired: false,
        isSearchable: true,
      },
      {
        name: "size",
        label: { ru: "Размер", en: "Size" },
        type: {
          name: "enum",
          values: [
            { key: "XS", label: "XS" },
            { key: "S", label: "S" },
            { key: "M", label: "M" },
            { key: "L", label: "L" },
            { key: "XL", label: "XL" },
          ],
        },
        isRequired: true,
        isSearchable: true,
      },
    ],
  },
}).execute();

Контрольний список перед запуском розробки

  • Регіон вибрано, Project створено
  • Languages та Currencies налаштовані в Settings
  • Channels створені (мінімум 1 на сторфронт)
  • Stores привязані до Channel
  • API Clients створені з мінімальними scopes
  • Product Types визначені (узгодити схему атрибутів з контент-командою)
  • Shipping zones додані
  • Tax categories створені
  • Конфігурація залита в Terraform (опціонально, але рекомендується)

Час на первинне налаштування Project — 1–2 робочих дні при наявності чіткої вимоги до структури каталогу.