مرجع API · طلبات الشراء

تقديم طلب شراء

POST/v1/wallets/{walletId}/orders

يشتري بطاقات من محفظة، بمعرّف عملية تختاره أنت وتحفظه. إرسال المعرّف نفسه مجددًا لا يشتري مرتين أبدًا: بل يستأنف طلب الشراء نفسه.

الصلاحيةorders:create
المصادقةطلب شراء موقَّع
حدود الموظفين التي يُحتسب ضمنهاكل الاستدعاءات، طلبات الشراء
حزمة SDK لـ ‎.NETanis.Orders.CreateAsync(walletId, operationId, order) / ResumeAsync(...)
  • 201: اكتمل طلب الشراء، وهذا الرد يحمل رموز البطاقات. احفظها أولًا.
  • 200: الرد الذي يتلقاه الاستئناف حين ضاع الرد الأول. إن كان يحمل رموز البطاقات فهذه أول مرة تراها — احفظها.
  • الرد الموسوم بـ Idempotency-Replayed: true يكرّر طلب شراء أُرسلت نتيجته من قبل: يحمل الطلب لا الرموز. وإن لم يصلك ذلك الرد الأول قط — بانتهاء المهلة — فالرموز كانت فيه: اكشفها بمعرّف فاتورة طلب الشراء، وهذا يحتاج cards:reveal.
  • 202: قُبل ولا نتيجة بعد. أرسل طلب الشراء نفسه مجددًا بعد Retry-After.

المعاملات

الاسمالموضعالنوعملاحظات
walletIdإلزاميpathUUIDمعرّف UUID بأحرف صغيرة مع الشرطات.

الاستدعاء

موقَّع بمفتاحك، مع رقم استخدام لمرة واحدة (nonce) وبصمة للمحتوى ومعرّف العملية في Idempotency-Key.

الترويسات: Signature-Input، Signature، Content-Digest، Nonce، Idempotency-Key، X-Anis-Date، Accept-Language (اختياري). تضبطها حزم SDK كلها نيابةً عنك.

المحتوى: CreateOrderRequest، بصيغة JSON.

الحقلالنوعملاحظات
externalReferencestringمرجعك الخاص، من 1 إلى 100 حرف: حروف لاتينية وأرقام ومسافة و - _ . : / #.
cardIdإلزاميUUIDبطاقة الكتالوج المراد شراؤها.
quantityإلزاميinteger1 على الأقل وحتى الحد الأعلى للطلب الواحد (100 افتراضيًا)، وضمن الحد الأدنى والأعلى الخاص بالبطاقة.
expectedUnitPriceإلزاميMoneyunitPrice الخاص بالبطاقة تمامًا كما عرضه الكتالوج لهذه المحفظة.
expectedTotalإلزاميMoneyexpectedUnitPrice مضروبًا في quantity بالضبط — محسوبًا دون أرقام عشرية عائمة (floating point).
useAllowedDebtbooleanاجعله true فقط إن كنت تأذن باستخدام الدين المسموح للحساب. قيمته الافتراضية false ولا يُفعَّل نيابةً عنك أبدًا.

الردود

الحالةالمعنىالمحتوى
200نجاح.Order
201اكتمل طلب الشراء.Order
202قُبل — لا نتيجة بعد.Order
401مرفوض: لم تتم المصادقة.مشكلة
402مرفوض: يلزم الإذن باستخدام الدين المسموح.مشكلة
403مرفوض: غير مسموح.مشكلة
404مرفوض: غير موجود، أو ليس لك.مشكلة
409مرفوض: يتعارض مع الحالة الحالية.مشكلة
422مرفوض: الاستدعاء يخالف قاعدة.مشكلة
429مرفوض: بلغتَ حدًا.مشكلة
503لا قرار: خدمة مطلوبة غير متاحة.مشكلة

كل ردّ موقَّع من أنيس؛ وتتحقق منه حزم SDK قبل أن يصلك.

حالات الرفض

كل رفض مشكلةٌ موقَّعة. ابنِ منطقك على رمزها code؛ وكلٌّ منها يرتبط بصفحة تشرح معناه وما عليك فعله.

