التحصيل على Shopify في المغرب
متجر Shopify وزبناء مغاربة: اقبلوا البطاقة مع 3-D Secure والنقد في الوكالة بالدرهم، عبر رابط الدفع ثم صفحة الدفع عبر API، خطوة بخطوة، بلا أي إضافة.
للتحصيل على Shopify في المغرب، لا توجد إضافة تُثبَّت: تنشئون في Shopify طريقة دفع يدوية، ويؤدي زبناؤكم ثمن الطلب على صفحة ChariPay — بالبطاقة مع 3-D Secure أو نقدًا في وكالة Damane Cash أو Chaabi Cash أو Tasshilat أو Barid Cash أو Chari —، بالدرهم، والمال متاح في اللحظة في حساب الأداء الخاص بكم. للانطلاق، يكفي رابط دفع ترسلونه من البوابة، دون سطر برمجة واحد؛ وحين يكبر الحجم، تتسلّم صفحة الدفع المستضافة عبر API المهمة، مع ويب هوك يعلّم الطلب مدفوعًا. يشرح هذا الدليل المراحل الثلاث، ثم النقد، والاسترداد، والمطابقة.
Shopify Payments في المغرب: الوضع الحالي
Shopify Payments، أي وحدة الاستخلاص المدمجة في Shopify، لا تستعملها إلا الشركات القائمة في البلدان المدرجة في لائحتها الرسمية، والمغرب ليس ضمنها (اللائحة قُرئت في 2 أكتوبر 2026). لا يستطيع متجر مغربي إذن تفعيلها. ويقبل Shopify مزوّدين آخرين داخل صفحة الدفع الخاصة به، لكن توثيقه الموجّه إلى المطوّرين يحصر إنشاء امتدادات الدفع هذه في الشركاء الذين يعتمدهم وفي بعض تجار Shopify Plus. لا توجد إضافة ChariPay لـShopify — لا تطبيق ولا امتداد لصفحة الدفع —، ولا نَعِد بها.
ما يبقى متاحًا لكل متجر هو طرق الدفع اليدوية. يتيح Shopify إنشاء طريقة مخصّصة بثلاثة حقول: اسم، وتفاصيل إضافية تظهر بجانب طريقة الدفع لحظة الاختيار، وتعليمات دفع تظهر على صفحة تأكيد الطلب بعد إتمامه. ويُسجَّل الطلب غير مدفوع، ثم تعلّمونه مدفوعًا من صفحته بمجرد وصول المال. على هذه الآلية، الموثّقة لدى Shopify، تقوم ChariPay: يطلب الزبون في متجركم، ويدفع على صفحة ChariPay، ويصير الطلب مدفوعًا — يدويًا في المستوى الأول، ثم تلقائيًا.
ما تضيفه صفحة ChariPay إلى متجركم: البطاقة — Visa وMastercard وMaroc Pay — مع 3-D Secure، والنقد في الوكالة للزبناء الذين لا يملكون بطاقة، ومبالغ بالدرهم، وحساب أداء باسم شركتكم تمسكه Chari Money، مؤسسة أداء مرخَّصة من بنك المغرب، حيث يصبح كل أداء ناجح متاحًا في اللحظة. وللصورة الكاملة — الطرق التي ينبغي عرضها، والكلفة الحقيقية للدفع عند الاستلام، والمواقع المطوَّرة حسب الطلب —، اقرؤوا دليلنا عن الدفع الإلكتروني للتجارة الإلكترونية في المغرب.
المرحلة الأولى — رابط الدفع في الطلب
لا يحتاج المستوى الأول إلى مطوّر ولا إلى أي ولوج تقني، ويمكنكم تجربته قبل فتحه لزبنائكم: ابدؤوا في وضع الاختبار. بعد النقر، ثلاثة حقول — الاسم، والبريد الإلكتروني المهني، والشركة —، ثم رابط تفعيل يصلكم بالبريد لاختيار كلمة المرور. في البوابة، سينشئ مطوّركم مفتاح الاختبار للمرحلة الثانية؛ أما أنتم، فأنشئوا رابط دفع تجريبيًا بمبلغ طلب حقيقي، وادفعوه ببطاقة الاختبار 4918 9141 0719 5005 (رمز CVV 123، ورمز 3-D Secure 555). كل ذلك مجاني، بلا حدّ زمني، ولا موافقة تنتظرونها: التحقق من شركتكم (KYB) لا يشترطه إلا الانتقال إلى الإنتاج.
بعد ذلك، يختصر المسار في خمس حركات:
- 1أنشئوا طريقة الدفع اليدوية في Shopify. اختاروا لها اسمًا يقول للزبون ما سيعيشه — «بطاقة بنكية أو نقدًا في الوكالة» مثلًا. وفي التفاصيل الإضافية، أعلنوا الخطوة الموالية: «بعد طلبكم، يصلكم رابط دفع آمن». وفي التعليمات، حدّدوا القناة: واتساب أو رسالة نصية أو بريد إلكتروني.
- 2استقبلوا الطلب غير مدفوع. هكذا يسجّل Shopify كل طلب بطريقة دفع يدوية: لا تجهّزوه بعد.
- 3أنشئوا رابط الدفع من بوابة ChariPay بالمبلغ المضبوط، مع رقم الطلب في الوصف («الطلب #1042»)، للاستعمال مرة واحدة، وبمدة صلاحية مناسبة: 24 ساعة، أو 7 أيام، أو 30 يومًا، أو تاريخ محدد.
- 4أرسلوه عبر واتساب أو البريد الإلكتروني أو على شكل رمز QR. يدفع الزبون على صفحة مستضافة تحمل اسمكم وشعاركم: بالبطاقة مع 3-D Secure، أو نقدًا في الوكالة.
- 5علّموا الطلب مدفوعًا في Shopify حين تُظهر البوابة الرابط مدفوعًا، ثم اشحنوا. يتيح Shopify هذه الخطوة من صفحة الطلب، لأداء تمّ خارج Shopify.
يكفي هذا المسار ما دمتم تعالجون الطلبات واحدًا تلو الآخر، ويصلح أيضًا خارج المتجر: بيع اتُّفق عليه على إنستغرام، أو عربون، أو طلب عبر الهاتف. تفصّل صفحة روابط الدفع الخيارات — رمز QR، والملصق PDF، والزبناء المسجَّلون —، ويساعدكم دليل رابط الدفع أم صفحة الدفع على تحديد لحظة الانتقال إلى المستوى التالي.
المرحلة الثانية — صفحة الدفع المستضافة عبر جلسة
حين تتوالى الطلبات، يصبح إنشاء كل رابط يدويًا عنق الزجاجة. يؤتمت المستوى الثاني هذه الحركة، دائمًا بلا إضافة: لا شيء يُثبَّت في Shopify، وخدمة صغيرة على خادمكم هي التي تربط المنصّتين.
- 1يُخطر Shopify خادمكم. في إعدادات الإشعارات لدى Shopify، أنشئوا ويب هوك على حدث إنشاء الطلب، بصيغة JSON، نحو عنوان
https://على خادمكم، وتحقّقوا من صحة هذه الإشعارات كما يشرح توثيق Shopify. - 2ينشئ خادمكم جلسة دفع لكل طلب تمّ بطريقة الدفع اليدوية الخاصة بكم.
- 3يتلقى الزبون `checkoutUrl` عبر البريد أو الرسائل النصية أو واتساب، بأدوات الإرسال المعتادة لديكم، ويدفع على صفحة الدفع المستضافة. لا تستخلص الجلسة إلا البطاقة مع 3-D Secure: وللإبقاء على النقد، تنشئ خدمتكم بدلًا منها رابط دفع يُستعمل مرة واحدة (انظروا أدناه).
إليكم إنشاء الجلسة في السندبوكس بمفتاح اختبار؛ ينتقل المفتاح في الترويسة X-CHARI-PAY-API-KEY ولا يغادر خادمكم أبدًا.
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: shopify-1042-session' \
-d '{
"amount": 249.00,
"orderId": "#1042",
"externalId": "shopify-1042",
"config": {
"customer": {
"email": "amine.bennani@example.com",
"firstName": "Amine",
"lastName": "Bennani",
"phone": "+212600000000"
},
"urls": {
"accept": "https://votre-boutique.ma/pages/paiement-recu",
"decline": "https://votre-boutique.ma/pages/paiement-refuse",
"notification": "https://api.votre-boutique.ma/webhooks/charipay"
}
},
"metadata": { "source": "shopify", "shopifyOrderId": "5512345678901" }
}'يعيد الرد، بالرمز 201، كلًّا من sessionId وsessionToken وverifyKey وexpiresAt وcheckoutUrl الذي ترسلونه إلى الزبون. يحمل orderId رقم الطلب الظاهر للزبون؛ ويعود في الويب هوك دون أي قيد تفرّد. أما externalId، المشتق من رقم الطلب، فيجعل النداء قابلًا للإعادة: إن وصلكم الطلب نفسه مرتين، تعيد API الجلسة الموجودة بالرمز 200 بدل إنشاء ثانية. الحقول الأربعة في config.customer إلزامية، وكل عنوان تصرّحون به يجب أن يبدأ بـhttps://، ويعود metadata — في حدود 4 كيلوبايت — كما هو في ويب هوك الأداء: فيه ينتقل معرّف طلب Shopify الذي ستحتاجه المرحلة الثالثة. الجلسة للاستعمال مرة واحدة، وتنتهي افتراضيًا بعد 72 ساعة من إنشائها، ويقصّر expiresAt هذه المدة. وعنوان القاعدة واحد في السندبوكس والإنتاج: المفتاح، chari_sk_test_… أو chari_sk_live_…، هو الذي يحدد البيئة. كل حقل موصوف في وحدة جلسات الدفع، وتُريكم صفحة صفحة الدفع المستضافة ما يراه زبونكم.
المرحلة الثالثة — الويب هوك الذي يحدّث الطلب
الزبون الذي دفع لا يعود دائمًا إلى متجركم: يغلق النافذة، أو ينقطع اتصاله، أو يُقفَل هاتفه. لذلك لا يصير الطلب مدفوعًا إلا عند وصول ويب هوك ChariPay، وليس أبدًا بمجرد العودة إلى عنوان accept. ترسل ChariPay الحدث payment.succeeded إلى عنوان الإشعار الخاص بالجلسة مع ترويستين: X-CHARI-SIGNATURE، وهو HMAC-SHA256 بالنظام الست عشري بحروف صغيرة يُحسب على السلسلة timestamp + "." + rawBody، وX-CHARI-TIMESTAMP، أي الطابع الزمني بالمللي ثانية. إليكم التحقق كما ينشره توثيق API:
const crypto = require('crypto');
function verify(rawBody, signature, timestamp, secret) {
// Fenêtre anti-rejeu de ±5 minutes — l'horodatage est en millisecondes.
if (Math.abs(Date.now() - Number(timestamp)) > 5 * 60 * 1000) return false;
const expected = crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${rawBody}`)
.digest('hex');
// Une signature malformée doit répondre false — jamais jeter (500 → retentatives).
if (!/^[0-9a-f]{64}$/i.test(signature)) return false;
// Comparaison en temps constant : jamais `===`.
return crypto.timingSafeEqual(Buffer.from(expected, 'hex'), Buffer.from(signature, 'hex'));
}ثم تنفّذ خدمتكم خمس حركات:
- 1تحقّقوا من التوقيع على البايتات الخام، قبل أي تحليل: JSON أُعيد تسلسله لا ينتج البايتات التي وُقِّعت.
- 2أزيلوا التكرار على أساس `Chari-Event-Id`، لا على
Chari-Webhook-Idالذي يعرّف التسليم لا الحدث. - 3اعثروا على طلب Shopify بفضل
metadataالذي يعود كما هو في الحدث: يعطيshopifyOrderIdمعرّف الطلب. - 4علّموه مدفوعًا عبر Admin API لدى Shopify: تسجّل العملية
orderMarkAsPaid، المستدعاة بالمعرّف الشامل للطلب (gid://shopify/Order/…)، معاملة بالمبلغ المتبقي، وتتطلب صلاحية الكتابة على الطلبات (write_orders). - 5أجيبوا بـ`2xx` بعد تثبيت التحديث وسجل إزالة التكرار معًا؛ وأنجزوا الباقي — بريد الزبون، والتجهيز — في الخلفية.
إن لم يُجب خادمكم، تعيد ChariPay المحاولة: فورًا، ثم بعد دقيقة، و5 دقائق، و30 دقيقة، وساعة، ثم كل 6 ساعات، حتى 16 محاولة على مدى 72 ساعة تقريبًا. ويعرض سجل التسليمات في البوابة كل محاولة، وردّ خادمكم، والمحتوى الدقيق للحدث، ويتيح إعادة الإرسال بنقرة واحدة. والأخطاء الخمسة التي تتكرر في كل إدماج تقريبًا مشروحة في إنجاح إدماج الويب هوك.
النقد في الوكالة للزبناء بلا بطاقة
جزء من زبنائكم لا يملك بطاقة، أو لا يريد استعمالها على الإنترنت. بدل إعادتهم إلى الدفع عند الاستلام، اعرضوا عليهم النقد عند الطلب. لا تستخلص جلسة الدفع إلا البطاقة: يمرّ الأداء نقدًا دائمًا عبر رابط دفع يُستعمل مرة واحدة — مرجع واحد لكل إيداع —، إما رابط المرحلة الأولى، الذي يختار الزبون النقد في صفحته، أو رابط تنشئه خدمتكم عبر POST /v1/payment-links مع paymentMethod: CASH، ويحمل metadata نفسه الذي تحمله الجلسة. يتلقى الزبون مرجعًا، ويودع المبلغ في وكالة شريكة. وبمجرد أن تؤكد الشبكة الإيداع، يصبح الرابط «مدفوعًا» ويصلكم الإشعار في بوابة التاجر، ويصبح المبلغ متاحًا في اللحظة في حساب الأداء الخاص بكم. ومن جهة الخادم تُقرأ حالة الرابط عبر GET /v1/payment-links/{reference}: فإذا صار «مدفوعًا»، علّمت خدمتكم طلب Shopify مدفوعًا بالعملية نفسها التي في المرحلة الثالثة.
ChariPay هي بوابة الدفع الوحيدة في المغرب التي تستخلص النقد أيضًا في الوكالات. ثلاث عادات لمتجر Shopify:
- لا مدة صلاحية لرابط النقد: أنشئوه دون
expiresAt، كما تفعل بوابة التاجر مع خيار «Paiement en agence» — يدفع الزبون حين يمرّ بالوكالة. وللطلب الذي لا ينبغي أن يبقى مفتوحًا، ألغوا الرابط (POST /v1/payment-links/{reference}/cancel): فالرابط الملغى لا يمكن أداؤه. - لا تجهّزوا الطلب إلا بعد تأكيد الأداء. بين الطلب والإيداع، يبقى الطلب غير مدفوع في Shopify، وهذا أمر طبيعي.
- راقبوا المبلغ المودَع. تستلم الوكالة ما يُسلَّم إليها: إن اختلف المبلغ عن قيمة الطلب، يجب أن يظهر الفرق عندكم قبل الشحن.
يُولَد المرجع عند أول فتح لصفحة الدفع: دعوا الصفحة تعرضه على الزبون بدل نسخه بأنفسكم. ويمكنكم الإبقاء على الدفع عند الاستلام خيارًا، لكن الطلب المسدَّد في الوكالة يُشحن مدفوعًا سلفًا، دون نقد يرافق الموزّع. والمسار الكامل، من جهة الزبون ومن جهة المحاسبة، في التحصيل النقدي بالمرجع.
الاسترداد والمطابقة
إرجاع منتج، أو نفاد مخزون، أو بادرة تجارية: ينطلق الاسترداد من بوابة ChariPay أو عبر POST /v1/refunds، بتحديد العملية الأصلية بـoperationId، مع سبب ومرجع استرداد خاص بكم refundReference — كليًا، أو جزئيًا عبر refundAmount. يقوم المرجع مقام مفتاح Idempotency: يجيب الإنشاء بـ202، وتعيد إعادةُ المرجع نفسه الاسترداد الموجود بـ200 دون خصم مرتين. يُخصم المبلغ من الرصيد المتاح في حساب الأداء الخاص بكم؛ وإن لم يغطّه الرصيد، تُوقَف العملية بدل خلق عجز صامت. ويؤكد الحدث refund.succeeded اكتمال العملية، لأن الاسترداد ليس فوريًا من جهة البنك، واسترجاع المال للزبون مجاني. الحقول ورموز الرد في وحدة الاسترداد عبر API؛ ومن جهة Shopify، دوّنوا الاسترداد على الطلب كي يروي السجلان القصة نفسها.
تقوم المطابقة على انضباط بسيط: المرجع نفسه في كل مكان. ينتقل رقم طلب Shopify في orderId، الذي يعيده إليكم حدث الأداء الخاص بالجلسة، وينتقل معرّف الطلب في metadata الخاص بكم، الذي يعود كما هو. ويسرد تصدير CSV، من البوابة أو عبر GET /v1/transactions/export.csv، كل حركة — أداء بالبطاقة، أو إيداع نقدي، أو استرداد، أو دفعة — مع مرجعها؛ وتميّز البوابة لكل عملية المبلغ المدفوع والرسوم والصافي. والطوابع الزمنية للتصدير بتوقيت UTC: حوّلوها إلى التوقيت المغربي قبل مقارنتها بطلباتكم. أما الدفعة نحو بنككم فعملية مستقلة، تلقائية كل ليلة متى ضُبط حساب التسوية، أو بتحويل فوري عند الطلب، مع مرجع يظهر في كشفكم البنكي.
أسئلة شائعة
هل توجد إضافة ChariPay لـShopify؟
لا، لا توجد، ولا نَعِد بها: لا تطبيق ولا امتداد لصفحة الدفع. يستخلص متجر Shopify مع ChariPay عبر طريقين حقيقيين: رابط الدفع، الذي يُنشأ في البوابة ويُرسَل إلى الزبون، ثم صفحة الدفع المستضافة عبر API، بجلسة لكل طلب وويب هوك موقَّع يعلّم الطلب مدفوعًا. ويعتمد الطريقان على طريقة دفع يدوية يتيح Shopify إنشاءها.
هل Shopify Payments متاحة في المغرب؟
لا. المغرب ليس ضمن اللائحة الرسمية للبلدان التي تُعرض فيها Shopify Payments، كما قُرئت في 2 أكتوبر 2026، فلا تستطيع شركة قائمة في المغرب تفعيلها. ويبقى متجركم على Shopify صالحًا تمامًا للعمل: تضيفون طريقة دفع يدوية، ويدفع الزبون على صفحة ChariPay، بالبطاقة مع 3-D Secure أو نقدًا في وكالة شريكة.
هل يمكنني التحصيل بالدرهم؟
نعم، وبالدرهم وحده: مبالغ API بالدرهم المغربي MAD، بالوحدات الكبرى، دون حقل للعملة — 249.00 تعني 249 درهمًا. إن كان متجركم يعرض أسعاره بالدرهم، ينتقل مجموع الطلب كما هو إلى الرابط أو الجلسة. والأرصدة والاستردادات والدفعات بالدرهم أيضًا، دون أي تحويل بين ما يدفعه الزبون وما يقرؤه محاسبكم.
كيف أتعامل مع سلة متروكة؟
في هذا التركيب، السلة المتروكة طلب على Shopify تمّ لكنه لم يُدفع أبدًا. حدّدوا مدة صلاحية لكل جلسة ولكل رابط يُؤدّى بالبطاقة — 72 ساعة افتراضيًا للجلسة، وexpiresAt لتقصيرها —، وذكّروا الزبون مرة واحدة برابط جديد، ثم ألغوا الطلب في Shopify؛ أما رابط النقد فلا مدة صلاحية له: ألغوه مع الطلب. والجلسة المنشأة مع notifyOnFailure: true تُعلمكم أيضًا بأداء بالبطاقة رُفض، عبر الحدث payment.failed.
متى يصبح المال متاحًا؟
في لحظة نجاح الأداء، بالبطاقة كما بالنقد: يُقيَّد المبلغ في حساب الأداء ChariPay الخاص بكم، الذي تمسكه Chari Money مع RIB باسم شركتكم، ويصبح قابلًا للاستعمال فورًا في تحويل أو أداء فاتورة أو استرداد. أما الدفعة نحو بنككم فعملية مستقلة: تلقائية كل ليلة متى ضُبط حساب التسوية، أو بتحويل فوري عند الطلب.
هل أحتاج إلى مطوّر للانطلاق؟
لا. تُضبط طريقة الدفع اليدوية في Shopify، ويُنشأ رابط الدفع في بوابة ChariPay ويُرسَل برسالة: لا برمجة إطلاقًا. يصبح المطوّر مفيدًا حين تريدون الأتمتة، أي إنشاء جلسة لكل طلب وتعليم الطلب مدفوعًا عند وصول الويب هوك. كثير من المتاجر تبدأ دونه، ثم تستعين به حين تتوالى الطلبات.
كم يكلّف ذلك؟
السندبوكس مجانية، بلا حدّ زمني ودون التزام. وعند الانتقال إلى الإنتاج، تكلّف رسوم التفعيل 6 000 درهم شاملة الضريبة، تُؤدّى مرة واحدة؛ أما العمولة عن كل أداء ناجح، بنسبة مئوية، والضمان فيُحدَّدان بعد دراسة ملفكم. واسترجاع المال للزبون مجاني. وتسرد صفحة الأسعار أيضًا ما هو مشمول دون مقابل إضافي، ومنه حساب الأداء مع RIB والنقد في الوكالة.
الخطوة التالية
ابدؤوا في وضع الاختبار: أنشئوا حسابكم، وادفعوا ببطاقة الاختبار رابطًا بمبلغ طلب حقيقي، ثم افتحوا رابطًا ثانيًا بالنقد لتروا المسار الذي يمرّ به الزبون. وحين يرى مطوّركم الحدث payment.succeeded يصل إلى خادمه، تصبح المرحلة الثالثة في المتناول. وللصورة الكاملة عن الطرق والكلفة، اقرؤوا دليل الدفع الإلكتروني للتجارة الإلكترونية في المغرب؛ وإن كان متجركم يعمل على WordPress، فاطّلعوا على التحصيل على WooCommerce في المغرب.
المصادر
- Shopify Help Center — Supported countries and regions for Shopify Payments — قُرئ في 2026-10-02
- Shopify Help Center — Manual payment methods — قُرئ في 2026-10-02
- Shopify Help Center — Managing orders with deferred payments — قُرئ في 2026-10-02
- Shopify Help Center — Webhooks — قُرئ في 2026-10-02
- Shopify Dev — Payments apps — قُرئ في 2026-10-02
- Shopify Dev — orderMarkAsPaid — قُرئ في 2026-10-02
بقلم فريق ChariPay.