Skip to main content
تضمّن صفحة الدفع المضمّنة نموذج دفع آمنًا مباشرةً في تخطيط صفحتك. بخلاف الدفع عبر النافذة المنبثقة، الذي يُفتح كنافذة حوار، تصبح صفحة الدفع المضمّنة جزءًا من صفحتك. يمكنك التحكم في التخطيط وعرض ملخص الطلب الخاص بك إلى جانب نموذج الدفع.
نموذج دفع مضمّن داخل صفحة منتج مع ملخص الطلب

كيفية عمله

تعرض صفحة الدفع المضمّنة إطار Dodo Payments آمنًا داخل حاوية في صفحتك. يتولى الإطار جمع معلومات العميل وتفاصيل الدفع. بينما تعرض صفحتك العناصر والإجماليات والمعلومات الأخرى. تتيح حزمة SDK لصفحتك وإطار الدفع التواصل مع بعضهما. عند اكتمال الدفع، تنشئ Dodo Payments عملية الدفع، أو الاشتراك للمنتج القائم على الاشتراك، وترسل webhook حتى تتمكن من تفعيل الوصول.
يتولى إطار الدفع المضمّن معالجة جميع معلومات الدفع الحساسة بأمان، بما يضمن الامتثال لمعيار PCI دون الحاجة إلى شهادة إضافية من جانبك.

ما الذي يجعل صفحة الدفع المضمّنة جيدة؟

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

Example inline checkout layout showing required elements

  1. معلومات التكرار: إذا كان الدفع متكررًا، اعرض عدد مرات التكرار والمبلغ الإجمالي المستحق عند التجديد. وإذا كان هناك إصدار تجريبي، فاعرض مدته.
  2. أوصاف العناصر: وصف لما يتم شراؤه.
  3. إجماليات المعاملة: المجموع الفرعي، وإجمالي الضريبة، والمجموع الكلي، بما في ذلك العملة.
  4. تذييل Dodo Payments: إطار الدفع المضمّن الكامل، بما في ذلك التذييل الذي يحتوي على معلومات Dodo Payments وشروط البيع وسياسة الخصوصية.
  5. سياسة الاسترداد: رابط إلى سياسة الاسترداد الخاصة بك، إذا كانت تختلف عن سياسة الاسترداد القياسية لدى Dodo Payments.
اعرض دائمًا إطار الدفع المضمّن الكامل، بما في ذلك التذييل. تؤدي إزالة المعلومات القانونية أو إخفاؤها إلى مخالفة متطلبات الامتثال.

رحلة العميل

يعتمد تدفق الدفع على إعدادات جلسة الدفع الخاصة بك. وبحسب طريقة إعداد الجلسة، قد يرى العملاء جميع المعلومات في صفحة واحدة أو عبر عدة خطوات.
1

Customer opens checkout

تفتح صفحة الدفع المضمّنة عبر تمرير عنوان URL للدفع. استخدم أحداث SDK، مثل checkout.breakdown، لعرض المعلومات الموجودة على الصفحة وتحديثها.صفحة الدفع الأولية مع قائمة العناصر ونموذج الدفع
2

Customer enters their details

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

Customer selects payment method

بعد إدخال تفاصيلهم، تظهر للعملاء طرق الدفع المتاحة ونموذج الدفع. قد تتضمن الخيارات بطاقة ائتمان أو خصم، وPayPal، وApple Pay، وGoogle Pay، وطرق دفع محلية أخرى بناءً على موقعهم.اعرض طرق الدفع المحفوظة، إن توفرت، لتسريع عملية الدفع.طرق الدفع المتاحة ونموذج تفاصيل البطاقة
4

Checkout completed

توجّه Dodo Payments كل عملية دفع إلى أفضل جهة تحصيل لهذه المعاملة للحصول على أعلى فرصة نجاح ممكنة. ويدخل العملاء في سير عمل للنجاح يمكنك إنشاؤه.شاشة نجاح مع علامة تأكيد
5

Dodo Payments creates the payment or subscription

تنشئ Dodo Payments عملية الدفع، أو الاشتراك للمنتج القائم على الاشتراك، وترسل webhook حتى تتمكن من تفعيل الوصول. وتُحفظ طريقة الدفع التي استخدمها العميل للتجديدات أو تغييرات الاشتراك.تم إنشاء الاشتراك مع إشعار webhook

