انتقل إلى المحتوى الرئيسي

createOrder

إنشاء طلب في تخزين الطلبات. 🔐 تتطلب هذه الطريقة التفويض.

الوصف

ستضيف الطريقة اللغة الافتراضية إلى جسم الطلب. إذا كنت ترغب في تغيير اللغة، فقط مررها كوسيط ثانٍ. تقوم بإنشاء طلب في تخزين الطلبات المحدد. تعيد Promise التي تحل إلى كائن IBaseOrdersEntity.

Orders.createOrder(

marker*, body*, langCode

);

مخطط المعلمات

المخطط

marker(required): string
المعرف النصي لكائن تخزين الطلبات
مثال: "order_storage_1"

body(required): IOrderData
كائن لإنشاء طلب
مثال:

{
"formIdentifier": "bar-orders-form",
"paymentAccountIdentifier": "usd-payment",
"formData": {
"marker": "name_1",
"value": "Name",
"type": "string"
},
"products": [
{
"productId": 1,
"quantity": 2
}
]
}

body.formIdentifier(required): string
المعرف النصي لكائن النموذج المرتبط بمستودع الطلبات.
مثال: "bar-orders-form"

body.paymentAccountIdentifier(required): string
المعرف النصي لكائن الدفع المرتبط بمستودع الطلبات.
مثال: "payment-1"

body.formData(required): IOrdersFormData | IOrdersFormData[]
بيانات النموذج المرتبطة بمستودع الطلبات.
مثال:

[
{
"marker": "name_1",
"value": "Name",
"type": "string"
}
]

formData.marker(required): string
علامة حقل النموذج.
مثال: "name_1"

formData.type(required): string
نوع القيمة.
مثال: "string"

formData.value(required): string
القيمة.
مثال: "Name"

body.products(required): IOrderProductData[]
مصفوفة من المنتجات المطلوبة.
مثال: []

products.productId(required): number
معرف المنتج.
مثال: 1

products.quantity(required): number
كمية المنتج.
مثال: 2

products.signedPrice: string
سعر المنتج الموقّع يتم الحصول عليه مع بيانات المنتج عندما يتم تعيين signPrice.
مثال: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

body.couponCode: string
رمز القسيمة.

body.additionalDiscountsMarkers: string[]
مصفوفة من علامات الخصم الإضافية.

body.bonusAmount: number
مبلغ المكافأة للتطبيق.

langCode: string
رمز اللغة. الافتراضي: "en_US"
مثال: "en_US"

🔒 signedPrice هو الرمز الموقّع الذي يحمل السعر المقفل — قم بتمريره مرة أخرى عند إنشاء الطلب. انظر سعر المنتج الثابت (signedPrice).

أمثلة

مثال بسيط


const body = {
"formIdentifier": "orderForm",
"paymentAccountIdentifier": "cash",
"formData": {
{
"marker": "order_name",
"type": "string",
"value": "Ivan"
}
},
"products": [
{
"productId": 2,
"quantity": 2
}
]
};

const response = await Orders.createOrder("my-order", body);

مثال بسعر ثابت (signedPrice)

استرجع المنتجات مع تعيين signPrice إلى علامة تخزين الطلبات الخاصة بك، ثم قم بتمرير كل رمز signedPrice تم إرجاعه مرة أخرى في الطلب حتى يتم احترام السعر المقفل:


const { items } = await Products.getProducts([], "en_US", {
signPrice: "my-order"
});

const body = {
"formIdentifier": "orderForm",
"paymentAccountIdentifier": "cash",
"formData": [],
"products": [
{
"productId": items[0].id,
"quantity": 2,
"signedPrice": items[0].signedPrice
}
]
};

const response = await Orders.createOrder("my-order", body);

استجابة المثال

{
"id": 681,
"formIdentifier": "orderForm",
"paymentAccountIdentifier": "cash",
"formData": [
{
"marker": "order_name",
"value": "Ivan",
"type": "string"
}
],
"products": [
{
"productId": 2957,
"quantity": 2
}
],
"currency": "USD",
"totalSum": 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"
},
"additionalDiscountsMarkers": [],
"totalRaw": 300,
"totalSumWithDiscount": 285,
"excludedGiftProductIds": [],
"bonus": {
"availableBalance": 0,
"maxBonusDiscount": 0,
"minBonusAmount": null,
"minOrderAmountForBonus": null,
"bonusApplied": 0
},
"bonusApplied": 0,
"totalDue": 285
},
"statusIdentifier": "inProgress",
"statusLocalizeInfos": {
"title": "In progress"
},
"createdDate": "2026-06-12T18:05:22.470Z"
}

مخطط الاستجابة

المخطط: IBaseOrdersEntity

id: number
معرف الكائن.
مثال: 1

formIdentifier: string
المعرف النصي للنموذج.
مثال: "bar-orders-form"

paymentAccountIdentifier: string
المعرف النصي لدفع الطلب.
مثال: "payment-1"

formData: IOrdersFormData[]
البيانات المقدمة من النموذج المرتبط بمستودع الطلبات.
مثال:

[
{
"marker": "name_1",
"value": "Name",
"type": "string"
}
]

formData.marker: string
علامة حقل النموذج.
مثال: "name_1"

formData.type: string
نوع القيمة.
مثال: "string"

formData.value: string
القيمة.
مثال: "Name"

products: IOrderProductsData[]
مصفوفة من المنتجات المضافة إلى الطلب.
مثال:

[
{
"id": 2957,
"title": "Cosmo",
"sku": null,
"previewImage": null,
"price": 150,
"quantity": 2
}
]

products.productId: number
معرف المنتج.
مثال: 1

products.quantity: number
كمية المنتج.
مثال: 2

currency: string
العملة المستخدمة لدفع الطلب.
مثال: "USD"

totalSum: string
إجمالي مبلغ الطلب.
مثال: "150"

createdDate: string
تاريخ إنشاء الطلب.
مثال: "2023-10-01T12:00:00Z"

statusIdentifier: string
المعرف النصي لكائن حالة الطلب (إذا لم يتم تعيينه، سيتم تعيين الحالة الافتراضية).
مثال: "status-1"

couponCode: string
**

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

bonusAmount: number
مبلغ المكافأة المطبق على الطلب.

bonusApplied: number
المكافأة المطبقة على الطلب.

totalDue: number
الإجمالي المستحق بعد المكافآت.


أمثلة الاستخدام

خطوات تفصيلية في الوثائق:

جربها مباشرة

قم بتشغيل هذه الطريقة بشكل تفاعلي في صندوق أدوات JS SDK — قم بتوصيل عنوان مشروعك ورمز التطبيق في الزيارة الأولى، ثم افتح: