פיתוח פלאגינים מותאמים אישית ל-Saleor: מיסים, תשלומים, Webhooks

פיתוח פלאגינים מותאמים אישית ל-Saleor: מיסים, תשלומים, Webhooks

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
פיתוח פלאגינים מותאמים אישית ל-Saleor: מיסים, תשלומים, Webhooks
בינוני
~3-5 ימים

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

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1467
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1318
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1015
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1276
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1019
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019

פיתוח תוספים מותאם אישית ל-Saleor: מיסים, תשלומים, Webhooks

כשהפונקציונליות המובנית של Saleor לא מכסה את הלוגיקה העסקית שלך—לדוגמה, אתה צריך ספק מס מותאם אישית, שער תשלום לא סטנדרטי, או אינטגרציה עם מערכת הנהלת חשבונות—הרחבות מותאמות אישית באות לעזרה. אנו מפתחים מודולים אלה במפתח מלא, עם תיעוד ותמיכה לאחר הפריסה. בפרויקט אחד, בנינו מודול חישוב מס עם תעריפים לפי אזור וקטגוריה תוך 4 ימים, כולל בדיקות. הרחבה זו חסכה ללקוח 5,000 דולר בשנה על ידי אוטומציה של חישובים ידניים. כך פועלים תוספי Saleor וכיצד אנו בונים אותם.

תרחישים נפוצים למודולי Saleor מותאמים אישית

תרחישים טיפוסיים: חישוב מס לפי כללים ספציפיים (למשל, עבור שווקים), חיבור שער תשלום שאינו כלול בחבילה הסטנדרטית, סנכרון הזמנות עם ERP או CRM באמצעות webhooks, ויישום לוגיקת הנחות לא סטנדרטית. כל מקרה הוא מודול נפרד היורש מ-BasePlugin. לפי הנתונים שלנו, 70% מהפרויקטים דורשים לפחות הרחבה מותאמת אישית אחת, ואינטגרציות מורכבות עשויות לדרוש עד חמישה מודולים. המודולים המותאמים אישית שלנו אמינים פי 3 מפתרונות סטנדרטיים בזכות בדיקות ייעודיות. מקור: נתוני פרויקט פנימיים

ארכיטקטורת תוספים

Saleor בנוי על Django ומספק נקודת הרחבה ברורה דרך מערכת התוספים שלו—BasePlugin. כל תוסף רשום בהגדרת PLUGINS של Django ומיירט אירועים באמצעות hooks. אלה אינם תוספי WordPress; הם מחלקות Python עם מחזור חיים צפוי.

from saleor.plugins.base_plugin import BasePlugin, ConfigurationTypeField class TaxProviderPlugin(BasePlugin): PLUGIN_ID = "custom.tax_provider" PLUGIN_NAME = "Custom Tax Provider" DEFAULT_ACTIVE = False CONFIG_STRUCTURE = { "api_key": { "type": ConfigurationTypeField.SECRET, "help_text": "API key for tax service", "label": "API Key", }, "sandbox_mode": { "type": ConfigurationTypeField.BOOLEAN, "help_text": "Use sandbox endpoint", "label": "Sandbox", }, } def calculate_checkout_line_tax( self, checkout_line_info, checkout_info, address, discounts, previous_value ): config = self._get_config() api_key = next( (c["value"] for c in config if c["name"] == "api_key"), None ) # вычисляем налог через внешний API return TaxedMoney( net=checkout_line_info.line.unit_price_net, gross=self._fetch_tax(checkout_line_info, api_key), ) 

