AXIS STORE AXIS STORE — دليل ربط الشركاء العودة للمتجر تحميل PDF ابدأ الربط
PARTNER API · v1.1

دليل ربط الشركاء

الدليل الرسمي والكامل لربط متجرك أو تطبيقك أو بوتك بـAXIS STORE: استعرض الكتالوج بأسعار شريحتك، وأنشئ الطلبات برمجياً، وتابع تسليمها — بلا أي تدخّل يدوي.

الإصدارv1.1
تاريخ الإصدار2026-09-27
عنوان الواجهةhttps://axissstore.com/api/partner/v1
الناشرAXIS GROUP

المحتويات

كل قسم مستقل — ابدأ بـ«البدء السريع» إن أردت أول طلب خلال دقائق.

  1. 1نظرة عامة
  2. 2من يحق له الربط
  3. 3البدء السريع
  4. 4أساسيات الواجهة
  5. 5المصادقة وأمان المفتاح
  6. 6حدود الاستخدام
  7. 7الحساب والرصيد
  8. 8الأقسام
  9. 9المنتجات
  10. 10التسعير المسبق
  11. 11إنشاء طلب
  12. 12متابعة الطلبات
  13. 13دورة حياة الطلب
  14. 14الكميات والتسعير
  15. 15منع ازدواج الطلبات
  16. 16الأخطاء
  17. 17أمثلة كاملة
  18. 18أفضل الممارسات
  19. 19قائمة التحقق قبل الإطلاق
  20. 20الدعم وسجل التغييرات

1نظرة عامة

واجهة REST بسيطة بصيغة JSON، مصمَّمة لتُبنى عليها متاجر التجزئة والبوتات وأنظمة الموزّعين.

تتيح لك واجهة الشركاء أن تبيع منتجات AXIS STORE من داخل نظامك أنت: تجلب الكتالوج بأسعار شريحتك، وتنشئ الطلب نيابةً عن عميلك، فيُخصم ثمنه من محفظتك لدينا، ويُنفَّذ آلياً، ثم تستلم بيانات التسليم (كوداً أو تأكيد شحن) لتعرضها لعميلك.

الكتالوج بأسعارك

كل الأقسام والمنتجات، بحقول الطلب وقيود الكمية، بسعر شريحتك مباشرةً.

طلبات آمنة للتكرار

مرجعك الفريد يمنع ازدواج الطلب والخصم حتى لو أعدت الإرسال بعد انقطاع.

تنفيذ آلي

الطلب يُرسَل للتنفيذ فور إنشائه، وتتابع حالته حتى الاكتمال أو الاسترداد.

كيف يجري الطلب

GET /products→GET /quote→POST /orders→GET /orders/{ref}→completed ✓
  1. تجلب المنتج لتعرف الحقول المطلوبة (مثل معرّف اللاعب) وقيود الكمية.
  2. تسعّر الطلب اختيارياً لتعرض لعميلك المبلغ الدقيق.
  3. تنشئ الطلب بمرجعٍ فريد من طرفك — يُخصم ثمنه من محفظتك ويبدأ تنفيذه.
  4. تتابع حالته حتى يصير completed فتعرض بيانات التسليم، أو refunded فيعود المبلغ لمحفظتك تلقائياً.

2من يحق له الربط

الربط البرمجي ميزة لشركائنا في الشرائح العليا، بعد موافقة الإدارة.

الشريحةهامشنا على سعر المصدرالربط البرمجي
شريك VIP4%متاح بعد الموافقة
شريك VIP PRO3%متاح بعد الموافقة

3البدء السريع

من صفر إلى أول طلب في خمس خطوات.

  1. أنشئ مفتاحاً: من حسابك ← «الربط البرمجي API» ← «مفتاح جديد». يبدأ المفتاح بـaxk_ ويُعرَض مرة واحدة فقط — احفظه فوراً في مكان آمن على خادمك.
  2. اشحن محفظتك: كل طلب يُخصم من رصيد محفظتك لدينا. تأكّد من الرصيد عبر /me.
  3. تحقّق من الربط: نداء GET /me يعيد اسمك وشريحتك ورصيدك.
  4. اجلب منتجاً: GET /products?q=... لتعرف slug المنتج وحقوله المطلوبة.
  5. أنشئ الطلب وتابعه: POST /orders بمرجعك الفريد، ثم GET /orders/{reference} حتى الاكتمال.
