מדריך הגדרת פרויקט ו-API של commercetools

הגדרה שגויה של פרויקט commercetools בתחילת הדרך מובילה לשגיאות במחירים, מטבעות ואזורים, שדורשות לאחר מכן שבועות לתיקון. אנו מגדירים פרויקט ו-API של commercetools במתכונת turnkey, ובונים את ארכיטקטורת הערוצים והחנויות הנכונה כבר מהניסיון הראשון. הצוות שלנו מטפל בכל המחזור—מביקורת ועד יישום ותמיכה שוטפת—כך שהחנות שלכם פועלת באופן אמין וגדלה יחד עם העסק.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
מדריך הגדרת פרויקט ו-API של commercetools
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

לאחר יצירת פרויקט ב-commercetools, רבים נתקלים בשגיאות בלתי צפויות: מחירים המוצגים במטבע שגוי, תרגומים חסרים, סל קניות שאינו מגיב לשינויי אזור. הסיבה היא תצורה ראשונית לא תקינה. תיקון הבעיה אורך שבוע, מכיוון שהפרויקט חי עם אזור קבוע והגדרות בסיסיות. לדוגמה, מקרה אחרון: לקוח מרוסיה ראה יורו במקום דולרים. התברר שלא נוצרה ערוץ (Channel) לשוק הרוסי. התיקון ארך 3 ימים באמצעות עדכון מחירים בכמות גדולה. מצב זה אופייני — 70% מבעיות התמחור נובעות מתצורת ערוצים ראשונית שגויה. המהנדסים שלנו, עם חמש שנות ניסיון בעבודה עם commercetools, מקימים פרויקטים במפתח מלא, ומבטיחים ארכיטקטורה נכונה.

כבר סיפקנו למעלה מ-30 פרויקטים עבור חנויות מסחריות ומוצריות. כל התקנה כוללת תיעוד, סקריפטים להעברת נתונים והדרכת צוות. טעויות בשלב התצורה הראשונית עולות מאוחר יותר במאות שעות עבודה — קל יותר למנוע. קבלו ייעוץ על הארכיטקטורה של הפרויקט שלכם.

בחירת אזור והמגבלות שלו

commercetools פועל על GCP ו-AWS במספר אזורים. זמן השהייה בין אזורים יכול להגיע ל-200 אלפיות השנייה, מה שקריטי עבור בקשות API של חנות. בחירת אזור שגוי עלולה להוביל לעלויות העברת נתונים נוספות, שהיקפן תלוי בפרויקט.

אזור מארח API מארח אימות
אירופה (GCP) api.europe-west1.gcp.commercetools.com auth.europe-west1.gcp.commercetools.com
מזרח ארה"ב (GCP) api.us-central1.gcp.commercetools.com auth.us-central1.gcp.commercetools.com
אוסטרליה api.australia-southeast1.gcp.commercetools.com auth.australia-southeast1.gcp.commercetools.com
אירופה (AWS) api.eu-west-1.aws.commercetools.com auth.eu-west-1.aws.commercetools.com

עבור שוק חבר העמים, בחרו ב-europe-west1.gcp. האזור קבוע עם יצירת הפרויקט ואינו ניתן לשינוי. שגיאה בשלב זה הופכת העברת נתונים לאזור אחר לבלתי אפשרית ללא שכפול מלא. ראו תיעוד commercetools.

תצורה ראשונית דרך Merchant Center

לאחר יצירת פרויקט ב-mc.commercetools.com, הגדירו את הפרמטרים הבסיסיים. הגדרות → בינלאומי:

  • שפות: ru, en (הראשונה היא ברירת המחדל)
  • מטבעות: USD, USD, EUR
  • מדינות: RU, BY, KZ

הגדרות אלו קובעות את הערכים המותרים עבור מחירים, תרגומים ומשלוחים בכל הפרויקט. אם לא צוינה שפת ברירת מחדל, חלק מהבקשות יחזירו מחרוזות ריקות במקום תרגומים.

כיצד להגדיר ערוצים וחנויות?

ערוץ (Channel) הוא הפשטה לתמחור ומלאי. חנות (Store) היא נקודת מכירה עם סינון קטלוג. שימוש בערוץ נפרד לכל חנות מפחית משמעותית את הסיכון לחפיפת מחירים — אימתו זאת בפועל.

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

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), צרו ערוץ וחנות נפרדים לכל אחד. זה מבטיח שמחירים ומלאי לא יתערבבו בין אזורים.

כיצד להגדיר לקוחות API עם הרשאות מינימליות?

כל שירות מקבל לקוח API משלו עם ההרשאות המינימליות הנדרשות. זהו הבסיס לאבטחה. היקפי הרשאות מומלצים לכל לקוח:

לקוח היקפי הרשאות
storefront-anonymous view_products, view_categories, manage_my_carts, manage_my_orders
storefront-customer + manage_my_profile, manage_my_payments
backend-import manage_products, manage_orders, manage_customers
terraform manage_project (תשתית בלבד)

לקוח עבור חנות (אנונימי):

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}`,
  ],
});

עבור משתמשים מאומתים, נעשה שימוש בלקוח דומה עם הרשאות נוספות // Создать Channel и Store const channel = await apiRoot.channels().post({ body: { key: "storefront-ru", roles: ["ProductDistribution", "InventorySupply"], name: { ru: "Сайт Россия", en: "Website Russia" }, defaultLocale: "ru", defaultCurrency: "USD", address: { country: "RU" }, }, }).execute(); 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(); ו-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}`, ], }); .

מדוע להשתמש ב-Terraform לתצורה?

שמירת תצורת הפרויקט ב-Git היא פרקטיקה טובה לסביבות ניתנות לשחזור. Terraform מפחית שגיאות תצורה פי 3 בהשוואה להגדרה ידנית דרך Merchant Center. שימוש ב-Terraform יכול להפחית משמעותית שגיאות תצורה ולייעל פריסות.

# 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 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();

מה כלול בהקמת פרויקט במפתח מלא

אנו מספקים סט מלא של נכסים:

  • תיעוד ארכיטקטורה עם דיאגרמות.
  • סקריפטים להעברת נתונים מהמערכת הנוכחית שלכם.
  • סביבות מוגדרות: dev, staging, production.
  • אינטגרציית CI/CD.
  • הדרכת צוות: 2-3 מפגשים.
  • תמיכה למשך 14 ימים לאחר ההשקה.

טעויות אופייניות ורשימת בדיקה

לפני תחילת הפיתוח, בדקו:

רשימת בדיקה להקמת פרויקט commercetools
  • [ ] אזור נבחר, פרויקט נוצר
  • [ ] שפות ומטבעות הוגדרו בהגדרות
  • [ ] ערוצים נוצרו (לפחות 1 לכל חנות)
  • [ ] חנויות מקושרות לערוצים
  • [ ] לקוחות API נוצרו עם היקפי הרשאות מינימליים
  • [ ] סוגי מוצרים הוגדרו (יישור סכמת תכונות עם צוות התוכן)
  • [ ] אזורי משלוח נוספו
  • [ ] קטגוריות מס נוצרו
  • [ ] התצורה נשמרה ב-Terraform (אופציונלי אך מומלץ)

הקמת פרויקט ראשונית אורכת 1–2 ימי עסקים בתנאי שיש דרישות ברורות למבנה הקטלוג. הזמינו הקמת פרויקט commercetools במפתח מלא — המהנדסים שלנו יכינו את הארכיטקטורה תוך יום אחד.