الانتقال إلى المحتوى الرئيسي
كل المقالات
دليل9 دقائق قراءة

الأداء عند الحجز عبر الإنترنت: تثبيت الموعد أو الطاولة أو الطلب المسبق بالأداء

الأداء عند الحجز عبر الإنترنت: جلسة دفع محدودة المدة أو رابط لاستعمال واحد، والإلغاء والاسترداد، وعدم الحضور، والطلبات المسبقة، دون أداء مزدوج.

الأداء عند الحجز عبر الإنترنت يعني أن تستخلصوا لحظة حجز الزبون، حتى يثبّت الأداءُ المكانَ: موعدًا، أو طاولة، أو حصة، أو طلبًا مسبقًا. مع موقع إلكتروني، تنشئون جلسة دفع تنتهي صلاحيتها في الوقت نفسه الذي ينتهي فيه حجز الموعد؛ ودون موقع، ترسلون رابط دفع لاستعمال واحد لكل حجز، بمدة صلاحيته الخاصة إن كان يُؤدّى بالبطاقة. وفي الحالتين، يُؤكَّد الحجز بناءً على دليل الأداء، لا على مجرد عودة الزبون إلى صفحتكم. يفصّل هذا الدليل الطريقتين، والطلبات المسبقة، والنقر المزدوج، وسياسة الإلغاء، والاسترداد، وعدم الحضور.

الأداء عند الحجز عبر الإنترنت: الاستخلاص لحظة الحجز

ChariPay منصة دفع مغربية، مزوّد خدمات دفع (PSP) تشغّله Chari Money، مؤسسة أداء مرخَّصة من بنك المغرب. ودورها في الحجز بسيط: أن يؤدي الزبون لحظة اختياره مكانه، وأن تُخبَروا بشكل موثوق بأن الأداء قد تمّ. ملعب بادل مساء الخميس، أو قاعة اجتماعات لصبيحة، أو حصة ركوب الأمواج، أو طاولة لعشاء جماعي، أو طلبية حلويات للعيد: بمجرد أداء ثمن المكان، يصبح لهذا الزبون ولا أحد غيره.

قاعدة واحدة تجنّبكم النزاعات. أكّدوا الطلبية عند استلام الويب هوك، لا عند إعادة التوجيه وحدها: فإعادة التوجيه تعني أن المشتري عاد، لا أن الأداء قد تمّ. فالزبون الذي يعود إلى موقعكم لم يؤدِّ بالضرورة: فقد يكون تخلّى عن المصادقة لدى بنكه؛ أما ويب هوك payment.succeeded الموقَّع فلا يترك مجالًا للشك.

ولحالتين قريبتين دليلهما الخاص. إن كنتم تطلبون تسبيقًا على عرض سعر ثم الباقي عند التسليم، فاقرؤوا استخلاص التسبيق. وإن كنتم تبيعون أماكن لحدث مؤرَّخ بمشاركين كثر — دوري، أو حفل، أو ورشة — فاقرؤوا بيع التذاكر عبر الإنترنت. أما هذا الدليل فيخص مكانًا واحدًا، وساعة واحدة، وزبونًا واحدًا، يؤدي المبلغ كاملًا.

مع موقع إلكتروني: جلسة دفع تنتهي مع الموعد

إن كان موقعكم أو تطبيقكم يدير جدولًا زمنيًا، فجلسة الدفع هي الأداة الطبيعية. تتحول الطلبية إلى جلسة: تنشئون الجلسة من جهة الخادم، وتعيدون توجيه المشتري إلى صفحة الدفع المستضافة — بالبطاقة مع ‎3-D Secure —، وتتلقون النتيجة عبر ويب هوك موقَّع. ولكل جلسة مدة حياة محدودة — 72 ساعة افتراضيًا، وexpiresAt لتقصيرها — ولا تُستهلك إلا مرة واحدة. وفي الحجز، هذا بالضبط ما تحتاجون إليه: تصبح مدة حياة الجلسة هي المدة التي تحجزون خلالها الموعد.

الخطوات بالترتيب:

  1. 1ضعوا الموعد قيد الانتظار في جدولكم، باسم الزبون، بمجرد أن يختاره.
  2. 2أنشئوا الجلسة من جهة الخادم، بالمبلغ ورقم orderId الخاص بكم وexpiresAt مضبوط على نهاية مدة الحجز التي تقبلونها — قصيرة لموعد مطلوب بكثرة؛ ودون expiresAt تعيش الجلسة 72 ساعة.
  3. 3أعيدوا توجيه الزبون إلى صفحة الدفع المستضافة: يؤدي بالبطاقة، مع مصادقة ‎3-D Secure لدى بنكه.
  4. 4أكّدوا الحجز عند استلام ويب هوك الأداء الناجح، وفي تلك اللحظة فقط.
  5. 5حرّروا الموعد عند انتهاء الصلاحية: إن مرّ وقت expiresAt دون أداء، فاقرؤوا الجلسة عبر GET /v1/payment-sessions/{sessionId}، ثم أعيدوا المكان إلى الجدول.