الخطأالرمزالحالة
بيانات اعتماد غير صالحةinvalid_credentials401
صلاحية غير كافيةinsufficient_scope403
عنوان المصدر غير مسموحsource_ip_not_allowed403
تجاوزت حدّ الاستدعاءاتrate_limited429
اكتُشف تكرارreplay_detected409
الحساب غير مخوَّلbinding_not_authorized403
الحساب غير فعّالaccount_inactive403
المحفظة غير ممنوحةwallet_not_granted404
غير موجودresource_not_found404
فشل التحققvalidation_failed422
العملة غير مدعومةcurrency_not_supported422
معرّف العملية مستخدم من قبلidempotency_conflict409
يلزم الإذن باستخدام الدين المسموحallowed_debt_consent_required402
الرصيد غير كافٍinsufficient_balance409
الشراء غير مسموحpurchase_not_allowed403
رُفض طلب الشراءpurchase_not_allowed409
يلزم اشتراك أعمالbusiness_subscription_required409
المحفظة معطّلةwallet_disabled409
انتهت صلاحية المحفظةwallet_expired409
البطاقة غير متاحةcard_unavailable409
الكمية غير متاحةquantity_unavailable409
تغيّر السعرprice_changed409
استُنفد حدّ الإنفاقowner_limit_exceeded409
بُلغ الحدّ اليوميdaily_limit_exceeded429
الخدمة غير متاحةdependency_unavailable503
انتهت مهلة الاستدعاءrequest_timeout504
خطأ داخليinternal_error500

الأنواع

CreateOrderRequest

الحقلالنوعملاحظات
externalReferencestringمرجعك الخاص، من 1 إلى 100 حرف: حروف لاتينية وأرقام ومسافة و - _ . : / #.
cardIdإلزاميUUIDبطاقة الكتالوج المراد شراؤها.
quantityإلزاميinteger1 على الأقل وحتى الحد الأعلى للطلب الواحد (100 افتراضيًا)، وضمن الحد الأدنى والأعلى الخاص بالبطاقة.
expectedUnitPriceإلزاميMoneyunitPrice الخاص بالبطاقة تمامًا كما عرضه الكتالوج لهذه المحفظة.
expectedTotalإلزاميMoneyexpectedUnitPrice مضروبًا في quantity بالضبط — محسوبًا دون أرقام عشرية عائمة (floating point).
useAllowedDebtbooleanاجعله true فقط إن كنت تأذن باستخدام الدين المسموح للحساب. قيمته الافتراضية false ولا يُفعَّل نيابةً عنك أبدًا.

Money

الحقلالنوعملاحظات
amountإلزامي / موجود دائمًاstringنصّ عشري بثلاث خانات عشرية بالضبط، مثل "10.500" — وليس رقم JSON أبدًا.
currencyإلزامي / موجود دائمًاstringرمز العملة، مثل LYD: وهو دائمًا عملة المحفظة.
asOfstring (date-time)وقت قراءة هذا السعر أو الرصيد.

Order

الحقلالنوعملاحظات
operationIdموجود دائمًاUUIDمعرّف العملية الذي اخترته وأرسلته في Idempotency-Key.
statusموجود دائمًاstringprocessing: قُبل ولا نتيجة بعد. completed: تمّ الشراء. failed: رفضته قاعدة عمل، ولم يُشترَ شيء. recoveryExhausted: لم تتمكن أنيس بعد من معرفة النتيجة — ربما اكتمل؛ واصل الاستئناف ببطء وأبلغ أنيس. القيم: processing, recoveryExhausted, completed, failed
invoiceIdUUIDالفاتورة التي عليها البطاقات. استخدمه لكشفها مجددًا لاحقًا.
walletIdUUIDالمحفظة التي دُفع منها طلب الشراء.
cardIdUUIDبطاقة الكتالوج التي اشتُريت.
quantityintegerعدد البطاقات.
totalMoneyتكلفة طلب الشراء.
soldCardslist of RevealedCredentialرموز البطاقات. موجودة فقط في الرد الذي يعلن اكتمال طلب الشراء أول مرة — احفظها قبل أي شيء آخر.
completedAtstring (date-time)وقت اكتمال طلب الشراء.

RevealedCredential

الحقلالنوعملاحظات
soldCardIdموجود دائمًاUUIDالبطاقة المبيعة التي تخصها هذه الرموز.
serialNumberstringالرقم التسلسلي للبطاقة. سرّ: احفظه حيث تحفظ الأسرار ولا تسجّله في السجلات أبدًا.
voucherstringرمز القسيمة للبطاقة. سرّ: احفظه حيث تحفظ الأسرار ولا تسجّله في السجلات أبدًا.
revealedAtstring (date-time)وقت كشفها.