مقدمة
يتيح لك دفع الفواتير سداد فواتير المرافق والاتصالات الجزائرية نيابةً عن عملائك. تسأل مُصدِر الفاتورة عمّا يدين به حساب ما، ثم تدفع إحدى الفواتير التي تعود إليك، وتتابعها حتى تصل إلى حالة نهائية، وتحتفظ بالإيصال.المنتج بأكمله خمسة استدعاءات. هذه الصفحة هي الخريطة؛ وكل خطوة أدناه ترتبط بدليل يحتوي على كود عملي بلغات cURL وNode.js وPython وPHP.يعمل دفع الفواتير على
https://billapi.oneclickdz.com — وهو عنوان أساسي مختلف عن بقية المنصة. أما ترويسة المصادقة فهي نفسها التي تستخدمها بالفعل: X-Access-Token.كيف يعمل النظام
الخطوات الخمس
1
تحقق من توفر مُصدِر الفاتورة
اقرأ خريطة التوفر وأخفِ أي مُصدِر فاتورة حالته
UNAVAILABLE قبل أن يبدأ عميلك بملء أي نموذج.→ الخطوة 1: الشركاء والحسابات2
استكشف ما هو مستحق
أرسل الشريك ومعرّف الحساب و
ref الخاص بك. تحصل في المقابل على transactionId؛ وتصل الفواتير على تلك المعاملة بعد لحظة.→ الخطوة 2: استكشاف الفواتير3
ادفع فاتورة واحدة
اختر
billId من bills[]، واعرض على عميلك amount + fee، ثم أرسل الدفعة بـ ref جديد.→ الخطوة 3: دفع الفواتير4
تابع الحالة حتى تصبح نهائية
SUCCESS أو FAILED أو REFUNDED. أما UNKNOWN فتعني استمر في التتبع — لا تُعِد المبلغ لعميلك أبداً ولا تُعِد إرسال الدفعة ما دامت هذه الحالة قائمة.→ الخطوة 4: تتبع الحالة5
احفظ الإيصال وطابق الحسابات
نزّل الإيصال، واحفظه مع
operationId، وطابق يومياً مع دفتر حساباتك الخاص.→ الخطوة 5: الإيصالات والمطابقةما تحتاج معرفته
كل شيء غير متزامن
يستجيب كل منPOST /v3/bills/discover وPOST /v3/bills/pay بالرمز 200 فوراً. وهذا الـ 200 يعني مقبول، لا منتهٍ.مُصدِرو الفواتير ومعرّفاتهم
خمسة مُصدِري فواتير، لكل منهم حقل معرّف واحد. أرسل الحقل الذي يخص الشريك؛ وتُعيد API الحقل نفسه إليك في كل معاملة.SEAAL وAADL حالياً UNAVAILABLE في كل من sandbox والإنتاج. اقرأ خريطة التوفر بدلاً من ترميز ذلك بشكل ثابت في الكود.→ قواعد المعرّفات وصيغها وأمثلتهاالحالات السبع
→ آلة الحالات الكاملة ومتتبِّع حالة جاهز للإنتاج
الرسوم وعتبة 200 DZD
كل فاتورة تحمل حقولها المالية الخاصة:-
amount— ما هو مستحق لمُصدِر الفاتورة، بالـ DZD. -
fee— رسوم خدمة OneClickDz: نسبة مئوية من المبلغ محصورة بين حد أدنى وحد أقصى، تُضبط لكل مُصدِر فاتورة على حدة:عمليًا تدفع معظم الفواتير الحد الأدنى: لا تتجاوز نسبة 0.5% مبلغ 30 DZD إلا فوق فاتورة قيمتها 6,000 DZD. هذه القيم إعدادات قابلة للتعديل، لذا اقرأfeeمن الاستجابة بدلًا من إعادة حسابه. -
total—amount + fee، وهو المبلغ المخصوم من رصيدك.
bills[]. لذلك فإن معاملة READY بـ bills[] فارغة تعني إما “لا شيء مستحق” وإما “كل ما هو مستحق يقع دون العتبة” — وAPI لا تفرّق بينهما. أخبر عميلك “لا توجد فواتير قابلة للدفع الآن”، لا “أنت لا تدين بشيء”.مرجعك هو شبكة أمانك
ref مطلوب في كل من discover وpay، وطوله 100 حرف كحد أقصى، ويجب أن يكون فريداً بين معاملاتك النشطة لدى ذلك المُصدِر. إعادة استخدام أحدها تُجيب بـ 403 DUPLICATED_REF.اشتقّه من شيء تخزّنه بالفعل، حتى تتمكن بعد أي انتهاء مهلة من أن تسأل عمّا آل إليه ذلك ref بدلاً من إرسال الطلب مرة أخرى.استخدم
ref مختلفاً للاستكشاف وللدفع. تحتفظ المعاملة بـ ref الاستكشاف الأصلي، وهو الذي يبحث عنه by-ref.Sandbox
يستخدم sandbox المضيف نفسه، والمسارات نفسها، والمغلّف نفسه، ودورة الحياة نفسها. الفرق الوحيد هو أن مفتاح sandbox لا يصل أبداً إلى مُصدِر فاتورة ولا يحرّك أي أموال. والنتيجة التي تحصل عليها يحددها معرّف الحساب الذي ترسله، فيمكنك إعادة إنتاج رفض، واسترداد، ودفعة غير مؤكدة، متى شئت.كل مفتاح مرتبط ببيئة واحدة. استدعِ التحقق من مفتاح API واقرأkey.type لتثبت أي مفتاح تحمل.→ كل سيناريوهات sandbox وقائمة تحقق قبل الإطلاقالنقاط الأساسية
الرمز 200 إقرار بالاستلام، لا نتيجة
الرمز 200 إقرار بالاستلام، لا نتيجة
كلا endpointي الكتابة يقبل العمل ويستجيب فوراً. أما النتيجة فتوجد في
status الخاص بالمعاملة.→ الخطوة 4: تتبع الحالةلا تُعِد إرسال دفعة أبداً عند UNKNOWN
لا تُعِد إرسال دفعة أبداً عند UNKNOWN
UNKNOWN تعني أن النتيجة لم تُؤكَّد بعد. استمر في التتبع — فهي تُحسم إلى SUCCESS أو REFUNDED. أما إعادة المبلغ لعميلك أو إعادة إرسال الدفعة ما دامت هذه الحالة قائمة فهي الطريق إلى خسارة المال مرتين.→ التعامل مع UNKNOWNابحث، ولا تُعِد الإرسال
ابحث، ولا تُعِد الإرسال
كل انتهاء مهلة، وكل
DUPLICATED_REF، وكل فشل غير مفسَّر، يُجاب عنه بالبحث عن ref. وعملية كتابة ثانية ليست أبداً هي التعافي الصحيح.→ الخطوة 2: استكشاف الفواتيراقرأ fee وtotal من الاستجابة
اقرأ fee وtotal من الاستجابة
تُضبط الرسوم لكل شريك ويمكن أن تتغير. حمّل عميلك الـ
total الذي أعادته API، لا رقماً حسبته أنت.→ الخطوة 3: دفع الفواتيرالمعاملة التي ليست لك تعني 404
المعاملة التي ليست لك تعني 404
المعاملة التي ليست لك — أو التي تخص البيئة الأخرى — تُعيد
404، لا 403 أبداً. لا تؤكد API أبداً أن معاملة شخص آخر موجودة.→ جلب معاملة بالمعرّفمرجع API
التحقق من مفتاح API
GET /v3/validate
سرد الشركاء
GET /v3/partners
استكشاف الفواتير
POST /v3/bills/discover
دفع فاتورة
POST /v3/bills/pay
جلب معاملة بالمعرّف
GET /v3/bills/transactions/id
جلب معاملة بالمرجع
GET /v3/bills/transactions/by-ref
سرد المعاملات
GET /v3/bills/transactions
تنزيل الإيصال
GET /v3/bills/transactions/id/receipt
بدء التكامل
ابدأ بالخطوة 1: الشركاء والحسابات
تحقق من التوفر وتعرّف على قواعد المعرّف لكل مُصدِر فاتورة
موارد إضافية
المصادقة
المفاتيح والترويسات والبيئات
تنسيق الاستجابة
المغلّف الذي تُعيده كل endpoint
معالجة الأخطاء
كل رمز خطأ وما ينبغي فعله حياله
استراتيجيات Polling
الفواصل الزمنية والتراجع التدريجي والحدود القصوى
أفضل ممارسات الأمان
احمِ مفاتيحك وعملاءك
التواصل مع الدعم
احصل على مساعدة فريقنا