نداء الإنشاء، بمفتاح الاختبار:

bash
curl -X POST 'https://api-psp.charipay.ma/v1/payment-sessions' \
  -H 'X-CHARI-PAY-API-KEY: chari_sk_test_...' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-2026-0421-session' \
  -d '{
    "amount": 250.00,
    "orderId": "ORD-2026-0421",
    "externalId": "order-2026-0421",
    "config": {
      "customer": {
        "email": "amine.bennani@example.com",
        "firstName": "Amine",
        "lastName": "Bennani",
        "phone": "+212600000000"
      },
      "urls": {
        "accept": "https://votre-boutique.ma/paiement/succes",
        "decline": "https://votre-boutique.ma/paiement/echec",
        "notification": "https://votre-boutique.ma/webhooks/charipay"
      }
    },
    "metadata": { "cartId": "c_987", "source": "web" }
  }'

في الحجز، أضيفوا expiresAt (طابع زمني ISO-8601 بتوقيت UTC، في المستقبل) مضبوطًا على نهاية الحجز الذي اخترتموه، وضعوا معرّف الموعد في metadata: فهو يعود إليكم كما هو في حدث الأداء، مع رقم orderId الخاص بكم. ويتضمن الرد sessionId وsessionToken وverifyKey وexpiresAt وcheckoutUrl، ولا شيء غيرها؛ أما الحالة فتُقرأ بعد ذلك عبر GET /v1/payment-sessions/{sessionId}. وتفاصيل انتهاء الصلاحية والإلغاء وصفحات العودة في انتهاء جلسة الدفع والعودة منها، والعرض الكامل في صفحة الدفع المستضافة.

يمكنكم تجربة هذا السيناريو كاملًا قبل فتح الحجوزات: ابدؤوا في وضع الاختبار. ثلاثة حقول (الاسم، والبريد الإلكتروني المهني، والمؤسسة)، ورابط تفعيل يصلكم بالبريد لاختيار كلمة المرور، ثم بوابة التاجر حيث تنشئون بأنفسكم مفتاح الاختبار. أنشئوا جلسة بمدة صلاحية قصيرة، وادفعوها ببطاقة الاختبار، وراقبوا تأكيد موعدكم عند وصول الويب هوك: لا يتحرك أي مال حقيقي.

بلا موقع: رابط لاستعمال واحد لكل حجز

لا محرّك حجز لديكم؟ تتلقون الطلبات بالهاتف أو عبر واتساب أو إنستغرام، وتديرون الجدول بأنفسكم. هنا يقوم رابط الدفع بعمل الجلسة. رابط الدفع مبلغ ووصف؛ يدفع الزبون في صفحة تستضيفها ChariPay. ويُشارَك كرابط أو رمز QR أو ملصق PDF للطباعة أو بالبريد الإلكتروني أو واتساب.

للحجز:

  • رابط لاستعمال واحد لكل حجز، بالمبلغ الدقيق.
  • وصف يحدّد الحجز: «الملعب 2 — الخميس 19:00 — أمين ب.».
  • مدة صلاحية تتبع المكان، لرابط يُؤدّى بالبطاقة: 24 ساعة، 7 أيام، 30 يومًا، بلا انتهاء، أو تاريخ محدد — اختاروا تاريخًا قريبًا لموعد مطلوب، ودائمًا قبل الموعد نفسه.
  • حالة تتابعونها: نشط، مدفوع، ملغى، منتهي الصلاحية. يصلكم إشعار في بوابة التاجر عند الاستخلاص؛ والرابط المنتهي الصلاحية مكان يُعاد عرضه للبيع.

وللرابط المخصّص لاستعمال واحد ميزة لا تملكها الجلسة: ففي صفحته يستطيع الزبون أيضًا الأداء نقدًا في الوكالة. يختار النقد، ويتلقى مرجعًا، ويسدّده في وكالة من شبكة Chari، ويصلكم الإشعار بمجرد أن تؤكد الشبكة الإيداع؛ فيصبح الرابط «مدفوعًا». ومن جهة الخادم تُقرأ حالة الرابط عبر GET /v1/payment-links/{reference}. أما جلسة الدفع فلا تقبل إلا البطاقة. ولزبناء يفضّلون الأداء نقدًا، قد يكون هذا ما يحسم الاختيار.