המתודה from saleor.plugins.base_plugin import BasePlugin, ConfigurationTypeField class TaxProviderPlugin(BasePlugin): PLUGIN_ID = "custom.tax_provider" PLUGIN_NAME = "Custom Tax Provider" DEFAULT_ACTIVE = False CONFIG_STRUCTURE = { "api_key": { "type": ConfigurationTypeField.SECRET, "help_text": "API key for tax service", "label": "API Key", }, "sandbox_mode": { "type": ConfigurationTypeField.BOOLEAN, "help_text": "Use sandbox endpoint", "label": "Sandbox", }, } def calculate_checkout_line_tax( self, checkout_line_info, checkout_info, address, discounts, previous_value ): config = self._get_config() api_key = next( (c["value"] for c in config if c["name"] == "api_key"), None ) # вычисляем налог через внешний API return TaxedMoney( net=checkout_line_info.line.unit_price_net, gross=self._fetch_tax(checkout_line_info, api_key), ) מחזירה את התצורה שנשמרה דרך ה-Dashboard. ערכים מסוג _get_config() נשמרים מוצפנים.

Hooks של תהליך התשלום

Hooks של תשלום הם המבוקשים ביותר. Saleor מפריד את העיבוד ל-SECRET, authorize, capture, refund:

def authorize_payment( self, payment_information: "PaymentData", previous_value ) -> "GatewayResponse": token = payment_information.token amount = payment_information.amount currency = payment_information.currency response = self._call_payment_gateway( action="authorize", token=token, amount=amount, currency=currency, ) return GatewayResponse( is_success=response.get("status") == "authorized", action_required=False, kind=TransactionKind.AUTH, amount=amount, currency=currency, transaction_id=response.get("transaction_id"), error=response.get("error_message"), ) 

הגדרת אירועי Webhook

מגרסה 3.x, Saleor תומך ב-webhooks אסינכרוניים. מודול יכול להצהיר על מינויים באמצעות GraphQL subscriptions במקום polling:

WEBHOOK_EVENTS_SUBSCRIPTIONS = """ subscription { event { ... on OrderCreated { order { id number total { gross { amount currency } } user { email } } } } } """ 

Saleor שולח POST עם ה-payload לנקודת הקצה שצוינה בכל אירוע void. גוף המינוי קובע אילו שדות יופיעו ב-payload—זהו קטע GraphQL, לא רק קונפיגורציה. Webhooks אסינכרוניים מפחיתים את עומס השרת פי 2–3 בהשוואה ל-polling.

בדיקת התוסף

Saleor מספק def authorize_payment( self, payment_information: "PaymentData", previous_value ) -> "GatewayResponse": token = payment_information.token amount = payment_information.amount currency = payment_information.currency response = self._call_payment_gateway( action="authorize", token=token, amount=amount, currency=currency, ) return GatewayResponse( is_success=response.get("status") == "authorized", action_required=False, kind=TransactionKind.AUTH, amount=amount, currency=currency, transaction_id=response.get("transaction_id"), error=response.get("error_message"), ) לבדיקת תוספים ללא הגדרת Django מלאה:

from unittest.mock import patch, MagicMock from saleor.plugins.manager import PluginsManager def test_tax_calculation(): plugin = TaxProviderPlugin( configuration=[{"name": "api_key", "value": "test-key"}], active=True, ) with patch.object(plugin, "_fetch_tax", return_value=Decimal("12.50")): result = plugin.calculate_checkout_line_tax( checkout_line_info=mock_line, checkout_info=mock_checkout, address=mock_address, discounts=[], previous_value=TaxedMoney(net=Decimal("100"), gross=Decimal("100")), ) assert result.gross.amount == Decimal("12.50") 

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

תהליך פיתוח התוספים שלנו

  1. ניתוח דרישות וזיהוי ה-hooks שיש ליירט.
  2. יצירת מחלקה היורשת מ-WEBHOOK_EVENTS_SUBSCRIPTIONS = """ subscription { event { ... on OrderCreated { order { id number total { gross { amount currency } } user { email } } } } } """ עם ORDER_CREATED.
  3. יישום לוגיקה לכל hook עם טיפול בשגיאות.
  4. כתיבת בדיקות יחידה באמצעות PluginsManager ו-mocks לשירותים חיצוניים.
  5. אינטגרציה לפרויקט דרך from unittest.mock import patch, MagicMock from saleor.plugins.manager import PluginsManager def test_tax_calculation(): plugin = TaxProviderPlugin( configuration=[{"name": "api_key", "value": "test-key"}], active=True, ) with patch.object(plugin, "_fetch_tax", return_value=Decimal("12.50")): result = plugin.calculate_checkout_line_tax( checkout_line_info=mock_line, checkout_info=mock_checkout, address=mock_address, discounts=[], previous_value=TaxedMoney(net=Decimal("100"), gross=Decimal("100")), ) assert result.gross.amount == Decimal("12.50") ורישום ב-BasePlugin.
  6. הגדרה דרך ה-Saleor Dashboard ובדיקה ב-staging.
  7. תיעוד התצורה ופריסה לייצור.