# 1) Verify the connection
curl -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/me

# 2) Find a product
curl -H "X-API-Key: axk_YOUR_KEY" "https://axissstore.com/api/partner/v1/products?q=pubg"

# 3) Create an order — with your own unique reference
curl -X POST https://axissstore.com/api/partner/v1/orders \
  -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"product":"pubg-uc-60","quantity":1,"reference":"SHOP-10001","fields":{"player_id":"5123456789"}}'

# 4) Track its status
curl -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/orders/SHOP-10001

4أساسيات الواجهة

قواعد ثابتة تنطبق على كل نقطة نهاية.

العنوان الأساسيhttps://axissstore.com/api/partner/v1
البروتوكولHTTPS دائماً — المفتاح يُرسَل في كل نداء، ولا يجوز أن يمرّ عبر اتصال غير مشفّر.
الصيغةJSON بترميز UTF-8 في الطلب والرد. أرسل Content-Type: application/json مع كل POST.
المصادقةترويسة X-API-Key في كل نداء (القسم 5).
المبالغبالدولار الأمريكي كنصوص عشرية مثل "12.50" أو "0.000607" — لا تحوّلها إلى float؛ استخدم نوعاً عشرياً دقيقاً (Decimal / BigDecimal).
التواريخISO 8601، مثل 2026-09-27T14:05:31.
لغة البياناتالمعامل lang=ar (افتراضي) أو lang=en على نقاط الكتالوج — يغيّر أسماء المنتجات والأقسام والحقول.
لغة رسائل الخطأترويسة Accept-Language: en للإنجليزية؛ العربية افتراضاً.
الصفحاتالقوائم تقبل page (من 1) وper_page (حتى 100)، وتعيد total وpages.
الإصدارالمسار يحمل الإصدار الرئيسي /v1. نضيف حقولاً جديدة دون كسر ما سبق — تجاهل أي حقل لا تعرفه.

5المصادقة وأمان المفتاح

مفتاحك يعادل محفظتك: من يملكه يستطيع الشراء برصيدك.

X-API-Key: axk_3Jq9vT2kR8...
لا تضع المفتاح في الرابط أبداً. المفتاح في سلسلة الاستعلام (?key=) لا يُقبل ويُعاد 401، لأن الروابط تُحفظ في سجلات كل خادم ووسيط على الطريق.
عند الاشتباه بتسريب: أنشئ مفتاحاً جديداً، حدّث نظامك به، ثم ألغِ القديم — بلا انقطاع للخدمة.

6حدود الاستخدام

حدودٌ سخية لكل مفتاح تحمي استقرار الخدمة للجميع.

الحدّالقيمة
كل النداءات لكل مفتاح120 نداءً في الدقيقة
إنشاء الطلبات لكل حساب60 طلباً في الدقيقة
مراجع الاستعلام الدفعي50 مرجعاً في النداء
عناصر الصفحة الواحدة100

عند تجاوز الحد تُعاد 429 مع ترويسة Retry-After (بالثواني) والحقل details.retry_after:

HTTP/1.1 429 Too Many Requests
Retry-After: 17

{"code": "rate_limited", "message": "محاولات كثيرة. أعد المحاولة بعد 17 ثانية.", "details": {"retry_after": 17}}

انتظر المدة المذكورة ثم أعد المحاولة. القيم الحالية تعيدها /me في limits — اقرأها من هناك بدل تثبيتها في كودك.

7الحساب والرصيد

أول نداء تجريه — ونقطة فحص صحة الربط.

GET/me

يعيد هوية الحساب وشريحته ورصيد المحفظة وحدود الاستخدام.

مثال الرد — 200
{
  "account_no": "90111620",
  "account_seq": 1024,
  "name": "متجر النجم",
  "tier": { "key": "vip", "name": "شريك VIP", "margin_pct": "4.0000" },
  "balance_usd": "250.00",
  "balance_display": "$250.00",
  "currency": "USD",
  "api_version": "1.1",
  "limits": { "requests_per_minute": 120, "orders_per_minute": 60, "batch_max": 50 }
}
نصيحة: راقب balance_usd دورياً ونبّه فريقك حين ينخفض — الطلب برصيدٍ غير كافٍ يُرفض بـ402.

8الأقسام

لبناء قوائم التصفّح في متجرك أو لمزامنة الكتالوج قسماً قسماً.

GET/categories
المعاملالنوعالوصف
langar | enلغة الأسماء. الافتراضي ar.
مثال الرد — 200
{
  "items": [
    { "slug": "pubg-global", "name": "ببجي العالمية", "folder": "الألعاب",
      "image": "https://axissstore.com/media/...", "products_count": 12 }
  ],
  "total": 1
}

تُعاد الأقسام التي فيها منتجات فعّالة فقط. مرّر slug القسم إلى /products?category=.

9المنتجات

كل ما تحتاجه لعرض المنتج وطلبه: السعر بشريحتك، الحقول المطلوبة، وقيود الكمية.

GET/products
المعاملالنوعالوصف
qنصبحث في اسم المنتج.
categoryنصslug القسم.
page / per_pageعددالصفحة (من 1) وعدد العناصر (1–100، الافتراضي 50).
langar | enلغة الأسماء والحقول.
مثال الرد — 200
{
  "items": [{
    "slug": "pubg-uc-60",
    "name": "60 شدة",
    "category": "ببجي العالمية", "category_slug": "pubg-global",
    "image": "https://axissstore.com/media/...",
    "price_usd": "0.9152",
    "min_order_total_usd": "0.9152",
    "in_stock": true,
    "fields": [
      { "key": "player_id", "label": "معرّف اللاعب", "hint": "", "type": "number", "required": true }
    ],
    "min_quantity": 1, "max_quantity": 0, "quantity_step": 1,
    "allowed_quantities": [], "price_unit": 0
  }],
  "page": 1, "per_page": 50, "total": 1, "pages": 1
}

حقول المنتج

الحقلالمعنى
slugالمعرّف الثابت للمنتج — استخدمه في /quote و/orders.
price_usdسعر الوحدة بشريحتك (أو سعر كل price_unit وحدة إن كانت أكبر من صفر).
min_order_total_usdثمن أقلّ كمية يمكن طلبها — الأنسب للعرض حين يكون سعر الوحدة كسراً من السنت.
in_stockهل المنتج متاح للطلب الآن.
fieldsالحقول التي يجب إرسالها مع الطلب (القسم 11).
min_quantity / max_quantityأقل وأكثر كمية (0 = بلا حدّ أعلى).
quantity_stepالكمية يجب أن تكون من مضاعفاته.
allowed_quantitiesإن لم تكن فارغة: هذه الكميات وحدها مقبولة.
price_unitإن كان أكبر من صفر: price_usd هو ثمن كل price_unit وحدة (القسم 14).

أنواع الحقول (fields[].type)

النوعالتحقق على خادمنا
textنص حتى 2000 حرف.
numberأرقام فقط (يُسمح بفاصلة عشرية واحدة).
emailبريد إلكتروني صالح.
urlرابط يبدأ بـ http أو https.
GET/products/{slug}

منتج واحد بكل ما سبق، إضافةً إلى description (وصف المنتج وشروطه) وvariants (الخيارات إن وُجدت):

{
  "slug": "netflix-premium", "name": "نتفليكس بريميوم", ...,
  "description": "يُسلَّم خلال 5 دقائق…",
  "variants": [
    { "id": 41, "name": "شهر", "price_usd": "6.20" },
    { "id": 42, "name": "3 أشهر", "price_usd": "17.40" }
  ]
}

إن كانت variants غير فارغة فأرسل variant_id المختار مع الطلب.

مزامنة الكتالوج: خزّن المنتجات لديك وحدّثها كل 15–60 دقيقة، لا عند كل زيارة لمتجرك. الأسعار تتغيّر بتغيّر تكلفة المصدر، والسعر الملزِم هو ما يُحسب لحظة الطلب.

10التسعير المسبق

احسب ثمن الطلب الدقيق قبل إنشائه — مع التحقق من قيود الكمية.

GET/quote
المعاملالنوعالوصف
product *نصslug المنتج.
quantityعددالكمية (الافتراضي 1).
variant_idعددالخيار، إن كان للمنتج خيارات.
curl -H "X-API-Key: axk_YOUR_KEY" "https://axissstore.com/api/partner/v1/quote?product=tiktok-followers&quantity=5000"

{
  "product": "tiktok-followers", "quantity": 5000, "variant_id": null,
  "unit_price_usd": "1.50", "price_unit": 1000,
  "total_usd": "7.50"
}

التسعير إعلامي: يُعاد حسابه داخل معاملة الطلب نفسه، ولا يُحجز السعر. كمية تخالف القيود تُرفض هنا بنفس خطأ الطلب (409 product_unavailable) — استخدمه للتحقق قبل الخصم.

11إنشاء طلب

يُخصم الثمن من محفظتك ويبدأ التنفيذ فوراً — في نداء واحد.

POST/orders
الحقلالنوعالوصف
product *نصslug المنتج.
reference *نص ≤ 100مرجعك الفريد لهذا الطلب (رقم طلب متجرك مثلاً). يمنع الازدواج — القسم 15.
quantityعددالكمية (الافتراضي 1) وفق قيود المنتج.
fieldsكائنقيم الحقول: {"player_id": "5123456789"} — المفاتيح هي fields[].key من المنتج.
variant_idعددالخيار، إن كان للمنتج خيارات.
noteنص ≤ 500ملاحظة داخلية تظهر مع الطلب.
curl -X POST https://axissstore.com/api/partner/v1/orders \
  -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{
    "product": "pubg-uc-60",
    "quantity": 1,
    "reference": "SHOP-10001",
    "fields": { "player_id": "5123456789" }
  }'
الرد — 201
{
  "reference": "AX-ORD-3F9A2B01",
  "partner_reference": "SHOP-10001",
  "status": "processing",
  "product": "pubg-uc-60", "product_name": "60 شدة",
  "quantity": 1, "unit_price_usd": "0.9152", "total_usd": "0.9152",
  "fields": { "player_id": "5123456789" },
  "delivery": "",
  "created_at": "2026-09-27T14:05:31", "completed_at": null
}
  • الرد يحمل مرجعنا reference ومرجعك partner_reference — تستطيع المتابعة بأيٍّ منهما.
  • منتجات كثيرة تكتمل خلال ثوانٍ فيعود الرد مباشرةً بـcompleted ومعه delivery.
  • السعر يُحسب على خادمنا دائماً؛ لا يُقبل أي حقل سعر من طرفك.
الحقول المطلوبة: حقلٌ required ناقص أو بصيغة خاطئة يُرفض بـ422 قبل أي خصم. تحقّق منها في متجرك قبل الإرسال لتعرض لعميلك رسالة واضحة.

12متابعة الطلبات

طلبٌ واحد، أو دفعة مراجع، أو كل طلباتك صفحةً صفحة.

GET/orders/{reference}

حالة طلب واحد — {reference} مرجعنا (AX-ORD-…) أو مرجعك أنت. الرد بنفس شكل رد الإنشاء.

curl -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/orders/SHOP-10001

{ "reference": "AX-ORD-3F9A2B01", "partner_reference": "SHOP-10001", "status": "completed",
  ..., "delivery": "تم الشحن إلى المعرّف 5123456789", "completed_at": "2026-09-27T14:05:44" }
GET/orders?references=A,B,C

استعلام دفعي لحتى 50 مرجعاً (مرجعنا أو مرجعك، مفصولة بفواصل) في نداء واحد — الطريقة الموصى بها لمتابعة عدّة طلبات معلّقة:

{
  "items": [ { "partner_reference": "SHOP-10001", "status": "completed", ... },
             { "partner_reference": "SHOP-10002", "status": "processing", ... } ],
  "missing": [ "SHOP-99999" ]
}

تُعاد العناصر بترتيب المراجع المرسلة، وmissing يسرد ما لم يُعثر عليه.