إعداد يجب معرفته قبل إرسال الرابط. في بوابة التاجر، تفعيل خيار «Paiement en agence» (الأداء في الوكالة) على رابط يعطّل مدة صلاحيته: يبقى الرابط قابلًا للأداء بلا حدّ زمني. فالرابط الذي يحمل تاريخ انتهاء يُقدَّم إذن كرابط يُؤدّى بالبطاقة؛ ولزبون يؤدّي نقدًا، أنشئوا رابطًا بهذا الخيار، دون مدة صلاحية. والمقارنة العامة بين الأداتين في رابط دفع أم صفحة دفع، والعرض في صفحة روابط الدفع.

الطلب المسبق والأداء عبر الإنترنت: المخزون يتبع الأداء

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

عمليًا:

  1. 1عند الإنشاء، تضعون الكمية جانبًا في أداتكم أنتم، دون المساس بالمخزون، طوال مدة الصلاحية.
  2. 2عند حدث الأداء الناجح، تخصمون الكمية من المخزون وتبدؤون التحضير.
  3. 3عند انتهاء الصلاحية دون أداء، لم يتحرك المخزون: تعيدون ببساطة الكمية الموضوعة جانبًا إلى البيع.

بهذا تتجنبون الفخ المعهود في الطلب المسبق: مخزون نافد على الورق بسلال لم تُؤدَّ قط، بينما ينتظر زبناء حقيقيون. وإن كنتم تبيعون بلا موقع، فالمتجر المستضاف يتيح أيضًا نشر منتج بمخزون اختياري وصفحة بيعه؛ احتفظوا بالانضباط نفسه، ولا تبدؤوا التحضير إلا بعد أداء الطلبية.

النقر المزدوج لا يخصم مرتين

زبون ينقر مرتين على «احجز»، أو اتصال ينقطع فيعيد خادمكم إرسال الطلب: هذه هي الحالات التي تُنشئ أداءين لمكان واحد إن لم يمنعها شيء. وأداتان تمنعانها عند الإنشاء.

  • الترويسة `Idempotency-Key`: إعادة القيمة نفسها تُرجع النتيجة الأولى، بدل إنشاء جلسة أو رابط ثانٍ.
  • الحقل `externalId`، الفريد لكل حساب ولكل بيئة: الإنشاء بـexternalId موجود يُرجع المورد القائم بـ200 OK بدل 201 Created. اشتقّوه من رقم الحجز، واختبروا رمز الحالة: فكلاهما نجاح.

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

الإلغاء: اكتبوا سياستكم ثم استردّوا

لا تُدار الإلغاءات جيدًا إلا إذا كُتبت القاعدة قبل البيع. وسياسة الإلغاء الواضحة تقول أمرين: إلى متى يمكن للزبون أن يلغي، وكم يسترجع حسب التوقيت. والأرقام لكم — استرداد كامل حتى اليوم السابق، وجزء فقط في اليوم نفسه، ولا شيء بعد بدء الموعد: هذا قراركم كتاجر، تعرضونه في موقعكم أو في الرسالة المرافقة للرابط.

ثم إجراءان حسب التوقيت:

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

والطريقة الكاملة — بوابة التاجر، ونداء API، والتتبّع، والرسالة إلى الزبون — في استرداد مبلغ لزبون.

عدم الحضور: ما يحميه الأداء المسبق

الزبون الذي لا يحضر هو بالضبط سبب الأداء عند الحجز. فحين يُؤدّى ثمن المكان مسبقًا، لا يكلّفكم عدم الحضور الموعدَ: فالمبلغ موجود أصلًا في حساب الأداء الخاص بكم، متاحًا منذ لحظة نجاح الأداء.

لكن الأداء المسبق لا يتيح أن تستخلصوا لاحقًا مبلغًا لم يؤدّه الزبون بنفسه. فللاستخلاص اللاحق — مبلغ تكميلي، أو رسوم تنص عليها شروطكم —، أرسلوا إليه رابط دفع جديدًا يؤدّيه بنفسه؛ وإن كانت المدفوعات منتظمة، كباقة حصص شهرية، فأنشئوا اشتراكًا: يُرسَل إليه حينها رابط دفع بالبريد الإلكتروني عند كل استحقاق. فلا وجود إذن لـ«رسوم عدم حضور» تُستخلص تلقائيًا بعد ذلك: كل ما تريدون حمايته يجب أن يُؤدّى لحظة الحجز.

يبقى أن تقرّروا ما تقوله سياستكم في حالة عدم الحضور: لا يُردّ شيء، أو يُردّ جزء، أو يُؤجَّل الحجز مرة واحدة. اكتبوا ذلك بوضوح، وطبّقوه على الجميع بالطريقة نفسها؛ وإن اخترتم ردّ جزء من أداء بالبطاقة، فهو استرداد جزئي عادي.

