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

وثائق API

مرجع شامل لـ API الخاص بـ Banking-as-a-Service من Chari Money. ادمج الخدمات المالية في تطبيقاتك عبر نقاط نهاية (endpoints) قوية وآمنة.

البدء

الإصدار 2.1 · آخر تحديث 19 يونيو 2026

مرحبًا بكم في الوثائق الرسمية لواجهة برمجة التطبيقات الخاصة بالخدمات البنكية كخدمة (BAAS) من Chari Money. تتيح واجهة RESTful هذه لشركات التكنولوجيا المالية والمنصات والمطوّرين دمج بنية مالية متكاملة في تطبيقاتهم: فتح الحسابات مع التحقق من الهوية KYC، المعاملات بين المحافظ، الإيداع بالبطاقة (3D Secure)، التحويلات البنكية عبر RIB، المدفوعات متعددة القنوات للتجار (الهاتف، رمز QR، البطاقة)، إدارة المستفيدين، وكلاء التجزئة، وإشعارات Webhook الفورية. تتبع جميع نقاط النهاية نموذج معاينة/تنفيذ مع تأكيد غير متزامن عبر Webhook.

Headers المصادقة

أدرِجوا الترويسات التالية في جميع طلبات API:

HeaderTypeمطلوبDescription
Chari-Api-Keystringمطلوبمفتاح API للمصادقة. توفّره Chari لكل بيئة (sandbox / production).
C-Request-Idstringاختياريمعرّف فريد لكل طلب لأغراض التتبّع. يُعاد في الاستجابة. الصيغة الموصى بها: UUID v4. مثال: 69906411-0aa24a89-ab2005ca-9d18dc15

بطاقة ائتمان للاختبار (sandbox)

PAN

4918914107195005

CVV

123

تاريخ الانتهاء

08/26 (أو أي تاريخ مستقبلي)

رمز 3D Secure

555
جديد

حزمة LLM والذكاء الاصطناعي

حزمة كاملة محسَّنة لنماذج اللغة الكبيرة (LLM) والمساعدات الذكية: وثائق Markdown، ومخططات JSON Schemas، ورسوم Mermaid، ومواصفة OpenAPI 3.0، وأمثلة cURL وقواعد التحقق. مثالية لتقنية RAG وتوليد الشيفرة والتكامل مع Cursor أو Copilot أو Claude.

OpenAPI 3.0JSON SchemaMermaidMarkdowncURL
تنزيل .zip

Postman Collection

حمّلوا مجموعة Postman الكاملة لاختبار جميع نقاط نهاية API.

تنزيل

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

v1.8

2025-11-05

الوثائق الأولية. تغطية كاملة لواجهة API الإصدار v1.8.

v1.8.1

2025-12-01

إضافة نقطة النهاية merchant-kyc-upload. إثراء الجداول المرجعية (docTypes وcustomerStatuses وaccountLevels). تفصيل رموز الأخطاء مع ربطها بنقاط النهاية. إضافة المعامل autoActivate إلى confirm. تصحيح مسار confirm.

v1.9

2026-04-14

إضافة قسم المحاكاة (Sandbox). أنواع عمليات جديدة: 10=RECHARGE و25=BILL_PAYMENT؛ إعادة تسمية 5→MOBILE_PAYMENT و24→CARD_PAYMENT. توحيد حالات المعاملات: OPEN/COMPLETED/FAILED/CANCELED. تبسيط Webhooks: إضافة payment.received وإزالة operation.created/operation.updated/customer.kyc/bank-transfer.failed. أصبحت صيغة مرجع CashIn/CashOut رقمية (مثال: 1122334455).

v2.0

2026-06-04

الترقية إلى وثائق الإصدار v2.0 (إصدار تمهيدي). إضافة قسم "إدارة البطاقات" (بيتا): البرامج، الطلبات، البطاقات، إجراءات البطاقة، ضبط الاستخدام، المعاملات وقوائم تعداد البطاقات. قسم البطاقات تمهيدي وسيُستكمل بنقاط النهاية الناقصة — وقد يتضمن أخطاء.

v2.1

2026-06-19

إضافة ثلاث وحدات جديدة: تعبئة رصيد الاتصالات Telco Top-up (الكتالوج + التعبئة)، القسائم Vouchers (الكتالوج، العلامات التجارية، معاينة/تأكيد الشراء) ودفع الفواتير Bill Payment (شبكة Fatourati: الدائنون، المستحقات، النموذج الديناميكي، غير المدفوعات، التأكيد، + Webhooks). إضافة نقطة النهاية المخصصة للإيداع Fatourati CashIn ونوع العملية 23 = VOUCHER.

v2.2

2026-06-24

توثيق مستندات KYB المطلوبة لإنشاء محفظة تاجر، حسب نوع العميل المهني (شخص اعتباري، مهني ذاتي، مؤسسة / جمعية) — أُضيفت كملاحظات على نقطة النهاية "Merchant KYC Upload".

ن

نظرة عامة — المحفظة الإلكترونية M-Wallet في المغرب

ما هو M-Wallet؟

المحفظة الإلكترونية M-Wallet (المحفظة المحمولة) هي حساب نقود إلكترونية خاضع للتنظيم يتيح للأفراد والتجار إجراء معاملات مالية باستخدام رقم الهاتف المحمول كمعرّف. وهي جزء من الإطار الوطني لبنك المغرب (BAM) للشمول المالي والمدفوعات الرقمية. كل محفظة مرتبطة بهوية مستخدم متحقَّق منها (KYC) ومحفوظة بموجب ترخيص مؤسسة الأداء الخاصة بنا (CHARI MONEY) الخاضعة لرقابة بنك المغرب.

المبادئ الأساسية

معرّف محفظة فريد

يُستخدم رقم MSISDN (رقم الهاتف المحمول) الخاص بالمستخدم كمعرّف للمحفظة.

شبكة قابلة للتشغيل البيني

يمكن لجميع المحافظ الإلكترونية M-Wallet تبادل الأموال بين مختلف المزوّدين عبر المقسم الوطني (Switch).

مستويات التحقق KYC

تعتمد صلاحيات الحساب وحدوده على تحقق المستخدم (البطاقة الوطنية CIN، سيلفي، إثبات العنوان، إلخ).

عمليات فورية

تُنفَّذ التحويلات وعمليات الإيداع/السحب ومدفوعات التجار ودفع الفواتير فورًا مع التأكيد.

أنواع الحسابات

النوعالمالكDescriptionالعمليات
المستهلك (فرد)الأفرادمحفظة شخصية مرتبطة برقم هاتف محمول واحد وبطاقة هوية وطنية.الإيداع/السحب، التحويلات بين الأفراد P2P، مدفوعات التجار، وخدمات دفع أخرى.
التاجرمقاولة صغيرة أو متجر أو مقدّم خدماتمحفظة تجارية مرتبطة بحساب تاجر أو متجر.استقبال المدفوعات، التحويل إلى البنك، ردّ المبلغ للعميل، وخدمات دفع أخرى.
وكيل التجزئةشبكة/شريك وكلاء معتمدونيستخدمها وكلاء التوزيع لتسهيل عمليات الإيداع/السحب للمستخدمين.تعبئة/تفريغ محافظ العملاء.
الوكيل الرئيسيالشريك / EDPمحفظة مخصصة للشركات بحدود أعلى وحلول تكامل.مدفوعات جماعية، صرف الرواتب، التحصيلات، وعمليات متعددة أخرى.

مستويات الحساب

المستوىمتطلبات KYCحد الرصيد
المستوى 1الاسم + رقم هاتف صالح + رقم البطاقة الوطنية CIN1,000 MAD
المستوى 2تحقق كامل من الهوية KYC (البطاقة الوطنية CIN + سيلفي أو مسح الوثيقة)4,000 MAD
المستوى 3هوية متحقَّق منها (KYC)، مقابلة، ملف عميل رقمي20,000 MAD
المستوى 4تحقق كامل من الهوية KYC، مقابلة، ملف عميل رقمي، إثبات الدخل، إثبات العنوان100,000 MAD
التاجرتحقق كامل من الشركة KYB + السجل التجاري (IF/RC)قابل للتفاوض
م

مسرد المصطلحات

المصطلحالتعريف
M-Walletحساب نقود إلكترونية خاضع للتنظيم مرتبط برقم هاتف محمول، يتيح للمستخدمين إجراء معاملات مالية مثل التحويلات والمدفوعات والعمليات النقدية.
Walletحساب مستخدم داخل النظام يخزّن النقود الإلكترونية ويرتبط بمعرّف فريد (MSISDN).
MSISDNرقم الهاتف المحمول المستخدم كمعرّف أساسي للمحفظة.
KYC (Know Your Customer)عملية تحقق تُستخدم لتحديد هوية المستخدم والتثبت منها وفقًا للمتطلبات التنظيمية.
مستوى التحقق KYCمستوى تنظيمي يُسنَد إلى المحفظة بناءً على حالة التحقق، ويحدّد حدود المعاملات والرصيد.
العمليةإجراء أعمال عالي المستوى يبدؤه مستخدم أو شريك (مثال: إيداع، تحويل، دفع).
Transactionحركة مالية (خصم، إضافة، رسوم، تسوية) تُنشأ في إطار عملية.
نوع العمليةفئة إجراء الأعمال (مثال: CASHIN، TRANSFER، PAYMENT).
نوع المعاملةنوع الحركة المالية المرتبطة بعملية (مثال: خصم، إضافة، رسوم).
حالة العمليةالحالة الحالية لدورة حياة العملية (مثال: OPEN، COMPLETED، FAILED).
حالة المعاملةحالة معالجة المعاملة (مثال: COMPLETED، FAILED).
المرجعمعرّف فريد يُنشأ لعملية معلّقة (مثال: إيداع/سحب)، ويُستخدم لإتمام المعاملة عبر شبكة خارجية.
الوكيل / الشبكةجهة خارجية معتمدة أو قناة توزيع تُستخدم لتنفيذ عمليات الإيداع والسحب.
مفتاح APIرمز آمن يُستخدم لمصادقة طلبات الشركاء إلى واجهة BAAS API.
Webhookاستدعاء HTTP آلي يرسله النظام لإشعار الشركاء بتحديثات العمليات أو المعاملات.
ت

تسجيل العملاء

إدارة كاملة لدورة حياة العميل: التحقق من الحالة، التسجيل، تأكيد رمز OTP، إدارة الرمز السري PIN، الاطلاع على الرصيد والمعلومات، وإلغاء التسجيل.

GET{host}/api/customers/status

التحقق من الحالة لدى Chari

استرجاع حالة التسجيل الحالية للعميل لدى Chari فقط.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********

ملاحظات

  • 0 : Not exists — الرقم غير موجود لدى ChariMoney.
  • 1 : Not confirmed — الرقم موجود لدى ChariMoney لكنه غير مسجّل بعد لدى Switch (لم يُدخل رمز OTP).
  • 2 : Confirmed — الرقم موجود ومسجّل لدى Switch.
  • 3 : Active — مسجّل لدى Switch ونشِط لدى ChariMoney (تم إنشاء الرمز السري PIN).
  • 4 : Locked temporary — الرقم محظور مؤقتًا (تم تجاوز الحد الأقصى للمحاولات).
  • 5 : Locked — الرقم محظور.
GET{host}/api/customers/default

التحقق من الحالة لدى Switch

معرفة ما إذا كانت Chari هي المحفظة الافتراضية للعميل.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********

ملاحظات

  • true : Chari هي المحفظة الافتراضية للعميل.
  • false : Chari ليست المحفظة الافتراضية للعميل.
POST{host}/api/customers/register202

التسجيل

بدء عملية تسجيل عميل جديد. سيُرسَل رمز OTP عبر SMS.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
firstNamestringbodyمطلوبحرفان على الأقل (أحرف لاتينية فقط)
lastNamestringbodyمطلوبحرفان على الأقل (أحرف لاتينية فقط)
cinstringbodyمطلوب5 أحرف على الأقل
walletTypestringbodyمطلوب"P": فرد (Particulier) / "C": تاجر (Commerçant)
closeLoopOnlybooleanbodyاختياريإذا كانت القيمة true، يُسجَّل العميل في وضع CloseLoop فقط. في هذه الحالة، تُرسل CHARI رمز OTP مباشرة.
POST{host}/api/customers/confirm200

التأكيد

تأكيد التسجيل باستخدام رمز OTP كوسيلة تحقق.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
codestringbodyمطلوبرمز OTP المستلَم بالصيغة: xxx-xxx
walletTypestringbodyمطلوبنوعان مقبولان: "P": فرد (Particulier)، "C": تاجر (Commerçant).
autoActivatebooleanbodyاختياريالقيمة الافتراضية: false. تحدّد ما إذا كان يجب تفعيل المحفظة تلقائيًا بعد التحقق من رمز OTP. إذا كانت false، يجب على المستخدم إتمام التفعيل بإنشاء أو إدخال الرمز السري PIN. إذا كانت true، تُفعَّل المحفظة تلقائيًا دون الحاجة إلى PIN.
POST{host}/api/customers/confirm/resend-otp

إعادة إرسال OTP

إعادة إرسال كلمة المرور لمرة واحدة (OTP) للتسجيل أو التأكيد.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
POST{host}/api/customers/login

تسجيل الدخول بالرمز السري PIN

مصادقة عميل موجود باستخدام رمزه السري PIN.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
pinstringbodyمطلوبالرمز السري PIN الخاص بالعميل.

ملاحظات

  • logged : تكون true إذا نجحت المصادقة، وfalse خلاف ذلك.
  • remainingAttempts : عدد المحاولات المتبقية قبل قفل الحساب.
POST{host}/api/customers/pin

إنشاء الرمز السري PIN

إنشاء رمز سري PIN آمن لعميل مسجَّل.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
pinstringbodyمطلوبالرمز السري PIN الخاص بالعميل. (4 أرقام مطلوبة)
PATCH{host}/api/customers/pin

تحديث الرمز السري PIN

تغيير الرمز السري PIN الحالي لأسباب أمنية أو بحسب تفضيل المستخدم.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
oldPinstringbodyمطلوبالرمز السري PIN الحالي للعميل.
newPinstringbodyمطلوبالرمز السري PIN الجديد للعميل.
POST{host}/api/customers/pin/resetقريباً

إعادة تعيين الرمز السري PIN

إعادة تعيين الرمز السري PIN للعميل. سيتوفر في الإصدار القادم.

لا توجد معاملات (parameters) مطلوبة.

GET{host}/api/customers/balance

الاطلاع على رصيد العميل

استرجاع رصيد عميل مسجَّل.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
GET{host}/api/customers/info

الاطلاع على معلومات العميل

استرجاع بيانات الملف التفصيلية لعميل مسجَّل.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********

ملاحظات

  • accountLevel : مستوى الحساب (1 = أساسي، 2-4 = مستويات KYC أعلى).
  • customerStatus : حالة العميل (انظر نقطة النهاية "التحقق من الحالة لدى Chari").
  • rib : معرّف الحساب البنكي (RIB) المرتبط بالمحفظة.
PUT{host}/api/customers/unregister

إلغاء التسجيل

تعطيل عميل أو إزالته من المنصة.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف العميل. الصيغة: +212*********
Reasonintbodyمطلوبرمز سبب الإغلاق (انظر الملاحظات).

ملاحظات

  • 1 : إغلاق بمبادرة من EDP — سبب غير محدد
  • 2 : إغلاق بمبادرة من EDP — اشتباه في احتيال
  • 3 : إغلاق بمبادرة من العميل — إنهاء العقد
  • 4 : إغلاق بمبادرة من العميل — هاتف مفقود أو مسروق
  • 5 : إغلاق بمبادرة من العميل — سبب غير محدد
ا

التحقق من الهوية KYC

مسار KYC عبر الهاتف المحمول (iOS/Android) مدعوم من ShareID. يشغّل تطبيقكم حزمة ShareID SDK لمسح الوثيقة والتقاط السيلفي؛ وتتولى ShareID فحوص الجودة والأصالة ومطابقة الوجه مع الوثيقة.

مسار التكامل

  1. 1يستدعي تطبيقكم "/kyc/shareid/auth" للحصول على رمز KYC قصير الصلاحية.
  2. 2يفتح التطبيق حزمة ShareID SDK بهذا الرمز.
  3. 3يمسح المستخدم بطاقة هويته ويُكمل سيلفي موجَّهًا.
  4. 4تُجري ShareID عمليات التحقق.
  5. 5يستدعي تطبيقكم "/kyc/session/complete" للإشارة إلى انتهاء المسار على الجهاز.
  6. 6يُرسَل استدعاء راجع (callback) إلى واجهة API الخاصة بنا مع الحالة والمستندات.
GET{host}/api/kyc/shareid/auth

المصادقة

الحصول على رمز KYC قصير الصلاحية لتشغيل حزمة ShareID SDK.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********

ملاحظات

  • baseUrl : عنوان URL الأساسي لحزمة ShareID SDK المراد استخدامها.
  • applicant_id : المعرّف الفريد لطلب التحقق KYC.
  • token : رمز JWT مؤقت للمصادقة من جهة SDK.
POST{host}/api/customers/upgrade/request

التأكيد

الإشارة إلى انتهاء مسار KYC على الجهاز وطلب ترقية الحساب.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
AccountLevelintqueryمطلوبمستوى الحساب المراد الترقية إليه (2 أو 3 أو 4).
POST{host}/api/merchant/kyc/request

رفع مستندات KYC للتاجر

رفع مستندات KYC الخاصة بالتاجر لطلب ترقية الحساب (multipart/form-data).

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف التاجر. الصيغة: +212*********
KycDocumentsmultipart formbodyمطلوبمصفوفة من كائنات مستندات KYC. يمكن إرسال عدة مستندات في طلب واحد بتكرار الحقول المفهرسة (مثال: kycDocuments[0]، kycDocuments[1]، ...).
KycDocuments[n].DocTypeintbodyمطلوبنوع المستند (انظر جدول أنواع المستندات).
KycDocuments[n].DocFrontfilebodyمطلوبالصورة الأمامية للمستند. الصيغ المقبولة: PNG وJPG/JPEG وPDF.
KycDocuments[n].DocBackfilebodyاختياريالصورة الخلفية (مطلوبة للمستندات IdentityCard وDrivingLicense وResidencePermit).

ملاحظات

  • التحقق من الشركة KYB — تعتمد المستندات المطلوبة لإنشاء محفظة تاجر (مهنية) على الوضع القانوني للعميل. في الحالات الثلاث جميعها تُطلب البطاقة الوطنية أو جواز سفر الموقّع على العقد (DocType 1 أو 3) وإثبات حساب بنكي — RIB / شهادة حساب بنكي، أو شيك ملغى / نموذج شيك. ارفعوا كل مستند مع DocType المطابق له من جدول أنواع المستندات.
  • الشخص الاعتباري (شركة / منظمة): البطاقة الوطنية / جواز سفر الموقّع؛ النظام الأساسي للشركة؛ محضر آخر جمعية عامة يؤكد صلاحية التوقيع (مطلوب فقط إذا لم يكن المسيّر / الممثل القانوني مذكورًا كموقّع وحيد في النظام الأساسي)؛ شهادة السجل التجاري (DocType 8) صادرة منذ أقل من 90 يومًا؛ شهادة التسجيل في الضريبة المهنية (Patente)؛ إثبات حساب بنكي (RIB أو شيك ملغى).
  • المهني الذاتي (مقاول ذاتي / مستقل / مقاولة فردية): البطاقة الوطنية / جواز سفر الموقّع؛ بطاقة المقاول الذاتي / وثيقة التسجيل المهني؛ شهادة التسجيل في الضريبة المهنية (Patente)؛ إثبات حساب بنكي (RIB أو شيك ملغى)؛ شهادة السجل التجاري (DocType 8) صادرة منذ أقل من 90 يومًا والنظام الأساسي للشركة، إن وُجدا.
  • المؤسسة / الجمعية: البطاقة الوطنية / جواز سفر الموقّع؛ محضر آخر جمعية عامة يؤكد صلاحية التوقيع (مطلوب فقط إذا لم يكن الممثل المفوَّض مذكورًا بوضوح في النظام الأساسي)؛ قائمة الممثلين المفوَّضين / أعضاء المجلس؛ النظام الأساسي للجمعية / المؤسسة؛ إثبات حساب بنكي (RIB أو شيك ملغى).
ا

العمليات

جميع العمليات المالية: الإيداع بالبطاقة، التحويلات بين المحافظ، التحويلات البنكية، مدفوعات التجار، عمليات الاسترجاع، المبالغ المردودة، والطلبات المبنية على مرجع.

الإيداع بالبطاقة CashIn

بطاقة ائتمان تجريبية

أرقام بطاقات ائتمان صالحة لإضافة أموال في بيئة sandbox.

PAN

4918914107195005

CVV

123

تاريخ الانتهاء

08/26 (أو أي تاريخ مستقبلي)

رمز 3D Secure

555
POST{host}/api/operations/cashin/card/preview

معاينة (عبر الهاتف)

التحقق من إمكانية إيداع أموال في محفظة عميل انطلاقًا من بطاقة.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه. يجب أن يكون رقمًا موجبًا.
POST{host}/api/operations/cashin/card

تنفيذ (عبر الهاتف)

إضافة أموال إلى محفظة عميل انطلاقًا من بطاقة أداء. تُطلق مصادقة 3D Secure.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
FirstNamestringbodyمطلوبالاسم الشخصي لحامل البطاقة.
LastNamestringbodyمطلوبالاسم العائلي لحامل البطاقة.
Cvvstringbodyمطلوبرمز الأمان المكوَّن من 3 أرقام (CVV).
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه.
Currencystringbodyاختياريرمز العملة ISO المكوَّن من 3 أحرف (مثال: MAD).
Panstringbodyمطلوبرقم البطاقة الكامل (PAN).
ExpiryDatestringbodyمطلوبتاريخ الانتهاء بصيغة YYMM.
KeepAliveboolbodyمطلوبtrue: حفظ البطاقة للاستخدام اللاحق / false: استخدام لمرة واحدة.
CardNamestringbodyاختياريالاسم الذي يختاره المستخدم للبطاقة المحفوظة.

ملاحظات

  • بعد مصادقة 3D Secure، يُعاد توجيه المستخدم إلى acceptURL أو declineURL.
  • قيمة RESPONSE_CODE في عنوان URL لإعادة التوجيه: 0 = نجاح، وأي قيمة أخرى = فشل.
  • REASON_CODE : سبب النتيجة بصيغة مقروءة (مثال: SUCCESS، DECLINED).
  • تحققوا من RESPONSE_CODE وREASON_CODE لتحديد الإجراء التالي في تطبيقكم.
POST{host}/api/operations/cashin/card/{cardId}

تنفيذ ببطاقة محفوظة

إضافة أموال من بطاقة مرمَّزة محفوظة.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
CardIdintrouteمطلوبمعرّف البطاقة المحفوظة.
Cvvstringbodyمطلوبرمز الأمان المكوَّن من 3 أرقام.
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه.

ملاحظات

  • بعد مصادقة 3D Secure، يُعاد توجيه المستخدم إلى acceptURL أو declineURL حسب النتيجة.
  • يتضمن عنوان URL لإعادة التوجيه المعاملات التالية: RESPONSE_CODE (0 = نجاح، وأي قيمة أخرى = فشل)، وREASON_CODE (سبب مقروء: SUCCESS، DECLINED…) وOPERATION (نوع العملية، مثال: PAYMENT).
  • تحققوا من RESPONSE_CODE وREASON_CODE عند استلام إعادة التوجيه لتحديد الإجراء التالي في تطبيقكم.
POST{host}/api/operations/cashin/card/agent/preview

معاينة (عبر الوكيل)

التحقق من إمكانية إيداع أموال عبر رمز الوكيل.

ParameterTypeInمطلوبDescription
codestringqueryمطلوبرمز الوكيل.
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه.
POST{host}/api/operations/cashin/card/agent

تنفيذ (عبر الوكيل)

إضافة أموال إلى محفظة عميل عبر وكيل.

ParameterTypeInمطلوبDescription
agentstringqueryمطلوبرمز الوكيل.
FirstNamestringbodyمطلوبالاسم الشخصي لحامل البطاقة.
LastNamestringbodyمطلوبالاسم العائلي لحامل البطاقة.
Cvvstringbodyمطلوبرمز الأمان المكوَّن من 3 أرقام.
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه.
Panstringbodyمطلوبرقم البطاقة الكامل.
ExpiryDatestringbodyمطلوبتاريخ الانتهاء بصيغة YYMM.
KeepAliveboolbodyمطلوبحفظ البطاقة للاستخدام اللاحق.
Currencystringbodyاختياريرمز العملة ISO المكوَّن من 3 أحرف (مثال: MAD).
CardNamestringbodyاختياريالاسم الذي يختاره المستخدم لحفظ البطاقة.

ملاحظات

  • بعد مصادقة 3D Secure، يُعاد توجيه المستخدم إلى acceptURL أو declineURL حسب النتيجة.
  • يتضمن عنوان URL لإعادة التوجيه المعاملات التالية: RESPONSE_CODE (0 = نجاح، وأي قيمة أخرى = فشل)، وREASON_CODE (سبب مقروء: SUCCESS، DECLINED…) وOPERATION (نوع العملية، مثال: PAYMENT).
  • تحققوا من RESPONSE_CODE وREASON_CODE عند استلام إعادة التوجيه لتحديد الإجراء التالي في تطبيقكم.

التحويل

POST{host}/api/operations/transfer/preview

معاينة

التحقق من إمكانية نقل الأموال داخليًا بين محافظ العملاء.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف المُرسِل. الصيغة: +212*********
Amountdecimalbodyمطلوبالمبلغ المراد تحويله.
Reasonstringbodyمطلوبسبب التحويل.
RecipientPhoneNumberstringbodyمطلوبرقم هاتف المستفيد. الصيغة: +212*********
BeneficiaryIdintbodyاختياريمرجع إلى مستفيد موجود (اختياري).
POST{host}/api/operations/transfer

تنفيذ

نقل الأموال داخليًا بين محافظ العملاء.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف المُرسِل.
Amountdecimalbodyمطلوبالمبلغ المراد تحويله.
Reasonstringbodyمطلوبسبب التحويل.
RecipientPhoneNumberstringbodyمطلوبرقم هاتف المستفيد.
BeneficiaryIdintbodyاختياريمرجع إلى مستفيد موجود (اختياري).

التحويل البنكي

POST{host}/api/operations/bank-transfer/preview

معاينة

التحقق من إمكانية إرسال أموال من محفظة إلى حساب بنكي خارجي.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyاختياريمطلوب إذا كان AgentCode فارغًا. لا يجتمع مع AgentCode (أحدهما فقط).
AgentCodestringbodyاختياريمطلوب إذا كان CustomerPhoneNumber فارغًا. رمز الوكيل (رئيسي أو تجزئة). لا يجتمع مع CustomerPhoneNumber.
Amountdecimalbodyمطلوبالمبلغ المراد تحويله.
Reasonstringbodyمطلوبسبب التحويل (أحرف لاتينية فقط، بحد أقصى 35 حرفًا).
BeneficiaryIdintbodyاختيارياختياري إذا تم توفير rib + beneficiaryName.
BeneficiaryNamestringbodyاختيارياختياري إذا تم توفير beneficiaryId.
RibstringbodyاختياريRIB: سلسلة رقمية من 24 رقمًا. اختياري إذا تم توفير beneficiaryId.

ملاحظات

  • يجب توفير معرّف واحد على الأقل من بين beneficiaryId أو (rib + beneficiaryName).
POST{host}/api/operations/bank-transfer

تنفيذ

إرسال أموال من محفظة إلى حساب بنكي خارجي.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyاختياريمطلوب إذا كان AgentCode فارغًا. لا يجتمع مع AgentCode (أحدهما فقط).
AgentCodestringbodyاختياريمطلوب إذا كان CustomerPhoneNumber فارغًا. لا يجتمع مع CustomerPhoneNumber.
Amountdecimalbodyمطلوبالمبلغ المراد تحويله.
Reasonstringbodyاختياريسبب التحويل (اختياري في خطوة التنفيذ).
BeneficiaryIdintbodyاختيارياختياري إذا تم توفير rib + beneficiaryName.
BeneficiaryNamestringbodyاختيارياختياري إذا تم توفير beneficiaryId.
RibstringbodyاختياريRIB: 24 رقمًا. مطلوب في غياب beneficiaryId.

الدفع للتاجر

POST{host}/api/operations/merchant/payment/push/manual/preview

عبر الهاتف — معاينة

التحقق من الدفع للتاجر عبر PhoneNumber.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف العميل الدافع.
Amountdecimalbodyمطلوبمبلغ الدفع.
Reasonstringbodyمطلوبسبب الدفع.
RecipientPhoneNumberstringbodyمطلوبرقم هاتف التاجر.
BeneficiaryIdintbodyاختياريمرجع إلى مستفيد موجود (اختياري).
POST{host}/api/operations/merchant/payment/push/manual

عبر الهاتف — تنفيذ

الدفع للتاجر عبر PhoneNumber.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف العميل الدافع.
Amountdecimalbodyمطلوبمبلغ الدفع.
Reasonstringbodyمطلوبسبب الدفع.
RecipientPhoneNumberstringbodyمطلوبرقم هاتف التاجر.
BeneficiaryIdintbodyاختياريمرجع إلى مستفيد موجود (اختياري).
POST{host}/api/operations/merchant/payment/push/qrcode/preview

عبر رمز QR — معاينة

التحقق من الدفع للتاجر عبر رمز QR.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف العميل الدافع.
QrCodeContentstringbodyمطلوبمحتوى رمز QR الممسوح.
Amountdecimalbodyمطلوبمبلغ الدفع.
POST{host}/api/operations/merchant/payment/push/qrcode

عبر رمز QR — تنفيذ

الدفع للتاجر عبر رمز QR.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف العميل الدافع.
QrCodeContentstringbodyمطلوبمحتوى رمز QR.
Amountdecimalbodyمطلوبمبلغ الدفع.
POST{host}/api/operations/merchant/payment/push/card/preview

عبر البطاقة — معاينة

التحقق من الدفع للتاجر بالبطاقة (Card to Wallet).

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف التاجر.
Amountdecimalbodyمطلوبمبلغ الدفع.
POST{host}/api/operations/merchant/payment/card

عبر البطاقة — تنفيذ

الدفع للتاجر بالبطاقة (Card to Wallet). مسار 3DS: تُرجِع الاستجابة `redirectionURL` الذي يجب فتحه.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف التاجر. الصيغة: +212*********
FirstNamestringbodyمطلوبالاسم الشخصي لحامل البطاقة.
LastNamestringbodyمطلوبالاسم العائلي لحامل البطاقة.
Cvvstringbodyمطلوبرمز CVV (3 أرقام).
Amountdecimalbodyمطلوبمبلغ الدفع.
Panstringbodyمطلوبرقم البطاقة (PAN).
ExpiryDatestringbodyمطلوبتاريخ الانتهاء بصيغة `YYMM`. مثال: `2608`.
KeepAliveboolbodyمطلوبترميز البطاقة لإعادة استخدامها عبر نقطة نهاية البطاقة المرمَّزة.
Currencystringbodyاختياريالعملة. القيمة الافتراضية: MAD.
3dSecureboolbodyاختياريتفعيل 3D Secure. القيمة الافتراضية: true.
FeesPercentdecimalbodyاختيارينسبة الرسوم المطبَّقة على الدافع.
AllowInternationalCardsboolbodyاختياريقبول البطاقات الدولية.
InternationalFeesPercentdecimalbodyاختيارينسبة الرسوم الخاصة بالبطاقات الدولية.
AutoCaptureboolbodyاختياريتحصيل الدفع تلقائيًا.
NotificationUrlstringbodyاختياريعنوان URL الذي يُشعَر عند انتهاء المعاملة (نجاح/فشل).
AcceptUrlstringbodyاختياريعنوان URL لإعادة التوجيه عند نجاح 3DS.
CardNamestringbodyاختياريتسمية البطاقة (للترميز).
ExternalReferencestringbodyاختياريالمرجع الخارجي للتاجر.

ملاحظات

  • بعد مصادقة 3D Secure، يُعاد توجيه المستخدم إلى acceptURL أو declineURL حسب النتيجة.
  • يتضمن عنوان URL لإعادة التوجيه المعاملات التالية: RESPONSE_CODE (0 = نجاح، وأي قيمة أخرى = فشل)، وREASON_CODE (سبب مقروء: SUCCESS، DECLINED…) وOPERATION (نوع العملية، مثال: PAYMENT).
  • تحققوا من RESPONSE_CODE وREASON_CODE عند استلام إعادة التوجيه لتحديد الإجراء التالي في تطبيقكم.
POST{host}/api/operations/merchant/payment/tokenized/card/{cardId}

عبر بطاقة مرمَّزة — تنفيذ

الدفع للتاجر عبر بطاقة سبق ترميزها (`KeepAlive = true`). رمز CVV هو الوحيد المطلوب.

ParameterTypeInمطلوبDescription
cardIdintpathمطلوبمعرّف البطاقة المرمَّزة.
PhoneNumberstringqueryمطلوبرقم هاتف التاجر. الصيغة: +212*********
Cvvstringbodyمطلوبرمز CVV (3 أرقام).
Amountdecimalbodyمطلوبمبلغ الدفع.

ملاحظات

  • بنية الاستجابة نفسها كما في "الدفع للتاجر بالبطاقة — تنفيذ".
  • بعد مصادقة 3D Secure، يُعاد توجيه المستخدم إلى acceptURL أو declineURL حسب النتيجة.
  • يتضمن عنوان URL لإعادة التوجيه المعاملات التالية: RESPONSE_CODE (0 = نجاح، وأي قيمة أخرى = فشل)، وREASON_CODE (سبب مقروء) وOPERATION.
GET{host}/api/operations/merchant/qrcode/static

توليد رمز QR ثابت

توليد رمز QR ثابت لتاجر (دون مبلغ مضمَّن). يُدخل العميل المبلغ عند الدفع.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف التاجر.
MaskedNumberboolqueryاختياريإخفاء رقم التاجر في محتوى رمز QR. مثال: +2126######74
POST{host}/api/operations/merchant/qrcode

توليد رمز QR ديناميكي

توليد رمز QR ديناميكي بمبلغ ثابت ومرجع فريد.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف التاجر.
MaskedNumberboolqueryاختياريإخفاء رقم التاجر.
Amountdecimalbodyمطلوبالمبلغ الثابت لرمز QR.

ملاحظات

  • رمز QR الثابت (GET): دون مبلغ مضمَّن، يُدخل العميل المبلغ عند الدفع.
  • رمز QR الديناميكي (POST): مبلغ ثابت مضمَّن، ومرجع فريد `qrCodeReference`.

الاسترجاع ChargeBack

POST{host}/api/operations/chargeback/preview

معاينة

التحقق من إمكانية تنفيذ عملية استرجاع.

ParameterTypeInمطلوبDescription
SourcePhoneNumberstringbodyمطلوبرقم هاتف العميل المُصدِر. الصيغة: +212*********
Amountdecimalbodyمطلوبمبلغ الاسترجاع.
Descriptionstringbodyمطلوبسبب الاسترجاع.
DestinationPhoneNumberstringbodyمطلوبرقم هاتف المستلِم. الصيغة: +212*********
OriginalOperationIdintbodyمطلوبمعرّف العملية الأصلية موضوع الاسترجاع.
POST{host}/api/operations/chargeback

تنفيذ

تنفيذ عملية استرجاع.

ParameterTypeInمطلوبDescription
SourcePhoneNumberstringbodyمطلوبرقم هاتف العميل المُصدِر.
Amountdecimalbodyمطلوبمبلغ الاسترجاع.
Descriptionstringbodyمطلوبسبب الاسترجاع.
DestinationPhoneNumberstringbodyمطلوبرقم هاتف المستلِم.
OriginalOperationIdintbodyمطلوبمعرّف العملية الأصلية.

عمليات الطلب

POST{host}/api/operations/cashin/request

طلب إيداع CashIn

طلب عملية إيداع CashIn. يولّد مرجعًا فريدًا تنتهي صلاحيته مع الوقت.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف العميل.
Amountdecimalbodyمطلوبمبلغ الإيداع CashIn.

ملاحظات

  • operationType: 1 = CashIn، 2 = CashOut
  • operationStatus: 1 = open، 2 = completed، 3 = failed، 4 = canceled
POST{host}/api/operations/fatourati/cashin/request

طلب إيداع CashIn (Fatourati)

بدء عملية إيداع CashIn عبر المزوّد Fatourati. نقطة نهاية مخصصة — Fatourati مزوّد خاص له مسار توليد مراجع خاص به (بادئة FATREF-). استخدموا هذا المسار المخصص بدلًا من نقطة نهاية cashin القياسية؛ فقد يختلف سلوك توليد المرجع وقواعد انتهاء الصلاحية.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف العميل. بالنسبة للوكيل الرئيسي، استبدلوا phoneNumber برمز الوكيل (PhoneNumber => Code).
Amountdecimalbodyمطلوبالمبلغ المراد إيداعه. يجب أن يكون قيمة رقمية موجبة.
Descriptionstringbodyاختياريحقل نصي حر يصف الغرض من العملية.
FeesPercentdecimalbodyاختيارينسبة الرسوم المطبَّقة (كما هو مبيَّن في مثال الوثائق).

ملاحظات

  • نقطة نهاية مخصصة: لدى Fatourati مسار توليد مراجع خاص به (بادئة FATREF-)، مختلف عن مسار CashIn القياسي.
  • type (operationType): 1 = CashIn، 2 = CashOut
  • status (operationStatus): 1 = open، 2 = completed، 3 = failed
POST{host}/api/operations/cashout/request

طلب سحب CashOut

طلب عملية سحب CashOut. يولّد مرجعًا فريدًا تنتهي صلاحيته مع الوقت.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف العميل.
Amountdecimalbodyمطلوبمبلغ السحب CashOut.

الاطلاع على العمليات

GET{host}/api/operations

حسب العميل

الحصول على قائمة عمليات عميل محدد.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
PageSizeintqueryاختياريعدد النتائج في الصفحة. القيمة الافتراضية: 10.
PageNumberintqueryاختياريرقم الصفحة. القيمة الافتراضية: 1.
OperationTypelist intqueryاختياري1=CASHIN, 2=CASHOUT, 3=TRANSFER, 5=MOBILE_PAYMENT, 7=PAYMENT_REFUND, 9=BANK_TRANSFER, 10=RECHARGE, 12=CHARGEBACK, 24=CARD_PAYMENT, 25=BILL_PAYMENT
TransactionStatusintqueryاختياري1=OPEN, 2=COMPLETED, 3=FAILED, 4=CANCELED
Sensintqueryاختياري1=CREDIT, 2=DEBIT
Fromdatetimequeryاختياريتاريخ/وقت بداية التصفية.
Todatetimequeryاختياريتاريخ/وقت نهاية التصفية.

ملاحظات

  • collection: قائمة العمليات مقسّمة على صفحات.
  • count: العدد الإجمالي للعمليات المطابقة لمعايير التصفية.
  • accountNumber: يمكن أن يكون رقم هاتف أو RIB أو accountId.
GET{host}/api/operations/{id}

حسب المعرّف

الحصول على عملية محددة عبر معرّفها.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
Idintrouteمطلوبمعرّف العملية.

ملاحظات

  • operationId: معرّف العملية الشاملة.
  • transactionId: معرّف المعاملة الرئيسية (يمكن لعملية واحدة أن تولّد عدة معاملات: خصم المُرسِل، إضافة للمستلِم، رسوم، إلخ).
  • transactionReference: مرجع المعاملة الرئيسية.
  • amount: المبلغ الأولي.
  • totalAmount: المبلغ بعد تطبيق الرسوم والعمولات.
GET{host}/api/operations/all

الكل (حسب الشريك)

الحصول على قائمة جميع العمليات حسب الشريك.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
PageSizeintqueryاختياريعدد النتائج في الصفحة. القيمة الافتراضية: 10.
PageNumberintqueryاختياريرقم الصفحة (يبدأ من 1). القيمة الافتراضية: 1.
OperationTypelist intqueryاختياريالتصفية حسب نوع العملية.
TransactionStatusintqueryاختياريالتصفية حسب حالة المعاملة.
Sensintqueryاختياري1 = CREDIT، 2 = DEBIT.
Fromdatetimequeryاختياريالعمليات ابتداءً من تاريخ/وقت.
Todatetimequeryاختياريالعمليات حتى تاريخ/وقت.
GET{host}/api/operations/c-request-idقريباً

الاطلاع على عملية عبر C-Request-Id

الحصول على عملية عبر C-Request-Id الخاص بها. سيتوفر في الإصدار القادم.

لا توجد معاملات (parameters) مطلوبة.

ردّ المبلغ

POST{host}/api/operations/refund/preview

معاينة

التحقق من إمكانية ردّ المبلغ بعد دفعة لتاجر.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف العميل المراد ردّ المبلغ له.
OperationIdintbodyمطلوبمعرّف العملية المراد ردّ مبلغها.
RefundAmountdecimalbodyمطلوبمبلغ الردّ.
OrderIdstringbodyمطلوبقيمة OrderId الأصلية من paymentGateway.
TransactionTrackIdstringbodyمطلوبقيمة TransactionTrackId الأصلية من paymentGateway.
POST{host}/api/operations/refund

تنفيذ

ردّ المبالغ للعملاء بعد دفعة لتاجر.

ParameterTypeInمطلوبDescription
phoneNumberstringbodyمطلوبرقم هاتف العميل.
OperationIdintbodyمطلوبمعرّف العملية المراد ردّ مبلغها.
RefundAmountdecimalbodyمطلوبمبلغ الردّ.
OrderIdstringbodyمطلوبقيمة OrderId الأصلية.
TransactionTrackIdstringbodyمطلوبقيمة TransactionTrackId الأصلية.
ا

المستفيد

إدارة مستفيدي العميل: عرض القائمة، إضافة، تعديل، وحذف. يمكن تحديد المستفيدين برقم الهاتف و/أو RIB.

GET{host}/api/customer/beneficiaries

الاطلاع على المستفيدين

الحصول على قائمة المستفيدين لعميل.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
PageSizeintqueryاختياريعدد النتائج في الصفحة. القيمة الافتراضية: 10.
PageNumberintqueryاختياريرقم الصفحة. القيمة الافتراضية: 1.
Searchstringqueryاختياريالتصفية بكلمة مفتاحية.
Fromdatetimequeryاختياريتاريخ الإنشاء — البداية.
Todatetimequeryاختياريتاريخ الإنشاء — النهاية.
POST{host}/api/customer/beneficiaries

إضافة مستفيد

إضافة مستفيد جديد. يجب توفير PhoneNumber أو RIB على الأقل.

ParameterTypeInمطلوبDescription
PhoneNumber (query)stringqueryمطلوبرقم هاتف العميل (المالك).
Namestringbodyمطلوباسم المستفيد. حرفان على الأقل.
PhoneNumberstringbodyاختياريرقم هاتف المستفيد. الصيغة: +212*********
Ribstringbodyاختياريرقم RIB الخاص بالمستفيد. 24 رقمًا.
Emailstringbodyاختياريالبريد الإلكتروني للمستفيد.

ملاحظات

  • PhoneNumber أو RIB: يجب توفير أحدهما على الأقل.
PUT{host}/api/customer/beneficiaries/{id}

تعديل مستفيد

تعديل مستفيد موجود.

ParameterTypeInمطلوبDescription
PhoneNumber (query)stringqueryمطلوبرقم هاتف العميل (المالك).
Idintrouteمطلوبمعرّف المستفيد المراد تعديله.
Namestringbodyمطلوباسم المستفيد. حرفان على الأقل.
PhoneNumber (body)stringbodyاختياريرقم هاتف المستفيد.
Ribstringbodyاختياريرقم RIB الخاص بالمستفيد. 24 رقمًا.
Emailstringbodyاختياريالبريد الإلكتروني للمستفيد.
DELETE{host}/api/customer/beneficiaries/{Id}

حذف مستفيد

حذف مستفيد موجود.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
Idintrouteمطلوبمعرّف المستفيد المراد حذفه.
ا

البطاقات المرمَّزة

عرض وإدارة البطاقات البنكية المحفوظة (المرمَّزة) الخاصة بعميل.

GET{host}/api/customers/tokenized/cards

الاطلاع على بطاقات عميل

استرجاع جميع البطاقات المرمَّزة لعميل.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
PageSizeintqueryاختياريعدد النتائج في الصفحة. القيمة الافتراضية: 10.
PageNumberintqueryاختياريرقم الصفحة. القيمة الافتراضية: 1.

ملاحظات

  • customerBankCardId: معرّف فريد للبطاقة المحفوظة.
  • maskedPan: رقم البطاقة المقنَّع (آخر 4 أرقام).
  • issuer: اسم البنك المُصدر.
  • scheme: شبكة البطاقة (Visa، Mastercard، إلخ).
  • cardName: تسمية اختيارية يختارها العميل عند الترميز.
GET{host}/api/customers/tokenized/cards/{id}

الاطلاع على بطاقة عبر معرّفها

استرجاع بطاقة مرمَّزة محددة عبر معرّفها.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل.
Idintrouteمطلوبمعرّف البطاقة.
DELETE{host}/api/customers/tokenized/cards/{id}قريباً

حذف بطاقة مرمَّزة

حذف بطاقة مرمَّزة. سيتوفر في الإصدار القادم.

لا توجد معاملات (parameters) مطلوبة.

و

وكلاء التجزئة

إدارة وكلاء التجزئة: عرض القائمة، إضافة، وتنفيذ عمليات الإيداع/السحب CashIn/CashOut بمرجع.

GET{host}/api/agents/retail

الاطلاع على وكلاء التجزئة

عرض قائمة جميع وكلاء التجزئة.

ParameterTypeInمطلوبDescription
Codestringqueryمطلوبرمز الوكيل.
PageSizeintqueryاختياريعدد النتائج في الصفحة. القيمة الافتراضية: 10.
PageNumberintqueryاختياريرقم الصفحة. القيمة الافتراضية: 1.
Fromdatetimequeryاختياريإنشاء الوكيل — تاريخ البداية.
Todatetimequeryاختياريإنشاء الوكيل — تاريخ النهاية.
GET{host}/api/agents/retail/{code}

الاطلاع على وكيل عبر رمزه

الحصول على وكيل تجزئة محدد عبر رمزه.

ParameterTypeInمطلوبDescription
Codestringrouteمطلوبرمز الوكيل.
POST{host}/api/agents/retail

إضافة وكيل تجزئة

إضافة وكيل تجزئة جديد.

ParameterTypeInمطلوبDescription
PhoneNumberstringbodyمطلوبرقم هاتف الوكيل. الصيغة: +212*********
Namestringbodyمطلوبالاسم التجاري للوكيل.
FirstNamestringbodyمطلوبالاسم الشخصي. حرفان على الأقل.
LastNamestringbodyمطلوبالاسم العائلي. حرفان على الأقل.
Cinstringbodyمطلوبرقم وثيقة الهوية.
Addressstringbodyاختياريعنوان الوكيل.
Emailstringbodyاختياريالبريد الإلكتروني للوكيل.
PUT{host}/api/agents/retail/{code}قريباً

تعديل وكيل تجزئة

تعديل وكيل تجزئة. سيتوفر في الإصدار القادم.

لا توجد معاملات (parameters) مطلوبة.

GET{host}/api/operations/cashin/request

الاطلاع على إيداع CashIn عبر مرجع

استرجاع تفاصيل العملية المطلوبة باستخدام معرّف مرجع فريد.

ParameterTypeInمطلوبDescription
Referencestringqueryمطلوبالمرجع الفريد للعملية.

ملاحظات

  • type: 1 = CashIn، 2 = CashOut
  • status: 1 = open، 2 = completed، 3 = failed
POST{host}/api/operations/cashin/agent

تنفيذ إيداع CashIn عبر مرجع

تنفيذ عملية إيداع CashIn من طرف الوكيل.

ParameterTypeInمطلوبDescription
Codestringbodyمطلوبرمز الوكيل الذي ينفّذ العملية.
Referencestringbodyمطلوبمعرّف مرجع العملية المراد استرجاعها.
GET{host}/api/operations/cashout/request

الاطلاع على سحب CashOut عبر مرجع

استرجاع تفاصيل عملية السحب CashOut عبر المرجع.

ParameterTypeInمطلوبDescription
Referencestringqueryمطلوبالمرجع الفريد للعملية.
POST{host}/api/operations/cashout/agent

تنفيذ سحب CashOut عبر مرجع

تنفيذ عملية سحب CashOut من طرف الوكيل.

ParameterTypeInمطلوبDescription
Codestringbodyمطلوبرمز الوكيل الذي ينفّذ العملية.
Referencestringbodyمطلوبمعرّف مرجع العملية المراد استرجاعها.
ا

الوكلاء الرئيسيون

الاطلاع على معلومات وكيل رئيسي.

GET{host}/api/agents/principal

الاطلاع على وكيل رئيسي عبر رمزه

الحصول على معلومات حساب وكيل رئيسي.

ParameterTypeInمطلوبDescription
Codestringqueryمطلوبرمز الوكيل الرئيسي.

ملاحظات

  • الاستجابة: كائن الوكيل Agent + كائن الحساب Account (الرصيد، RIB، المستوى، إلخ).
إ

إدارة البطاقات

إصدار البطاقات وإدارتها: برامج البطاقات، الطلبات، البطاقات، ضبط الاستخدام والمعاملات.

⚠️ قسم بيتا. لا تزال وثائق البطاقات البنكية تمهيدية: ستُضاف نقاط النهاية الناقصة وقد تتضمن أخطاء. إذا واجهتم أي مشكلة، تواصلوا مع Hedi ZaZ (نائب رئيس BaaS) عبر WhatsApp: wa.me/212600000010

GET{host}/api/cards/programs

الاطلاع على البرامج

الحصول على قائمة البرامج المتاحة للشريك.

ParameterTypeInمطلوبDescription
PageSizeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية = 10.
PageNumberintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية = 1.

ملاحظات

  • collection : قائمة البرامج.
  • count : عدد البرامج.
GET{host}/api/cards/programs/{id}قريباً

الاطلاع على برنامج عبر معرّفه

سيتوفر في الإصدار القادم.

ParameterTypeInمطلوبDescription
Idintrouteمطلوبمعرّف برنامج البطاقات.
POST{host}/api/cards/applications

إضافة طلب بطاقة

إضافة طلب بطاقة جديد.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
cardProgramIdintqueryمطلوبمعرّف برنامج البطاقات.

ملاحظات

  • لا يوجد محتوى للطلب حاليًا.
GET{host}/api/cards/applications

الاطلاع على الطلبات

الحصول على قائمة الطلبات حسب معايير التصفية.

ParameterTypeInمطلوبDescription
PageSizeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية = 10.
PageNumberintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية = 1.
Statusintqueryاختياريالتصفية حسب الحالة: 1=Pending، 2=Validated، 3=Rejected.

ملاحظات

  • collection : قائمة الطلبات.
  • count : عدد الطلبات.
  • CardApplicationStatus — 1: PENDING، 2: VALIDATED، 3: REJECTED.
GET{host}/api/cards/applications/customer

الاطلاع على طلبات عميل

الحصول على قائمة الطلبات حسب العميل.

ParameterTypeInمطلوبDescription
PageSizeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية = 10.
PageNumberintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية = 1.

ملاحظات

  • collection : قائمة الطلبات.
  • count : عدد الطلبات.
PUT{host}/api/cards/applications/{id}/validate

قبول طلب

قبول طلب قائم قيد المعالجة.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Idintrouteمطلوبمعرّف الطلب المراد قبوله.

ملاحظات

  • لا يوجد محتوى للطلب حاليًا.
PUT{host}/api/cards/applications/{id}/reject

رفض طلب

رفض طلب قائم قيد المعالجة.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Idintrouteمطلوبمعرّف الطلب المراد رفضه.

ملاحظات

  • لا يوجد محتوى للطلب حاليًا.
GET{host}/api/cards

الاطلاع على البطاقات

الحصول على قائمة البطاقات حسب الشريك.

ParameterTypeInمطلوبDescription
PageSizeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية = 10.
PageNumberintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية = 1.
PhoneNumberstringqueryاختياريرقم هاتف العميل. الصيغة: +212*********
CardProgramIdintqueryاختياريمعرّف برنامج البطاقات.
DeliveryStatusIdintqueryاختياريمعرّف حالة التسليم (انظر قوائم تعداد البطاقات).
CardStatusIdintqueryاختياريمعرّف حالة البطاقة (انظر قوائم تعداد البطاقات).

ملاحظات

  • collection : قائمة البطاقات.
  • count : عدد البطاقات.
  • CardType — 1: PHYSICAL، 2: VIRTUAL، 3: DIGITAL.
  • DeliveryStatus — 1: PENDING، 2: SENT_TO_PERSONALIZATION، 3: READY_FOR_DELIVERY، 4: DELIVERED.
  • CardStatus — 1: ISSUED، 2: ACTIVATED، 3: BLOCKED، 4: SUSPENDED، 5: EXPIRED، 6: CANCELLED.
GET{host}/api/cards/{id}

الاطلاع على بطاقة عبر معرّفها

الحصول على بطاقة محددة عبر معرّفها.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Idintrouteمطلوبمعرّف البطاقة.
PUT{host}/api/cards/{id}/{action}

إجراءات البطاقة

تنفيذ إجراءات على البطاقات الموجودة (تفعيل، حظر، تعليق، إلخ).

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Idintrouteمطلوبمعرّف البطاقة المراد تعديلها.

ملاحظات

  • الإجراءات المتاحة ({action}):
  • /activate — تفعيل البطاقة وجعلها جاهزة للاستخدام.
  • /block — حظر البطاقة مؤقتًا عن أي معاملات.
  • /suspend — تعليق استخدام البطاقة حتى إشعار آخر.
  • /reactivate — إعادة تفعيل بطاقة سبق تعليقها.
  • /cancel — إلغاء البطاقة وتعطيلها نهائيًا.
  • /unblock-pin — إلغاء قفل الرمز السري PIN للبطاقة بعد محاولات فاشلة.
  • /reset-pin — إعادة تعيين رمز سري PIN جديد للبطاقة وتوليده.
  • الاستجابة: true / false.
PUT{host}/api/cards/{id}/services

ضبط استخدام البطاقة

تحديث خدمات البطاقة لضبط الاستخدام.

ParameterTypeInمطلوبDescription
PhoneNumberstringqueryمطلوبرقم هاتف العميل. الصيغة: +212*********
Idintrouteمطلوبمعرّف البطاقة المراد تعديلها.
allowAtmboolbodyمطلوبتفعيل أو تعطيل السحب من الصراف الآلي ATM للبطاقة.
allowOnlineboolbodyمطلوبتفعيل أو تعطيل المعاملات عبر الإنترنت/التجارة الإلكترونية.
allowPosboolbodyمطلوبتفعيل أو تعطيل المدفوعات عبر نقاط البيع POS.
contactlessEnabledboolbodyمطلوبتفعيل أو تعطيل المدفوعات اللاتلامسية.

ملاحظات

  • الاستجابة: true / false.
GET{host}/api/cards/{id}/transactions

الاطلاع على معاملات البطاقة

الحصول على معاملات البطاقة.

ParameterTypeInمطلوبDescription
PageSizeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية = 10.
PageNumberintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية = 1.
PhoneNumberstringqueryاختياريرقم هاتف العميل. الصيغة: +212*********
Fromdatetimequeryاختياريالتصفية من تاريخ.
Todatetimequeryاختياريالتصفية إلى تاريخ.
Idintrouteمطلوبمعرّف البطاقة.

ملاحظات

  • collection : قائمة المعاملات.
  • count : عدد المعاملات.
ا

المحاكاة (Sandbox)

نقاط نهاية محاكاة خاصة ببيئة sandbox فقط لإتمام عمليات الإيداع/السحب CashIn/CashOut بمرجع دون التعامل مع شبكة وكلاء حقيقية. استخدموها مع البطاقة التجريبية أدناه لتنفيذ مسار كامل من البداية إلى النهاية.

بطاقة ائتمان تجريبية

استخدموا بيانات هذه البطاقة التجريبية لاختبار الإيداع بالبطاقة في بيئة sandbox.

PAN

4918914107195005

CVV

123

تاريخ الانتهاء

08/26 (أو أي تاريخ مستقبلي)

رمز 3D Secure

555
POST{host}/api/simulate/network/operations/cashin200

محاكاة إيداع CashIn عبر الشبكة

تحاكي تنفيذ إيداع CashIn بمرجع (خطوة وكيل الشبكة). تُطلق حدث Webhook باسم `cashin.network.executed`.

ParameterTypeInمطلوبDescription
referencestringbodyمطلوبالمرجع الرقمي المُعاد عند إنشاء طلب الإيداع CashIn.
POST{host}/api/simulate/network/operations/cashout200

محاكاة سحب CashOut عبر الشبكة

تحاكي تنفيذ سحب CashOut بمرجع (خطوة وكيل الشبكة). تُطلق حدث Webhook باسم `cashout.network.executed`.

ParameterTypeInمطلوبDescription
referencestringbodyمطلوبالمرجع الرقمي المُعاد عند إنشاء طلب السحب CashOut.
أ

أحداث Webhook

تتيح أحداث Webhook لمنصة ChariBaaS إشعار نظامكم بالأحداث (اكتمال عملية، تحديثات KYC، إلخ) في زمن شبه فوري. يعرض خادمكم نقطة نهاية HTTPS؛ ونرسل إليها أحداث JSON موقَّعة عبر POST.

طلب HTTP

POSThttps://{your-domain}/webhooks/chari

يمكنكم توفير أي نقطة نهاية أخرى.

Headers

Content-Type: application/jsonUser-Agent: Chari-BAAS-Webhook/1.0C-Webhook-Id: xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxxX-Api-Key: xxxxxxxx
  • C-Webhook-Id: معرّف فريد لطلب Webhook، تولّده Chari.
  • X-Api-Key: مفتاح سري يُستخدم للمصادقة لدى نظامكم (يجب أن تزوّدونا بهذا المفتاح).

الاستجابة المتوقعة: 200 OK خلال 5 ثوانٍ (بمحتوى فارغ). في حال وجود خطأ في الأعمال أو إخلال بالعقد مرسَل من طرفنا، يُرجى إرجاع خطأ 400 مع وصف للمشكلة. أي استجابة غير 2xx تؤدي إلى إعادة المحاولة.

خصائص body الحدث

Propriétés communes

PropertyTypeمطلوبDescription
WebhookIdstringمطلوبمعرّف Webhook.
EventIdstringمطلوبنوع الحدث. مثال: bank-transfer.initiated
CRequestIdstringمطلوبمعرّف التتبّع المستلَم من الشريك.
OperationIdintمطلوبمعرّف العملية المنفَّذة (قد يكون 0 إذا لم تُنشأ أي عملية).
TransactionIdintاختياريمعرّف المعاملة الرئيسية.
OperationTypeintمطلوبرمز نوع العملية (انظر الأنواع).
OperationStatusintمطلوب1 = Open, 2 = Completed, 3 = Failed, 4 = Canceled
CreatedAtdateمطلوبتاريخ بدء المعالجة.
ExecutedAtdateمطلوبتاريخ تنفيذ العملية.
Amountdecimalمطلوبمبلغ العملية.
FeeAmountdecimalمطلوبمبلغ الرسوم.
PrimaryAccountNumberstringمطلوبرقم هاتف المُرسِل.
SecondaryAccountNumberstringاختياريرقم هاتف المستلِم.
Methodstringاختياريالطريقة: Card / Agent / Network

Spécifique Cash-in Card

PropertyTypeمطلوبDescription
CustomDatastringاختياريبيانات مخصصة يوفّرها الشريك (بحد أقصى 128 حرفًا).
GatewayTrackIdstringاختياريGateway Transaction Track Id.
GatewayOrderIdstringاختياريGateway Transaction Order Id.
GatewayReferenceIdstringاختياريGateway Transaction Reference Id.

Spécifique virement bancaire

PropertyTypeمطلوبDescription
BankTransferBeneficiaryNamestringاختيارياسم المستفيد للتحويلات البنكية.

Cash-in / Cash-out (référence réseau)

PropertyTypeمطلوبDescription
NetworkNamestringاختيارياسم الشبكة للعمليات عبر الشبكة.
Referencestringاختياريمرجع العملية المنفَّذة بمرجع.

سياسة إعادة المحاولة

Backoff:دقيقة، 5 دقائق، 30 دقيقة، 60 دقيقة، ثم كل 6 ساعات حتى 72 ساعة إجمالًا.
Stop:عند أول استجابة 200.
Dead letter:بعد 72 ساعة يُوسَم بأنه متعذّر التسليم.

الأحداث

Event IDDescription
customer.level.updatedتحديث مستوى حساب العميل
cashin.card.authorizedقبول إيداع CashIn بالبطاقة
payment.card.authorizedقبول الدفع بالبطاقة
payment.receivedاستلام التاجر للدفعة
bank-transfer.initiatedإرسال التحويل البنكي
bank-transfer.completedاكتمال التحويل البنكي (تمت تسويته أو رُفض أو أُعيد — راجعوا OperationStatus)
bank-transfer.receivedاستلام التحويل البنكي
transfer.receivedاستلام التحويل
cashin.network.executedتنفيذ إيداع CashIn بمرجع
cashout.network.executedتنفيذ سحب CashOut بمرجع

مثال body الحدث

التحويل البنكي

json
{
  "data": {
    "WebhookId": 12345,
    "CRequestId": "a4d1e0b5-9f6a-4c1d-bc7b-2d0a7f4b9b12",
    "OperationId": 924381,
    "OperationType": 5,
    "OperationStatus": 2,
    "CreatedAt": "2025-11-05T10:12:00Z",
    "ExecutedAt": "2025-11-05T10:12:22Z",
    "Amount": 25000.00,
    "FeeAmount": 350.00,
    "CustomData": "{\"note\":\"Salary for October\"}",
    "PrimaryAccountNumber": "+212711111111",
    "SecondaryAccountNumber": "+212722222222",
    "Method": "BankTransfer",
    "Reference": "BANK-REF-9FJ2X7",
    "BankTransferBeneficiaryName": "Aminata Diop"
  }
}

الإيداع بالبطاقة CashIn

json
{
  "data": {
    "WebhookId": 12346,
    "CRequestId": "7b8c9f1a-15da-4e1c-8c3b-3a2bd0ed5e6f",
    "OperationId": 563210,
    "OperationType": 1,
    "OperationStatus": 2,
    "CreatedAt": "2025-11-05T09:41:00Z",
    "ExecutedAt": "2025-11-05T09:41:18Z",
    "Amount": 10000.00,
    "FeeAmount": 150.00,
    "CustomData": "ref12345",
    "PrimaryAccountNumber": "+212711111111",
    "Method": "Card",
    "GatewayTrackId": "83c1d1c7",
    "GatewayOrderId": "20251105_00045",
    "GatewayReferenceId": "6f92b0aa"
  }
}
ص

صيغة الاستجابة

تُغلَّف جميع استجابات API داخل كائن `data`. تُعاد ترويسة C-Request-Id التي أرسلتموها في الاستجابة.

Header C-Request-Id

تدعم واجهتنا البرمجية ترويسة C-Request-Id لتمكين الشبكات من تتبّع الطلبات بكفاءة. يمكنكم إدراج C-Request-Id فريد في ترويسات الطلب، وسيُعاد في الاستجابة.

ت

تعبئة رصيد الاتصالات

توفّر واجهة Telco API واجهة موحّدة وآمنة لخدمات تعبئة رصيد الهاتف المحمول المدفوع مسبقًا. وتتيح خدمتين: استرجاع كتالوج منتجات التعبئة المتاحة، وإطلاق تعبئة لرقم هاتف معيّن وعرض مختار، مع تحقق فوري. المشغّلون المدعومون في المغرب: اتصالات المغرب (IAM) وOrange وInwi.

POST{host}/api/services/telco/catalog/b2b

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

الحصول على قائمة منتجات وعروض التعبئة المتاحة لرقم هاتف ومشغّل معيّنين.

ParameterTypeInمطلوبDescription
RecipientPhoneNumberstringbodyمطلوبرقم هاتف العميل، بالصيغة المطلوبة: +212*********.
Amountintbodyمطلوبالقيمة النقدية للمعاملة. يجب أن تكون قيمة رقمية موجبة.
Operatorintbodyمطلوبالمشغّل: 1 = اتصالات المغرب، 2 = Orange، 3 = Inwi.

ملاحظات

  • تتضمن المصفوفة data قائمة المنتجات المتاحة للمشغّل المطلوب.
  • استخدموا productCode في نقطة نهاية recharge لاختيار العرض.
POST{host}/api/services/telco/recharge/b2b

طلب تعبئة

بدء تعبئة رصيد هاتف محمول لرقم هاتف معيّن وعرض مختار، مع تحقق فوري وتتبّع للمعاملة.

ParameterTypeInمطلوبDescription
RecipientPhoneNumberstringbodyمطلوبرقم هاتف العميل، بالصيغة المطلوبة: +212*********.
Amountintbodyمطلوبالقيمة النقدية للمعاملة. يجب أن تكون قيمة رقمية موجبة.
Operatorintbodyمطلوبالمشغّل: 1 = اتصالات المغرب، 2 = Orange، 3 = Inwi.
ProductCodeintbodyمطلوبرمز المنتج المتاح، المُعاد من نقطة نهاية الكتالوج.
Codestringbodyمطلوبرمز الوكيل الرئيسي — الحساب الذي سيُخصم منه. توفّره Chari بعد تفعيل حساب الشريك الخاص بكم.
RechargeTypeintbodyمطلوبنوع التعبئة: 0 = كلاسيكية، 1 = منتج.

ملاحظات

  • المشغّلون الثلاثة مدعومون جميعًا: 1 = اتصالات المغرب، 2 = Orange، 3 = Inwi.
  • Code هو رمز الوكيل الرئيسي (الحساب المخصوم)، توفّره Chari بعد تفعيل حساب الشريك.
  • operationType: القيمة 10 (انظر جدول "الأنواع والمراجع").
ا

القسائم

توفّر واجهة Voucher API واجهة موحّدة وآمنة لإصدار القسائم الرقمية وإدارتها واستخدامها داخل منظومة BaaS: توزيع القيمة والخدمات المدفوعة مسبقًا (بطاقات الهدايا، تعبئة الألعاب، إلخ). يتبع مسار الشراء نموذج معاينة/تأكيد.

GET{host}/api/vouchers/articles

استرجاع الكتالوج (المقالات)

استرجاع الكتالوج الحالي: قائمة مقالات القسائم لعلامة تجارية معيّنة.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل، بالصيغة +212*********.
brandIdintqueryمطلوبمعرّف العلامة التجارية. يجب أن يكون قيمة رقمية موجبة.
pageintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية: 1.
takeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية: 10.
GET{host}/api/vouchers/brands

استرجاع العلامات التجارية

استرجاع القائمة الحالية لعلامات القسائم التجارية المتاحة.

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف العميل، بالصيغة +212*********.
brandIdintqueryمطلوبمعرّف العلامة التجارية. يجب أن يكون قيمة رقمية موجبة.
pageintqueryاختياريرقم صفحة النتائج المراد استرجاعها. يبدأ من 1. القيمة الافتراضية: 1.
takeintqueryاختياريعدد النتائج المعادة في كل صفحة. القيمة الافتراضية: 10.
GET{host}/api/vouchers/brands/{id}

الاطلاع على علامة تجارية عبر معرّفها

الحصول على علامة تجارية محددة عبر معرّفها.

ParameterTypeInمطلوبDescription
idintpathمطلوبمعرّف العلامة التجارية.
phoneNumberstringqueryمطلوبرقم هاتف العميل، بالصيغة +212*********.
GET{host}/api/vouchers/{id}/articles

الاطلاع على القسائم عبر معرّف العلامة التجارية

الحصول على قائمة القسائم المرتبطة بعلامة تجارية، عبر معرّف العلامة.

ParameterTypeInمطلوبDescription
idintpathمطلوبمعرّف العلامة التجارية.
phoneNumberstringqueryمطلوبرقم هاتف العميل، بالصيغة +212*********.

ملاحظات

  • تعكس الاستجابة كائن علامة تجارية Brand، كما هو معرَّف في الوثائق المصدر.
POST{host}/api/operations/voucher/preview

شراء قسيمة — معاينة

التحقق من إمكانية تنفيذ عملية شراء القسيمة (المبلغ، الرسوم) قبل التأكيد.

ParameterTypeInمطلوبDescription
CustomerPhoneNumberstringbodyمطلوبرقم هاتف العميل، بالصيغة +212*********.
DestinationPhoneNumberstringbodyمطلوبرقم هاتف المستلِم، بالصيغة +212*********.
BeneficiaryNamestringbodyمطلوبحقل نصي حر يصف اسم المستفيد.
ProviderSkuIdstringbodyمطلوبمعرّف المقال.
ProviderIdstringbodyمطلوبمعرّف المزوّد الذي يوفّر القسيمة.

ملاحظات

  • type: القيمة 23 (انظر جدول "الأنواع والمراجع").
  • feesAmount هو الرسوم؛ وtotalAmount هو المبلغ الإجمالي شامل الضريبة.
POST{host}/api/operations/voucher/confirm

شراء قسيمة — تأكيد

تنفيذ عملية شراء القسيمة. تُرجِع رمز القسيمة وتفاصيلها.

ParameterTypeInمطلوبDescription
customerPhoneNumberstringbodyمطلوبرقم هاتف العميل، بالصيغة +212*********.
destinationPhoneNumberstringbodyمطلوبرقم هاتف المستلِم، بالصيغة +212*********.
beneficiaryNamestringbodyمطلوبحقل نصي حر يصف اسم المستفيد.
providerSkuIdstringbodyمطلوبمعرّف المقال.
providerIdstringbodyمطلوبمعرّف المزوّد الذي يوفّر القسيمة.

ملاحظات

  • type / operation.operationType: القيمة 23 (انظر جدول "الأنواع والمراجع").
  • يتضمن operation.code رمز القسيمة المراد مشاركته مع المستفيد.
  • cashBack: مبلغ استرداد نقدي اختياري.
د

دفع الفواتير

تتيح وحدة دفع الفواتير للمستخدمين النهائيين تسديد الفواتير لدى الدائنين المرتبطين بشبكة Fatourati في المغرب (RADEEMA وLYDEC وIAM وTGR وAMENDIS وREDAL وغيرهم من مصدري فواتير Fatourati). يتبع المسار 5 خطوات: عرض قائمة الدائنين، عرض مستحقات الدائن، جلب نموذج التعريف الديناميكي، استرجاع غير المدفوعات، ثم تأكيد الدفع. نموذج بدائن واحد (لا توجد سلة متعددة المصدرين)؛ الدفع الجزئي مدعوم. عنوان بيئة sandbox: https://sandbox.charimoney.com.

GET{host}/api/fatourati/creanciers

قائمة الدائنين

تُرجِع قائمة الدائنين النشطين المتاحين للشريك عبر ChariBaaS (مصفّاة حسب عقد الشريك وإعدادات Fatourati). ولأن الاستجابة مستقرة نسبيًا، فإن تخزينها المؤقت لعدة ساعات لدى الشريك مقبول.

لا توجد معاملات (parameters) مطلوبة.

ملاحظات

  • codeRetour: 000 = ACCEPTE (نجاح)، 908 = خطأ تقني لدى Fatourati.
  • الاستجابة مستقرة نسبيًا: تخزينها المؤقت لبضع ساعات لدى الشريك مقبول.
GET{host}/api/fatourati/creances?creancierId={creancierId}

قائمة مستحقات دائن

تُرجِع قائمة المستحقات النشطة المعروضة من طرف دائن معيّن (يقابل المستحق نوع خدمة: فاتورة، تعبئة، ضريبة…). قد يعرض دائن واحد عدة مستحقات.

ParameterTypeInمطلوبDescription
creancierIdstringqueryمطلوبمعرّف الدائن المُحصَّل عليه عبر GET /creanciers (4 أرقام).

ملاحظات

  • codeRetour: 000 = ACCEPTE، 104 = دائن غير موجود أو غير نشط، 908 = خطأ تقني.
GET{host}/api/fatourati/form?creancierId={creancierId}&creanceId={creanceId}

الاطلاع على نموذج التعريف

تُرجِع مخطط نموذج التعريف الديناميكي بالعميل للزوج (دائن، مستحق): الحقول المراد عرضها (التسمية، النوع، الصيغة، الحجم، القيود). يجب على الشريك بناء شاشة الإدخال الخاصة به من هذه الاستجابة (لا نموذج مكتوب يدويًا) للبقاء متوافقًا مع الدائنين الجدد المضافين إلى شبكة Fatourati.

ParameterTypeInمطلوبDescription
creancierIdstringqueryمطلوبمعرّف الدائن (4 أرقام).
creanceIdstringqueryمطلوبمعرّف المستحق، مكوَّن دائمًا من خانتين (مثال: 01).

ملاحظات

  • typeChamp: text، select، password، libelle. الحقل من نوع libelle نص ثابت (غير قابل للتحرير) ويجب ألّا يُرسَل أبدًا في CreancierVals.
  • formatChamp: 1 = سلسلة نصية، 2 = عدد صحيح، 3 = عدد حقيقي. contrainte: 0 = اختياري، 1 = مطلوب.
  • refTxFatourati: 1 = استدعاء /impayes (القيمة الافتراضية)، 2 = sendRecharge (ربما أصبحت متقادمة).
  • رموز الإرجاع: 000 = ACCEPTE (نجاح)، 103 = المستحق/الخدمة غير نشط لدى الدائن المختار، 104 = دائن غير موجود، 908 = خطأ تقني لدى Fatourati.
POST{host}/api/fatourati/impayes?creancierId={creancierId}&creanceId={creanceId}

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

يُرسِل بيانات تعريف العميل (المُدخلة عبر /form) ويسترجع غير المدفوعات الخاصة بالعميل لدى الدائن. يفتح هذا الاستدعاء المعاملة (حالة EN_ATTENTE) ويُرجِع refTxFatourati لاستخدامه مع /confirm. يبقى الربط صالحًا لمدة 7 أيام تقويمية (مهلة Fatourati).

ParameterTypeInمطلوبDescription
creancierIdstringqueryمطلوبمعرّف الدائن (4 أرقام).
creanceIdstringqueryمطلوبمعرّف المستحق (خانتان).
CreancierValsarraybodyمطلوبمصفوفة القيم المُدخلة من المستخدم: كائنات { nomChamp, valeurChamp } (باستثناء الحقول من نوع typeChamp=libelle).

ملاحظات

  • تنتقل المعاملة إلى حالة EN_ATTENTE؛ احتفظوا بـ refTxFatourati من أجل /confirm. صالحة لمدة 7 أيام تقويمية.
  • codeDevise: القيمة 504 = MAD.
  • typeFrais: forfait، commission، forfait_facture. valeurFrais = النسبة المئوية × 100 (مثال: 1% → 100).
  • typeArticle: 0 = مستحق، 1 = رسوم، 2 = إلزامي، 3 = رسوم تنبر.
  • globalParams: المعاملات التقنية ذات التسمية libelle الفارغة (contrPaiement، isConfTO، isAnnul، rejoue، colAffiche) يجب ألّا تُعرض أبدًا على العميل.
  • رموز الإرجاع الرئيسية: 000 = نجاح (EN_ATTENTE)، 103 = مستحق غير نشط، 104 = دائن غير موجود، 107 = لا توجد فاتورة للدفع، 109 = حقل مطلوب ناقص، 902/908/909/910/911 = أخطاء تقنية/اتصال.
  • الوضع دون اتصال: يمكن أيضًا بدء دفعة عبر مرجع Fatourati ثابت من 13 رقمًا (4 للدائن + 2 للمستحق + 6 للفاتورة + 1 رقم تحقق)، يُمرَّر في CreancierVals.
POST{host}/api/fatourati/confirm?phoneNumber={phoneNumber}

تأكيد الدفع

يؤكد دفع مجموعة المقالات التي اختارها المستخدم النهائي. رمز الإرجاع 000 يعني تسوية فعلية لدى الدائن. يُحدَّد المستخدم النهائي برقم هاتفه لدى Chari Money (معامل الاستعلام phoneNumber).

ParameterTypeInمطلوبDescription
phoneNumberstringqueryمطلوبرقم هاتف المستخدم النهائي لدى Chari Money، بالصيغة الدولية (مثال: +212670770743). يجب أن يطابق مستخدمًا موجودًا لدى Chari Money، وإلا تُرفض المعاملة قبل أي استدعاء لـ Fatourati.
creancierIdstringbodyمطلوبمعرّف الدائن (نفس قيم /impayes).
creanceIdstringbodyمطلوبمعرّف المستحق.
refTxFatouratistringbodyمطلوبالمرجع المُعاد من /impayes. يربط الاستدعاء بالمعاملة المفتوحة.
CreancierValsarraybodyمطلوبإعادة مُثراة لحقول التعريف (libelle + nomChamp + valeurChamp).
ListeArticleSelectionnesarraybodyمطلوبمجموعة جزئية من impayesParams اختارها المستخدم (idArticle، prixTTC، typeArticle، …).

ملاحظات

  • codeRetour 000 = CONFIRME (تسوية فعلية). 301 = عولجت من قبل (تُعامَل كنجاح، اعرضوا الإيصال).
  • السلوك غير المتزامن (القناة الرقمية): الرموز 908/909/910 ليست حالات فشل نهائية — تبقى المعاملة في حالة AUTORISE ويُبلَّغ عن حلّها النهائي (CONFIRME/ANNULE) عبر Webhook.
  • يجب أن يظهر refReglement على الإيصال. numCRC / texteCRC (من params): تُعرض على الإيصال إن وُجدت.
  • أحداث Webhook الخاصة بالوحدة: payment.confirmed وpayment.cancelled وpayment.refunded وpayment.failed — تُصدر للإبلاغ عن الحل النهائي (الحالات CONFIRME / ANNULE / REMBOURSE / FAILED).
ا

الأنواع والمراجع

أنواع العمليات

IDCode
1CASHIN
2CASHOUT
3TRANSFER
5MOBILE_PAYMENT
7PAYMENT_REFUND
9BANK_TRANSFER
10RECHARGE
12CHARGEBACK
23VOUCHER
24CARD_PAYMENT
25BILL_PAYMENT

أنواع المعاملات

IDCode
1CASHIN
2CASHOUT
3TRANSFER
5MOBILE_PAYMENT
6TRANSACTION_FEES
7PAYMENT_REFUND
9CHARGEBACK
10CHARGEBACK_CANCELLATION
16BANK_TRANSFER
17RECHARGE
18CASHBACK
24CARD_PAYMENT
25BILL_PAYMENT

حالات العمليات

IDCodeDescription
1OPENمفتوحة (دورة الحياة جارية)
2COMPLETEDاكتملت بنجاح
3FAILEDفشلت
4CANCELEDأُلغيت

حالات المعاملات

IDCodeDescription
1OPENمفتوحة (جارية)
2COMPLETEDمكتملة
3FAILEDفشلت
4CANCELEDأُلغيت

اتجاه المعاملة (Sens)

IDCodeDescription
1CREDITدائن (أموال واردة)
2DEBITمدين (أموال صادرة)

حالات العميل

IDCodeDescription
0NOT_EXISTSالرقم غير موجود لدى ChariMoney
1NOT_CONFIRMEDموجود لكنه غير مؤكَّد (لم يُدخل رمز OTP)
2CONFIRMEDمؤكَّد ومسجَّل لدى Switch
3ACTIVEمسجَّل ونشِط وتم إنشاء الرمز السري PIN
4LOCKED_TEMPORARYمقفل مؤقتًا (محاولات مفرطة)
5LOCKEDمقفل

مستويات الحساب

IDCodeDescription
1LEVEL_1المستوى 1 — الاسم + رقم هاتف صالح + رقم البطاقة الوطنية CIN. الحد: 1,000 MAD.
2LEVEL_2المستوى 2 — تحقق كامل من الهوية KYC (البطاقة الوطنية CIN + سيلفي أو مسح الوثيقة). الحد: 4,000 MAD.
3LEVEL_3المستوى 3 — هوية متحقَّق منها + مقابلة + ملف عميل رقمي. الحد: 20,000 MAD.
4LEVEL_4المستوى 4 — تحقق كامل من الهوية KYC + مقابلة + إثبات الدخل + إثبات العنوان. الحد: 100,000 MAD.
5MERCHANTالتاجر — تحقق كامل من الشركة KYB + السجل التجاري IF/RC. الحد: قابل للتفاوض.

أنواع الوثائق

IDCodeDescription
1IdentityCardالبطاقة الوطنية للتعريف
2DrivingLicenseرخصة السياقة
3Passportجواز السفر
4ResidencePermitبطاقة الإقامة
5ProofOfIncomeإثبات الدخل
6ProofOfResidenceإثبات السكن
7Selfieسيلفي / صورة الوجه
8CommercialRegisterالسجل التجاري
ر

رموز الأخطاء

رموز حالة HTTP

401 Unauthorizedبيانات المصادقة (API KEY) غير مصرَّح بها.
422 Unprocessableالخادم غير قادر على معالجة الطلب.
423 Lockedالوصول مقفل بالنسبة للعميل المعني.
400 Bad Requestخطأ خاص بالحالة مع رمز خطأ Chari.

صيغة استجابة الخطأ

json
{
  "errorCode": 20005,
  "errorDescription": "The specified user could not be found."
}

رموز أخطاء Chari

10xxxGénéral

CodeMessageنقاط النهاية (endpoints) ذات الصلة
10001معاملات ناقصة.

20xxxClient

CodeMessageنقاط النهاية (endpoints) ذات الصلة
20000صيغة رقم الهاتف غير صالحة.
20005تعذّر العثور على المستخدم المحدد.
20006المعاملات الأولية المقدَّمة غير صحيحة أو غير صالحة.
20007رمز فئة التاجر (MCC) المقدَّم غير صحيح أو غير معروف.
20008التسجيل مقفل مؤقتًا بسبب قيود أمنية أو تنظيمية.
20009الطلب في انتظار التأكيد. يُرجى انتظار استكمال المعالجة.
20017لا يوجد طلب معلّق مرتبط برقم الهاتف المقدَّم.

26xxxPIN / Authentification

CodeMessageنقاط النهاية (endpoints) ذات الصلة
26001الرمز السري PIN المُدخل غير صحيح.
26004تم بالفعل تعيين رمز سري PIN لهذه المحفظة.
26005الرمز السري PIN المقدَّم لا يستوفي الصيغة المطلوبة (يجب أن يكون رقمًا من 4 خانات).

27xxxBénéficiaire

CodeMessageنقاط النهاية (endpoints) ذات الصلة
27000المستفيد موجود بالفعل بنفس رقم الهاتف phoneNumber.
27001المستفيد غير موجود.

32xxxKYC / Mise à niveau

CodeMessageنقاط النهاية (endpoints) ذات الصلة
32000هناك طلب ترقية قيد المراجعة بالفعل لهذا الحساب.
ا

البنية التحتية والأمن

البيئات

Sandbox

https://sandbox.charimoney.com

التطوير والاختبار. المعاملات محاكاة.

Production

Communiqué sur demande

معاملات حقيقية. تتطلب موافقة مسبقة.

إدارة مفاتيح API

سيُخصَّص لكم مفتاح API لكل بيئة (sandbox وproduction). يجب إدراج المفاتيح في الترويسة Chari-Api-Key لكل طلب.

إدراج عناوين IP والنطاقات في القائمة البيضاء

يجب مشاركة عناوين IP و/أو النطاقات التي ستُستخدم لاستهلاك واجهتنا البرمجية. لن يُسمح بالوصول إلى API إلا لعناوين IP/النطاقات المدرجة في القائمة البيضاء. إذا تغيّرت بنيتكم التحتية، حدّثوا قائمة عناوين IP/النطاقات لدى فريق الدعم.

كيفية إرسال عناوين IP / النطاقات

  1. 1قدّموا قائمة بعناوين IP العمومية أو النطاقات التي ستُستخدم للوصول إلى API.
  2. 2أرسلوا هذه المعلومات إلى فريق الدعم قبل الشروع في تكامل API.
  3. 3يجب الإبلاغ عن أي تغيير قبل 72 ساعة على الأقل حتى نتمكن من تحديث قواعدنا الأمنية.

الأمان والامتثال

  • تتم مصادقة API باستخدام مفاتيح API.
  • سترُفض الطلبات الواردة من عناوين IP/نطاقات غير مدرجة في القائمة البيضاء.
  • إذا تعرّض مفتاح API للاختراق، يجب تدويره فورًا.
  • قد يُطبَّق تحديد لمعدل الطلبات لمنع إساءة الاستخدام.
  • تتطلب بيئة الإنتاج موافقة مسبقة واختبارات في بيئة sandbox.

الخطوات التالية للتكامل

  1. 1
    طلب مفاتيح API

    تواصلوا مع الدعم لاستلام مفاتيحكم المخصصة لبيئتَي sandbox وproduction.

  2. 2
    تقديم عناوين IP/النطاقات

    قدّموا قائمة عناوين IP العمومية أو النطاقات لإدراجها في القائمة البيضاء.

  3. 3
    الاختبار في sandbox

    نفّذوا جميع اختبارات التكامل في بيئة sandbox.

  4. 4
    الانتقال إلى الإنتاج

    بعد الموافقة، انتقلوا إلى الإنتاج بمفتاح API الخاص بالبيئة الحقيقية.

ستتوصلون بنموذج لملئه بالعناصر اللازمة.