GET/orders

كل طلباتك، الأحدث أولاً.

المعاملالوصف
statusتصفية بحالة واحدة، مثل processing.
page / per_pageالصفحة وعدد العناصر (حتى 100).
{ "items": [ ... ], "page": 1, "per_page": 50, "total": 318, "pages": 7 }

13دورة حياة الطلب

كل طلب ينتهي إلى إحدى حالتين: مكتمل بتسليمه، أو مُسترَد إلى محفظتك.

paid→processing→completed
processing→refunded(يعود المبلغ لمحفظتك تلقائياً)
الحالةالمعنىنهائية؟ماذا تفعل
paidخُصم الثمن والطلب في طريقه للتنفيذ.لاتابِع.
processingقيد التنفيذ لدى المصدر.لاتابِع كل 10–30 ثانية.
completedاكتمل؛ بيانات التسليم في delivery.نعماعرض التسليم لعميلك وتوقّف عن المتابعة.
refundedتعذّر التنفيذ فأُعيد المبلغ كاملاً إلى محفظتك.نعمأبلغ عميلك وأعد له ماله في متجرك.
rejected / failedرُفض الطلب.نعمراجع الطلب في حسابك أو تواصل مع الدعم.
cancelledأُلغي قبل الدفع.نعملا خصم على هذا الطلب.
عن delivery: نصٌّ يصف التسليم (كود، بيانات حساب، أو تأكيد شحن)، ويظهر فقط عند completed. قد يحتوي عدّة أسطر — اعرضه كما هو مع الحفاظ على فواصل الأسطر.
الاسترداد تلقائي: لا تحتاج أن تطلبه. حين يصير الطلب refunded يكون المبلغ قد عاد إلى رصيدك لدينا فعلاً.

14الكميات والتسعير

ثلاثة أنماط للكمية — تعامل معها في متجرك كما يلي.

أ) منتج بالقطعة — price_unit = 0

الإجمالي = price_usd × quantity. بطاقة هدايا بـ"5.20" × 3 = "15.60".

ب) منتج بالوحدة المجمّعة — price_unit > 0

price_usd هو ثمن كل price_unit وحدة، والكمية يجب أن تكون من مضاعفاتها. متابعون بـ"1.50" لكل 1000: طلب 5000 = 5 × 1.50 = "7.50".

ج) كميات محدَّدة — allowed_quantities غير فارغة

تُقبل هذه القيم فقط، مثل [110, 150, 210]. اعرضها لعميلك كخيارات لا كحقل حرّ.

القيدعند مخالفته
أقل من min_quantity409 product_unavailable مع رسالة توضّح القيد — قبل أي خصم.
أكثر من max_quantity (إن لم يكن 0)
ليس من مضاعفات price_unit
خارج allowed_quantities
للعرض: حين يكون سعر الوحدة كسراً صغيراً (مثل "0.000607") اعرض min_order_total_usd مع أقل كمية — «$6.07 لكل 10,000» أوضح لعميلك من «$0.00».

15منع ازدواج الطلبات

أهم قاعدة في الربط: الشبكة تنقطع، والخصم يجب ألّا يتكرر.

كل طلب يحمل reference فريداً من طرفك. إن أعدت إرسال الطلب بنفس المرجع — لانقطاع اتصال أو مهلة أو خطأ في نظامك — يُعاد إليك الطلب الأول نفسه ولا يُنشأ طلب ثانٍ ولا يُخصم مرّتين.

16الأخطاء

كل خطأ يعود بصيغة واحدة ورمز ثابت — ابنِ منطقك على code لا على نص الرسالة.

HTTP/1.1 402 Payment Required