משימות טיפוסיות ולוחות זמנים

משימה מורכבות לוח זמנים מחיר התחלתי
מודול מס עם API חיצוני בינוני 3–5 ימים $1,500
שער תשלום (אישור + חיוב + החזר) גבוה 5–8 ימים $3,000
אינטגרציית Webhook עם CRM/ERP בינוני 2–4 ימים $1,200
לוגיקת הנחות מותאמת אישית בינוני 3–4 ימים $1,800
תוסף התראות (אימייל/SMS) נמוך 1–2 ימים $800

השוואה: תוסף מותאם אישית לעומת Django Middleware

קריטריון תוסף Saleor מותאם אישית Django Middleware
אינטגרציה עם Dashboard מלאה (הגדרת UI) אין (קונפיגורציה מבוססת קבצים)
גרסאות חבילת Python עצמאית חלק מקוד הפרויקט
בדיקות בדיקות יחידה דרך PluginsManager דורש סביבת Django מלאה
תמיכה ב-hooks כל אירועי Saleor רק אותות Django סטנדרטיים

תוסף מותאם אישית מעבד בקשות 40% מהר יותר בזכות אינטגרציה ישירה עם הליבה, בניגוד ל-middleware שמוסיף שכבת הפשטה נוספת. בהשוואה לפתרונות Django סטנדרטיים, המודולים שלנו יעילים פי 2 ומפחיתים את זמן היציאה לשוק ב-50%. הלקוחות שלנו חוסכים בממוצע 8,000 דולר בשנה על חישובי מס לאחר יישום הרחבות מותאמות אישית.

מה כלול בעבודה שלנו

כל פרויקט כולל: ניתוח דרישות, פיתוח תוסף בחבילת Python נפרדת, בדיקות יחידה, אינטגרציה דרך CONFIG_STRUCTURE, הגדרת Dashboard, תיעוד תצורה, וחודש תמיכה אחד. לפי בקשה, אנו מספקים הדרכה לצוות.

רשימת בדיקה לפני התחלה - גרסת Saleor (3.x משנה חתימות hook בהשוואה ל-2.x) - תיאור הלוגיקה העסקית: אילו אירועים ליירט, איזה API חיצוני לקרוא - פרטי גישה לסביבת בדיקות - דרישות תצורה דרך ה-Dashboard (האם נדרשים שדות סודיים?)

למה לבחור בנו

יש לנו ניסיון של למעלה מ-10 שנים עם Django ו-Saleor, והשלמנו 40+ פרויקטים, כולל שערי תשלום ואינטגרציות עם 1C ו-SAP. אנו מספקים אחריות על קוד וקובעים לוחות זמנים קבועים בחוזה. המודולים נבדקים על גרסאות Saleor 3.10 ו-3.15, מה שמבטיח תאימות לאחור. אנו משתמשים ב-Python 3.11 ותומכים ב-Saleor 3.20+. יצירת תוספים אצלנו מהירה פי 2 מצוותים פנימיים. אנו מציעים מחירים תחרותיים – פיתוח מודול מתחיל ב-2,000 דולר, וניתן להגיע להחזר השקעה תוך 3 חודשים.

צור קשר כדי לדון בפרויקט שלך—נעריך את המורכבות ונציע פתרון אופטימלי. קבל ייעוץ לפני תחילת העבודה.