previewOrder
عاين حساب الطلب دون إنشائه. التفويض اختياري. بدونه، لا تتضمن المعاينة بيانات المكافآت: تكون discountConfig.bonus بقيمة null، وbonusApplied بقيمة 0، ويُتجاهل أي bonusAmount. أما للمستخدم المفوَّض، فتتضمن المعاينة رصيد مكافآته.
الوصف
يحسب الطلب دون إنشائه: مجاميع المنتجات، والخصومات والمكافآت المطبَّقة، والمبلغ المستحق. يُعيد IOrderPreviewResponse.
يقبل الجسم products فقط، واختياريًا couponCode وadditionalDiscountsMarkers وbonusAmount؛ ولا حاجة إلى نموذج أو حساب دفع. products مطلوب ويجب ألا يكون فارغًا؛ وإلا تستجيب واجهة API بالخطأ 400.
.previewOrder(
,
);
مخطط المعلمات
المخطط
body(required): ICreateOrderPreview
معاملات معاينة الطلب.
body.products: IPreviewOrderProduct[]
المنتجات المراد تضمينها في المعاينة.
products.productId: number
معرّف المنتج.
مثال: 1
products.quantity: number
كمية المنتج.
مثال: 2
body.couponCode: string
رمز القسيمة للتطبيق.
body.additionalDiscountsMarkers: string[]
علامات الخصومات الإضافية المراد تطبيقها.
body.bonusAmount: number
مبلغ المكافأة للتطبيق.
langCode: string
رمز اللغة. الافتراضي: langCode المُمرَّر إلى defineOneEntry ("en_US" إذا لم يُمرَّر).
مثال: "en_US"
أمثلة
مثال بسيط
const body = { { , } ]};
const response = await Orders.previewOrder(body);
مثال على الاستجابة
{
"totalSum": 300,
"totalSumWithDiscount": 285,
"bonusApplied": 0,
"totalDue": 285,
"discountConfig": {
"orderDiscounts": [
{
"id": 2,
"identifier": "personal_discount",
"type": "PERSONAL_DISCOUNT",
"localizeInfos": {
"title": "Personal discount"
},
"startDate": "2026-04-21T18:26:19.815Z",
"endDate": "2028-03-21T19:26:24.741Z",
"discountValue": {
"value": 15,
"maxAmount": null,
"discountType": "FIXED_AMOUNT",
"applicability": "TO_ORDER"
},
"exclusions": null,
"position": 1,
"conditionLogic": "AND",
"gifts": [],
"userGroups": null,
"userExclusions": null,
"conditions": [],
"coupon": null
}
],
"productDiscounts": [],
"coupon": null,
"settings": {
"allowStacking": true,
"maxDiscountValue": 50,
"allowGiftStacking": false,
"maxBonusPaymentPercent": null,
"minBonusAmount": null,
"minOrderAmountForBonus": null,
"giftRefundPolicy": "KEEP_GIFT"
},
"bonus": {
"availableBalance": 0,
"maxBonusDiscount": 0,
"minBonusAmount": null,
"minOrderAmountForBonus": null,
"bonusApplied": 0
}
},
"currency": "USD",
"orderPreview": [
{
"id": 2957,
"isGift": false,
"price": 150,
"discountPrice": null,
"quantity": 2
}
]
}
مخطط الاستجابة
المخطط: IOrderPreviewResponse
totalSum: number
إجمالي مبلغ الطلب قبل الخصومات.
مثال: 300
totalSumWithDiscount: number
إجمالي مبلغ الطلب بعد الخصومات.
مثال: 250
discountConfig: IOrderDiscountConfig
تكوين الخصم المطبق على الطلب.
discountConfig.bonus: IOrderDiscountBonus | null
نتيجة حساب المكافآت: null عند عدم استخدام المكافآت؛ ويُحذف عندما لا يكون للطلب سياق مكافآت.
discountConfig.coupon: unknown | null
القسيمة المطبقة، أو null عند عدم تطبيق أي قسيمة.
discountConfig.orderDiscounts: unknown[]
خصومات على مستوى الطلب تم مطابقتها وتطبيقها.
discountConfig.productDiscounts: unknown[]
خصومات على مستوى المنتج تم مطابقتها وتطبيقها.
discountConfig.settings: IOrderDiscountSettings
إعدادات التكديس والحد المستخدمة أثناء الحساب.
discountConfig.additionalDiscountsMarkers: string[]
علامات الخصومات الإضافية التي طلبها العميل. تُحذف في استجابات المعاينة.
discountConfig.bonusApplied: number
مبلغ المكافأة المطبق على الطلب. يُحذف في استجابات المعاينة.
مثال: 0
discountConfig.excludedGiftProductIds: string[]
معرّفات المنتجات المستبعدة من اختيار الهدايا. تُحذف في استجابات المعاينة.
discountConfig.totalDue: number
إجمالي المبلغ المستحق بعد الخصومات والمكافآت (تم حذفه في استجابات المعاينة).
مثال: 300
discountConfig.totalRaw: number
إجمالي المبلغ قبل الخصومات (تم حذفه في استجابات المعاينة).
مثال: 300
discountConfig.totalSumWithDiscount: number
إجمالي المبلغ بعد الخصومات ولكن قبل المكافآت (تم حذفه في استجابات المعاينة).
مثال: 300
currency: string
عملة الطلب.
مثال: "USD"
orderPreview: IOrderPreviewItem[]
معاينة عناصر الطلب.
orderPreview.id: number
معرّف المنتج.
مثال: 2954
orderPreview.price: number
سعر الوحدة للمنتج قبل الخصومات.
مثال: 51
orderPreview.quantity: number
كمية المنتج.
مثال: 1
orderPreview.discountPrice: number | null
سعر الوحدة بعد الخصومات، أو null عندما لا يتم تطبيق أي خصم.
مثال: null
orderPreview.isGift: boolean
هل المنتج هدية.
مثال: false
bonusApplied: number
مبلغ المكافأة المطبق على الطلب.
totalDue: number
الإجمالي المستحق بعد المكافآت.