{
  "code": "insufficient_balance",
  "message": "رصيد المحفظة غير كافٍ لإتمام العملية.",
  "details": {}
}
HTTPcodeالسببالإجراء
401unauthenticatedالمفتاح مفقود أو غير صالح أو ملغى، أو سُحبت صلاحية الربط.تحقّق من الترويسة والمفتاح.
402insufficient_balanceالرصيد لا يكفي للطلب.اشحن محفظتك. لا خصم حدث.
403forbiddenالعملية غير مسموحة لحسابك.راجع شريحتك.
403account_suspendedالحساب موقوف.تواصل مع الدعم.
404not_foundمنتج أو قسم أو طلب غير موجود (أو ليس لك).تحقّق من slug أو المرجع.
409product_unavailableالمنتج غير متاح، أو الكمية تخالف القيود، أو السعر غير مضبوط.اقرأ الرسالة وعدّل الطلب.
409out_of_stockنفد المخزون.أعد المحاولة لاحقاً.
409conflictتعارض في حالة الطلب.استعلم عن الطلب.
422validation_errorحقل ناقص أو بصيغة خاطئة، أو reference مفقود.صحّح المدخلات. لا خصم حدث.
429rate_limitedتجاوز حدّ النداءات.انتظر Retry-After ثانية.
503store_closedالمتجر في صيانة مؤقتة.أعد المحاولة بعد دقائق.
503orders_disabledاستقبال الطلبات متوقف مؤقتاً.أعد المحاولة لاحقاً.
5xxhttp_5xxخطأ غير متوقع أو انقطاع.أعد المحاولة بنفس reference.
متى يحدث الخصم؟ فقط حين يعود 201 من POST /orders. كل أخطاء 4xx أعلاه تُرفض قبل الخصم. وعند 5xx أو انقطاع الاتصال لا تفترض شيئاً — استعلم بمرجعك.

17أمثلة كاملة

دورة كاملة: تحقّق ← طلب ← متابعة حتى النتيجة، بمعالجة صحيحة للأخطاء وإعادة المحاولة.

Python

import os, time, requests

API = "https://axissstore.com/api/partner/v1"
HEADERS = {"X-API-Key": os.environ["AXIS_API_KEY"]}   # key from an environment variable

def call(method, path, **kw):
    for attempt in range(5):
        try:
            r = requests.request(method, API + path, headers=HEADERS, timeout=30, **kw)
        except requests.RequestException:
            time.sleep(2 ** attempt); continue          # network error: retry with the same input
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", "5"))); continue
        if r.status_code >= 500:
            time.sleep(2 ** attempt); continue
        data = r.json()
        if r.status_code >= 400:
            raise RuntimeError(f"{data['code']}: {data['message']}")
        return data
    raise RuntimeError("service unavailable")

def buy(product, player_id, shop_order_id, quantity=1):
    order = call("POST", "/orders", json={
        "product": product, "quantity": quantity,
        "reference": f"SHOP-{shop_order_id}",        # fixed per purchase
        "fields": {"player_id": player_id}})
    while order["status"] in ("paid", "processing"):
        time.sleep(15)
        order = call("GET", f"/orders/{order['reference']}")
    return order                                        # completed or refunded

result = buy("pubg-uc-60", "5123456789", 10001)
print(result["status"], result["delivery"])

PHP

<?php
$api = 'https://axissstore.com/api/partner/v1';
$key = getenv('AXIS_API_KEY');

function axis($method, $path, $body = null) {
    global $api, $key;
    $ch = curl_init($api . $path);
    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST  => $method,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_HTTPHEADER     => ["X-API-Key: $key", 'Content-Type: application/json'],
        CURLOPT_POSTFIELDS     => $body ? json_encode($body, JSON_UNESCAPED_UNICODE) : null,
    ]);
    $raw = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $data = json_decode($raw, true);
    if ($status >= 400) throw new Exception($data['code'] . ': ' . $data['message']);
    return $data;
}

$order = axis('POST', '/orders', [
    'product'   => 'pubg-uc-60',
    'reference' => 'SHOP-10001',
    'fields'    => ['player_id' => '5123456789'],
]);
while (in_array($order['status'], ['paid', 'processing'])) {
    sleep(15);
    $order = axis('GET', '/orders/' . $order['reference']);
}
echo $order['status'] . PHP_EOL . $order['delivery'];

Node.js

const API = 'https://axissstore.com/api/partner/v1';
const headers = { 'X-API-Key': process.env.AXIS_API_KEY, 'Content-Type': 'application/json' };