البدء السريع

ثبّت حزمة SDK، وهيّئها للوضع المضمّن، وافتح صفحة الدفع داخل عنصر حاوية:
تأكد من وجود عنصر حاوية يحمل id المطابق في صفحتك: <div id="dodo-inline-checkout"></div>.

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

1

Install the SDK

ثبّت الحزمة باستخدام npm أو yarn أو pnpm:
2

Initialize the SDK for Inline Display

هيّئ حزمة SDK وحدد displayType: 'inline'. استمع إلى حدث checkout.breakdown لتحديث واجهة المستخدم بالحسابات الفورية للضرائب والإجمالي:
3

Create a Container Element

أضف عنصرًا إلى HTML حيث سيتم حقن إطار الدفع:
4

Open the Checkout

استدعِ DodoPayments.Checkout.open() باستخدام checkoutUrl وelementId الخاصين بالحاوية:
5

Test Your Integration

  1. ابدأ خادم التطوير:
  1. اختبر تدفق الدفع:
    • أدخل بريدك الإلكتروني وتفاصيل عنوانك في الإطار المضمّن
    • تحقّق من تحديث ملخص الطلب المخصص في الوقت الفعلي
    • اختبر تدفق الدفع باستخدام بيانات الاعتماد التجريبية
    • تأكد من عمل عمليات إعادة التوجيه بشكل صحيح
يجب أن ترى أحداث checkout.breakdown مسجلة في وحدة تحكم المتصفح إذا أضفت سجلًا إلى وحدة التحكم في استدعاء onEvent.
6

Go Live

عندما تكون مستعدًا للإنتاج:
  1. غيّر الوضع إلى 'live':
  1. حدّث عناوين URL للدفع لاستخدام جلسات الدفع المباشرة من الواجهة الخلفية
  2. اختبر التدفق الكامل في بيئة الإنتاج

مثال React كامل

يوضح هذا المثال كيفية تنفيذ ملخص طلب مخصص إلى جانب صفحة الدفع المضمّنة، مع إبقائهما متزامنين باستخدام حدث checkout.breakdown:

مرجع API

التهيئة

استدعِ Initialize مرة واحدة لإعداد حزمة SDK:

فتح صفحة الدفع

افتح إطار الدفع داخل حاوية:

إغلاق صفحة الدفع

أزل إطار الدفع برمجيًا ونظّف مستمعي الأحداث:

التحقق من الحالة

تحقّق مما إذا كان إطار الدفع محقونًا حاليًا:

الأحداث

توفر حزمة SDK أحداثًا فورية من خلال استدعاء onEvent. وبالنسبة إلى الدفع المضمّن، يُعد checkout.breakdown مفيدًا بشكل خاص لمزامنة واجهة المستخدم:

بيانات تفصيل الدفع

يوفر حدث checkout.breakdown معلومات الأسعار والضرائب:
يُطلَق الحدث عند تحميل إطار الدفع، ومرة أخرى كلما أُعيد حساب السعر، مثلًا عندما يختار العميل بلدًا أو يُدخل رمزًا بريديًا يغيّر الضريبة. تفاصيل الحقول: نصائح التكامل:
  1. تنسيق العملة: الأسعار أعداد صحيحة بوحدة العملة الأصغر، مثل السنتات في USD. بالنسبة إلى العملات ذات المنزلتين العشريتين، اقسم على 100 قبل التنسيق باستخدام Intl.NumberFormat. أما العملات التي لا تحتوي على منازل عشرية، مثل JPY، فلا تقسمها.
  2. معالجة الحالات الأولية: عند تحميل الدفع لأول مرة، قد تكون tax وdiscount بقيمة 0 أو null إلى أن يقدم المستخدم معلومات الفوترة أو يطبق رمزًا. تعامل مع هذه الحالات بسلاسة، مثل عرض شرطة — أو إخفاء الصف.
  3. «الإجمالي النهائي» مقابل «الإجمالي»: رغم أن total يوفر حساب السعر القياسي، فإن finalTotal هو مصدر الحقيقة للمعاملة. وإذا كان finalTotal موجودًا، فهو يعكس المبلغ الذي سيُحصّل بالضبط من بطاقة العميل.
  4. الملاحظات الفورية: استخدم الحقل tax لإظهار أن الضرائب تُحسب في الوقت الفعلي. يمنح ذلك صفحة الدفع إحساسًا تفاعليًا ويقلل الاحتكاك أثناء إدخال العنوان.

التنفيذ عبر CDN

للتكامل السريع دون خطوة build، حمّل حزمة SDK من CDN:

تحديث طريقة الدفع

تدعم صفحة الدفع المضمّنة تحديث طرق الدفع للاشتراكات. عندما يحتاج العميل إلى تحديث طريقة الدفع لاشتراك نشط أو إعادة تفعيل اشتراك معلّق، يمكنك عرض تدفق التحديث مباشرةً ضمن تخطيط صفحتك.

كيفية عمله

  1. استدعِ Update Payment Method API للحصول على payment_link:
  1. مرّر payment_link المُعاد كقيمة checkoutUrl لفتح صفحة الدفع المضمّنة:
يعرض الإطار المضمّن نموذج جمع طريقة الدفع فقط. ويمكن للعملاء إدخال تفاصيل بطاقة جديدة أو اختيار طريقة دفع محفوظة دون مغادرة صفحتك.

للاشتراكات المعلّقة

عند تحديث طريقة الدفع لاشتراك حالته on_hold، تنشئ Dodo Payments تلقائيًا عملية تحصيل لأي مستحقات متبقية. راقب webhooks‏ payment.succeeded وsubscription.active لتأكيد إعادة التفعيل.
يمكنك أيضًا استخدام طريقة دفع محفوظة موجودة بدلًا من جمع تفاصيل جديدة، وذلك بتمرير type: 'existing' مع payment_method_id إلى Update Payment Method API.

معالجة الأخطاء

نفّذ دائمًا معالجة الأخطاء في استدعاء onEvent:
احرص دائمًا على معالجة حدث checkout.error لتوفير تجربة مستخدم جيدة عند حدوث الأخطاء.

أفضل الممارسات

  1. التصميم المتجاوب: تأكد من أن عنصر الحاوية يتمتع بعرض وارتفاع كافيين. وعادةً ما يتمدد iframe لملء الحاوية.
  2. المزامنة: استخدم حدث checkout.breakdown للحفاظ على تزامن ملخص الطلب المخصص أو جداول الأسعار مع ما يراه المستخدم في إطار الدفع.
  3. حالات الهيكل: اعرض مؤشر تحميل في الحاوية إلى أن يُطلَق حدث checkout.opened.
  4. التنظيف: استدعِ DodoPayments.Checkout.close() عند إلغاء تحميل المكوّن لتنظيف iframe ومستمعي الأحداث.
لتنفيذ الوضع الداكن، استخدم #0d0d0d كلون خلفية لتحقيق أفضل تكامل مرئي مع إطار الدفع المضمّن.

التحقق من حالة الدفع

لا تعتمد فقط على أحداث الدفع المضمّن لتحديد نجاح الدفع أو فشله. نفّذ دائمًا عملية تحقق من جانب الخادم باستخدام webhooks و/أو polling.

لماذا يُعد التحقق من جانب الخادم ضروريًا؟

توفر أحداث الدفع المضمّن ملاحظات فورية، لكنها لا ينبغي أن تكون مصدرك الوحيد للحقيقة بشأن حالة الدفع. فقد تتسبب مشكلات الشبكة أو تعطل المتصفح أو إغلاق المستخدم للصفحة في فقدان الأحداث. لضمان التحقق الموثوق من الدفع:
  1. استمع إلى أحداث webhook - ترسل Dodo Payments webhooks عند تغيّر حالة الدفع
  2. نفّذ آلية polling - يجب أن تستعلم الواجهة الأمامية من خادمك عن تحديثات الحالة
  3. اجمع بين النهجين - استخدم webhooks كمصدر أساسي وpolling كحل بديل

البنية المقترحة

خطوات التنفيذ

1. الاستماع إلى أحداث الدفع - عندما ينقر المستخدم على الدفع، ابدأ الاستعداد للتحقق من الحالة:
2. الاستعلام من خادمك - أنشئ نقطة نهاية تتحقق من حالة الدفع في قاعدة بياناتك، والتي تحدّثها webhooks:
3. معالجة webhooks من جانب الخادم - حدّث قاعدة بياناتك عندما ترسل Dodo webhooks من النوع payment.succeeded أو payment.failed. راجع وثائق Webhooks للتفاصيل.