أسئلة شائعة

كيف أجعل الزبون يؤدي ثمن الحجز دون موقع إلكتروني؟

برابط دفع لاستعمال واحد لكل حجز: مبلغ، ووصف (الموعد واسم الزبون)، ومدة صلاحية تنتهي قبل الموعد إن كان الأداء بالبطاقة. تشاركونه عبر واتساب أو البريد الإلكتروني، فيؤدي الزبون في صفحة تستضيفها ChariPay، ويصلكم إشعار في بوابة التاجر عند الاستخلاص. أما لزبون يؤدّي نقدًا، فأنشئوا بدلًا منه رابطًا بخيار «Paiement en agence»، دون مدة صلاحية.

كم من الوقت يبقى المكان محجوزًا أثناء الأداء؟

المدة التي تقرّرونها. في الجلسة، يحدّد expiresAt مدة الحياة؛ ودونه تبلغ 72 ساعة افتراضيًا. وفي الرابط الذي يُؤدّى بالبطاقة، تختارون 24 ساعة، أو 7 أيام، أو 30 يومًا، أو بلا انتهاء، أو تاريخًا محددًا. اجعلوا هذه المدة موافقة لمدة الحجز لديكم، وحرّروا الموعد بمجرد انقضائها دون أداء.

هل يمكن للزبون أداء حجزه نقدًا؟

نعم، برابط دفع لاستعمال واحد، يُنشأ في بوابة التاجر بخيار «Paiement en agence»، أي دون مدة صلاحية: في صفحته يختار الزبون النقد، ويتلقى مرجعًا، ويسدّده في وكالة من شبكة Chari؛ وبمجرد أن تؤكد الشبكة الإيداع، يصبح الرابط «مدفوعًا» ويصلكم الإشعار في بوابة التاجر. أما جلسة الدفع المنشأة عبر API فلا تقبل إلا البطاقة.

هل يمكن أن يؤدي النقر المزدوج إلى أداء الحجز مرتين؟

لا، إن استعملتم الأدوات المخصصة لذلك. عند الإنشاء، تمنع الترويسة Idempotency-Key وexternalId مشتقّ من رقم الحجز إنشاءَ جلستين أو رابطين: فإعادة الطلب تُرجع المورد القائم. ومن جهة الزبون، لا تُستهلك الجلسة إلا مرة واحدة، ولا يُؤدّى الرابط المخصّص لاستعمال واحد إلا مرة واحدة.

كيف أستردّ مبلغ حجز ملغى؟

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

هل يمكن جعل زبون لم يحضر يؤدّي لاحقًا؟

ليس تلقائيًا: فالاستخلاص اللاحق يمرّ عبر رابط دفع جديد يؤدّيه الزبون بنفسه، إن قبل ذلك. لذا يجب أن يُؤدّى لحظة الحجز كل ما تريدون حمايته من عدم الحضور؛ ثم تحدّد سياستكم هل يُردّ جزء منه. وللمدفوعات المنتظمة، يُرسل الاشتراك إلى الزبون رابط دفع بالبريد الإلكتروني عند كل استحقاق.

متى أؤكد الحجز للزبون؟

عند استلام ويب هوك الأداء الناجح، لا عند إعادة التوجيه وحدها: فإعادة التوجيه تعني أن المشتري عاد، لا أن الأداء قد تمّ. وفي رابط يُؤدّى نقدًا، انتظروا أن يصبح الرابط «مدفوعًا» في بوابة التاجر. وبين الأمرين، اعرضوا «الأداء قيد التحقق» بدل تأكيد سابق لأوانه.

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

اختاروا طريقتكم — جلسة إن كان موقعكم يدير جدولًا زمنيًا، ورابط لاستعمال واحد في غير ذلك —، واكتبوا سياسة الإلغاء، ثم أجروا حجزًا كاملًا في وضع الاختبار: ابدؤوا في وضع الاختبار. وللتفاصيل الدقيقة للجلسات، اقرؤوا انتهاء جلسة الدفع والعودة منها؛ وللإلغاءات المؤدّاة، استرداد مبلغ لزبون.

بقلم فريق ChariPay.

اقرؤوا بعده

مستعدون للتجربة بأنفسكم؟

أنشئوا حسابكم واستخلصوا في وضع الاختبار اليوم: مجانًا، ودون موافقة تنتظرونها. سؤال؟ يجيب فريقنا التجّار والمطوّرين على حد سواء.

  • مجاني ودون التزام
  • وضع الاختبار منذ التسجيل
  • لا موافقة تنتظرونها