async function axis(method, path, body) {
  const res = await fetch(API + path, { method, headers, body: body && JSON.stringify(body),
                                    signal: AbortSignal.timeout(30000) });
  const data = await res.json();
  if (!res.ok) throw new Error(`${data.code}: ${data.message}`);
  return data;
}

let order = await axis('POST', '/orders', {
  product: 'pubg-uc-60', reference: 'SHOP-10001', fields: { player_id: '5123456789' },
});
while (['paid', 'processing'].includes(order.status)) {
  await new Promise(r => setTimeout(r, 15000));
  order = await axis('GET', `/orders/${order.reference}`);
}
console.log(order.status, order.delivery);

18أفضل الممارسات

ما يميّز ربطاً يعمل لسنوات عن ربطٍ يتعطّل عند أول انقطاع.

الموضوعالتوصية
المتابعةتابِع الطلبات المعلّقة كل 10–30 ثانية، وتوقّف عند الحالة النهائية. لعدّة طلبات استخدم الاستعلام الدفعي (?references=) بدل نداء لكل طلب.
المهلةمهلة 30 ثانية لكل نداء. عند انتهائها لا تفترض فشل الطلب — استعلم بمرجعك.
إعادة المحاولةأعد فقط عند انقطاع الشبكة و5xx و429، بتأخير متزايد (2، 4، 8 ثوانٍ…)، وبنفس reference دائماً.
لا تُعِد أخطاء 4xx401/402/404/409/422 لن تنجح بالتكرار — صحّح السبب أولاً.
الكتالوجخزّنه لديك وحدّثه دورياً؛ لا تجلبه عند كل زيارة. أعد التحقق بـ/quote قبل الطلبات الكبيرة.
الرصيدراقب /me وضع حدّاً أدنى للتنبيه، كي لا تتوقف مبيعاتك برفض 402.
الحقولتحقّق في متجرك من الحقول المطلوبة وأنواعها قبل الإرسال — رسالة واضحة لعميلك أفضل من رفضٍ متأخر.
المبالغأنواع عشرية دقيقة دائماً. لا float في الحسابات المالية.
السجلاتسجّل reference وpartner_reference لكل طلب — يختصران أي مراجعة مع الدعم. لا تسجّل المفتاح.
الحقول الجديدةقد نضيف حقولاً للردود مستقبلاً. تجاهل ما لا تعرفه ولا تعتمد على ترتيب الحقول.

19قائمة التحقق قبل الإطلاق

راجعها بنداً بنداً قبل فتح الربط لعملائك.

البند
☐المفتاح محفوظ على الخادم فقط (متغيّر بيئة)، ولا يظهر في أي كود متصفح أو تطبيق أو سجل.
☐نداء /me يعيد حسابك وشريحتك الصحيحة.
☐كل طلب يحمل reference فريداً وثابتاً لعملية الشراء، ويُحفظ في قاعدة بياناتك قبل الإرسال.
☐الحقول المطلوبة وقيود الكمية تُتحقّق في متجرك قبل الطلب.
☐المهلة وإعادة المحاولة تستخدمان نفس reference، ولا تُعاد أخطاء 4xx.
☐المتابعة تتوقف عند completed وrefunded وrejected وfailed.
☐حالة refunded تُعيد المبلغ لعميلك في متجرك.
☐التعامل مع 429 باحترام Retry-After.
☐تنبيه عند انخفاض الرصيد.
☐جرّبت طلباً حقيقياً صغيراً من البداية حتى التسليم.

20الدعم وسجل التغييرات

نحن هنا حين تحتاجنا.

سجل التغييرات

الإصدارالتغييرات
1.1الأقسام، تفاصيل المنتج بالحقول والخيارات وقيود الكمية، قائمة الطلبات والاستعلام الدفعي، لغة البيانات lang، حدود الاستخدام في /me، التنفيذ الآلي لطلبات الواجهة.
1.0الحساب، المنتجات، التسعير، إنشاء الطلب ومتابعته.

© 2026 AXIS GROUP — AXIS STORE. جميع الحقوق محفوظة.
هذه الوثيقة مرجعٌ تقني لشركاء AXIS STORE، وقد تُحدَّث — النسخة الأحدث دائماً على https://axissstore.com/developers.