استكشاف الأخطاء وإصلاحها

  • تحقّق من أن elementId يطابق id لعنصر div موجود فعليًا في DOM
  • تأكد من تمرير displayType: 'inline' إلى Initialize
  • تحقّق من صلاحية checkoutUrl
  • تأكد من الاستماع إلى حدث checkout.breakdown
  • لا تُحسب الضرائب إلا بعد إدخال المستخدم بلدًا ورمزًا بريديًا صالحين في إطار الدفع

المحافظ الرقمية

للحصول على معلومات تفصيلية حول إعداد Apple Pay وGoogle Pay والمحافظ الرقمية الأخرى، راجع صفحة المحافظ الرقمية.

الإعداد السريع لـ Apple Pay

لا يلزم التحقق من النطاق إلا للدفع المضمّن. ولا يلزم للدفع المستضاف.
لا يتوفر Apple Pay للدفع عبر النافذة المنبثقة.
يتم التحقق من Apple Pay لكل نطاق من لوحة التحكم.
1

Open Wallet domains

انتقل إلى Settings → Payment Methods، ثم انقر على Manage domains في صف Apple Pay.
زر Manage domains في صف Apple Pay ضمن إعدادات Payment Methods

Open Wallet domains from the Apple Pay row

2

Download the domain association file

من لوحة Wallet domains، نزّل ملف association.
لوحة Wallet domains مع زر Download file

Download the Apple Pay domain association file

3

Register your domain

انقر على Register domain وأدخل النطاق الذي تضمّن فيه صفحة الدفع المضمّنة، مثل shop.example.com، ثم انقر على Continue.
نموذج Register a domain مع إدخال نطاق

Register the domain where you embed inline checkout

4

Host the file on your domain

استضفه في:
يجب تقديمه عبر HTTPS، وأن يكون قابلًا للوصول دون عمليات إعادة توجيه، وأن يُقدّم باستخدام Content-Type: application/octet-stream أو text/plain.
5

Verify the domain

انقر على Verify domain. تؤكد Dodo Payments أن الملف متاح وترسل نطاقك إلى Apple.
شاشة Verify your domain مع مسار استضافة ملف association وزر Verify domain

Verify the hosted association file

6

Confirm it's active

عندما تظهر الحالة Active، يكون Apple Pay مفعّلًا لهذا النطاق. استخدم مفتاح Enabled لتفعيله أو تعطيله لكل نطاق.
قائمة Wallet domains التي تعرض نطاقات بحالة Apple Pay‏ Active ومفاتيح Enabled

Verified domains show an Active status

7

Test the integration

  1. افتح صفحة الدفع على جهاز Apple
  2. تحقّق من ظهور زر Apple Pay
  3. أجرِ معاملة تجريبية

دعم المتصفحات

تدعم حزمة Checkout SDK من Dodo Payments ما يلي:
  • Chrome (أحدث إصدار)
  • Firefox (أحدث إصدار)
  • Safari (أحدث إصدار)
  • Edge (أحدث إصدار)
  • IE11+

الدفع المضمّن مقابل الدفع عبر النافذة المنبثقة

اختر نوع الدفع المناسب لحالة الاستخدام الخاصة بك:
استخدم الدفع المضمّن عندما تريد أقصى قدر من التحكم في تجربة الدفع واتساق العلامة التجارية. واستخدم الدفع عبر النافذة المنبثقة لتكامل أسرع مع إجراء تغييرات محدودة على صفحاتك الحالية.

الموارد ذات الصلة

Overlay Checkout

استخدم الدفع عبر النافذة المنبثقة لتكامل سريع قائم على النوافذ الحوارية.

Checkout Sessions API

أنشئ جلسات دفع لتشغيل تجارب الدفع الخاصة بك.

Webhooks

عالج أحداث الدفع من جانب الخادم باستخدام webhooks.

Integration Guide

دليل كامل لتكامل Dodo Payments.
لمزيد من المساعدة، تفضل بزيارة مجتمع Discord أو تواصل مع فريق دعم المطورين لدينا.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