Skip to main content

مقدمة

GoHighLevel‏ (GHL) عبارة عن منصة CRM وتسويق متكاملة تشمل مسارات التحويل، والمواقع الإلكترونية، والبريد الإلكتروني/SMS، والأتمتة (“Workflows”). لا يدرج GHL‏ Dodo Payments كمعالج دفع مضمّن، لذلك يمكنك ربط الخدمتين بإحدى ثلاث طرق، بناءً على مدى رغبتك في جعل تجربة الدفع مضمّنة ومقدار البرمجة الذي يمكنك تنفيذه. في كل طريقة، تتم معالجة تنفيذ الطلبات بالطريقة نفسها. يرسل Dodo‏ أحداث webhook إلى Inbound Webhook Workflow في GHL، الذي يضيف وسمًا إلى جهة الاتصال، ويمنحها الوصول، ويرسل رسائل التأكيد.

اختر طريقتك

هل هذه أول مرة تستخدم فيها هذا التكامل؟ ابدأ بـ الطريقة A (روابط الدفع). فهي لا تتطلب برمجة، وتعمل مع كل مستخدمي GHL، ولا تستغرق سوى دقائق. تحتاج الطريقتان B وC إلى backend لإنشاء جلسات الدفع، وهما مناسبتان للفرق التي لديها خبرة في البرمجة.

المتطلبات الأساسية

  • حساب Dodo Payments يحتوي على منتج واحد على الأقل تم إنشاؤه.
  • حساب GoHighLevel يحتوي على مسار تحويل أو موقع إلكتروني أو workflow.
  • الوصول إلى Settings → WebhooksSettings → Developer للحصول على API key) في لوحة تحكم Dodo.
  • للطريقتين B وC: backend أو endpoint serverless صغير لإنشاء جلسات الدفع.
يتطلب GHL وجود نطاق متصل من أجل نشر مسار التحويل. أثناء الإنشاء، استخدم Preview الخاص بمسار التحويل للاختبار. تجدر الإشارة إلى أن JavaScript المخصص (الطريقتان B وC) يعمل عمومًا على الصفحة المنشورة على نطاق حقيقي فقط، وليس في Preview.

تنفيذ الطلبات باستخدام webhooks (جميع الطرق)

هذه هي طبقة الأتمتة. أعد إعدادها مرة واحدة، وستعمل بغض النظر عن طريقة الدفع التي تختارها.
1

Create the workflow

في الحساب الفرعي في GHL، افتح Automation من القائمة اليمنى (سينقلك ذلك إلى علامة تبويب Workflows). انقر على Create workflow، ثم اختر Start from Scratch.
2

Add the Inbound Webhook trigger

في المنشئ، انقر على Add new trigger. في لوحة Add trigger، ابحث عن webhook واختر Inbound webhook (مدرج ضمن Triggers → Events). انسخ Webhook URL الذي يتم إنشاؤه.
3

Register the webhook in Dodo

في لوحة تحكم Dodo، انتقل إلى Settings → Webhooks، وأضف endpoint جديدًا، ثم الصق عنوان GHL Inbound Webhook URL. أجرِ عملية شراء تجريبية حتى يلتقط GHL عينة من payload، وتتمكن من تعيين الحقول (بريد العميل الإلكتروني، والمنتج، والمبلغ، والحالة).
4

Add fulfillment actions

بالعودة إلى workflow في GHL، أضف إجراءات استنادًا إلى الحدث، مثل العثور على جهة اتصال أو إنشاؤها باستخدام البريد الإلكتروني، وإضافة وسم، ومنح الوصول إلى الدورة/العضوية، وإرسال رسالة تأكيد بالبريد الإلكتروني. ثم انقر على Publish في workflow.
تتم معالجة المدفوعات على Dodo، ولذلك لن تظهر في علامة تبويب Payments في GHL. سوِّها في GHL باستخدام workflow الخاص بـ webhook أعلاه، وتعامل مع webhook باعتباره مصدر الحقيقة لمنح الوصول، وليس مع إعادة توجيه المتصفح، إذ يمكن للعميل إغلاق علامة التبويب قبل العودة.

الطريقة A: روابط الدفع (بدون برمجة)

أضف رابط دفع من Dodo إلى أي زر في GHL، أو CTA في مسار التحويل، أو زر في صفحة الطلب، أو بريد إلكتروني، أو SMS.
1

Create a product and copy its payment link

في لوحة تحكم Dodo، انتقل إلى Products → Add Product، وحدد name وprice، واختر one-time أو subscription، ثم انقر على Save. افتح المنتج وانسخ Payment Link (التنسيق: https://checkout.dodopayments.com/buy/{product_id}).
2

Add the link to your GHL button

حرّر صفحة مسار التحويل أو الموقع الإلكتروني، وحدد Buy / Checkout button، واضبط الإجراء على Open URL / Website، ثم الصق رابط الدفع من Dodo.
3

Set a success page (optional)

اضبط return URL الخاص بالمنتج في Dodo على صفحة شكر في GHL حتى يعود العملاء إلى مسار التحويل بعد الدفع.
يمكنك تعبئة تفاصيل العميل مسبقًا وقفلها، أو إضافة التتبع، باستخدام معلمات query لرابط الدفع. ويفيد ذلك في تمرير معرّف مسار التحويل أو العرض كـ metadata يمكنك قراءته لاحقًا من webhook.

الطريقة B: الدفع المنبثق (تعليمات برمجية مخصصة)

يفتح Checkout من Dodo كـ نافذة منبثقة على صفحة GHL باستخدام Checkout SDK عبر CDN. ويتطلب backend لإنشاء جلسة دفع وإرجاع checkoutUrl.
1

Create a backend endpoint that calls the Checkout Sessions API

هذه الخطوة إلزامية. يحتاج SDK إلى checkoutUrl صالح، ويتطلب إنشاء واحد secret API key الخاص بك. يستضيف GHL صفحات ثابتة فقط، ولا يمكنه تنفيذ استدعاء الخادم هذا نيابةً عنك، ويجب ألا تستدعي Create Checkout Session API مباشرةً من المتصفح، لأن ذلك سيكشف secret key في مصدر الصفحة. لذلك لا يمكن أن يعمل الدفع المنبثق أو المضمّن باستخدام GHL وحده: أنت بحاجة إلى backend تتحكم فيه، ينشئ الجلسة ويعيد URL فقط.يعمل أي backend صغير: دالة serverless (مثل Cloudflare Workers وVercel Functions وAWS Lambda وSupabase Edge Functions وما شابهها)، أو endpoint على خادم تقوم بتشغيله بالفعل. المنطق نفسه في جميع الحالات: استلام الطلب، واستدعاء API الخاص بـ Dodo باستخدام secret key، وإرجاع checkout_url.مثال على منطق المعالج (عدّله بما يتناسب مع النظام الأساسي الذي تختاره):
خزّن API key الخاص بـ Dodo كسر في أي نظام أساسي تنشر عليه (لا تضعه أبدًا في code)، واسمح بالطلبات الواردة من نطاق GHL (CORS)، ووجّه endpoint ضمن نطاق تتحكم فيه، مثل https://api.example.com/create-checkout. انتقل إلى https://live.dodopayments.com/checkouts عند الانتقال إلى الوضع المباشر.
2

Add a Custom Code element in the GHL page builder

افتح خطوة مسار التحويل أو صفحة الموقع الإلكتروني في منشئ صفحات GHL، ثم:
  1. انقر على أيقونة + في أعلى يسار المنشئ لفتح Quick Add.
  2. حدد Elements من قائمة الفئات اليمنى.
  3. ابحث عن Custom Code (يظهر أيضًا باسم HTML) واسحبه إلى الصفحة.
  4. الصق code أدناه في محرر code الخاص بالعنصر، ثم احفظه.
3

Publish and test on your domain

يعمل Custom JS على الصفحة المنشورة (ذات النطاق المتصل)، وليس دائمًا في Preview. انشر الصفحة، ثم انقر على Pay Now للتأكد من فتح النافذة المنبثقة.

الطريقة C: الدفع المضمّن

تضمّن نموذج الدفع داخل صفحة GHL (من دون إعادة توجيه أو نافذة منبثقة) باستخدام SDK نفسه مع حاوية mount. وكما في الطريقة B، يتطلب ذلك backend لإنشاء الجلسة.
1

Create a backend endpoint that calls the Checkout Sessions API

المتطلب نفسه الخاص بالدفع المنبثق، وهو إلزامي بالقدر نفسه: يتطلب إنشاء الجلسة secret API key الخاص بك، لذلك يجب أن يحدث ذلك على الخادم. لا يستطيع GHL تنفيذ ذلك بمفرده. أعد استخدام endpoint نفسه الموضح في قسم الدفع المنبثق أعلاه (أي دالة serverless صغيرة أو خادم تتحكم فيه) الذي يستدعي Create Checkout Session API ويعيد { checkoutUrl }.
2

Add a container and SDK via Custom Code

في منشئ صفحات GHL:
  1. انقر على أيقونة + في أعلى يسار المنشئ لفتح Quick Add.
  2. حدد Elements من قائمة الفئات اليمنى.
  3. ابحث عن Custom Code (يظهر أيضًا باسم HTML) واسحبه إلى الصفحة حيث تريد ظهور نموذج الدفع.
  4. الصق code أدناه في محرر code الخاص بالعنصر، ثم احفظه.
3

Verify your domain for wallets (Apple Pay)

لاستخدام Apple Pay مع الدفع المضمّن، تحقق من نطاقك. استضف ملف association وسجّل النطاق في لوحة التحكم.
الدفع المضمّن هو الخيار الأكثر تعقيدًا في GHL. فهو يتطلب code مخصصًا، وbackend، وصفحة منشورة على نطاق حقيقي، و(بالنسبة إلى Apple Pay) التحقق من النطاق. إذا لم تكن بحاجة إلى نموذج مضمّن بالكامل، ففضّل الطريقة A أو B.

الأحداث التي يجب معالجتها

يتضمن كل webhook البريد الإلكتروني للعميل. استخدم إجراء GHL المتمثل في العثور على جهة اتصال أو إنشائها باستخدام البريد الإلكتروني لربط الدفعة بجهة الاتصال الصحيحة. للحصول على القائمة الكاملة، راجع دليل أحداث Webhook.

الاختبار والانتقال إلى الوضع المباشر

1

Test in test mode

أبقِ Dodo في Test Mode، واستخدم بطاقة الاختبار 4242 4242 4242 4242 (أي تاريخ انتهاء مستقبلي وأي CVC)، وأكمل عملية شراء، ثم تأكد من تشغيل workflow في GHL وتطبيق الوسم أو منح الوصول.
2

Go live

بدّل Dodo إلى Live Mode وحدّث endpoint الخاص بـ webhook في الوضع المباشر. تعتمد التغييرات الأخرى على طريقتك:
  • روابط الدفع (A): استبدل الرابط برابط الدفع المباشر الخاص بالمنتج.
  • الدفع المنبثق (B): وجّه backend إلى https://live.dodopayments.com/checkouts باستخدام API key المباشر الخاص بك، واضبط mode في SDK على "live" ضمن استدعاء Initialize.
  • الدفع المضمّن (C): اتبع الخطوات نفسها الخاصة بالدفع المنبثق، لأنه يستخدم endpoint وتهيئة SDK نفسيهما.
ثم أجرِ عملية شراء حقيقية واحدة من البداية إلى النهاية للتأكد.

نصائح

تعامل مع webhook باعتباره مصدر الحقيقة لمنح الوصول. اتخذ الإجراء بناءً على payment.succeeded / subscription.active، وليس بناءً على إعادة توجيه المتصفح.
تحقق من صحة webhook باستخدام ترويسة webhook-signature (Standard Webhooks)، حتى لا تؤدي أحداث Dodo الأصلية فقط إلى تشغيل تنفيذ الطلبات في GHL.

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

تحقق من أن endpoint الخاص بـ webhook في Dodo يشير إلى عنوان GHL Inbound Webhook URL الصحيح، وأن workflow منشور، وأن trigger التقط عينة من payload حتى يتوفر تعيين الحقول.
يعمل Custom JS عادةً على الصفحة المنشورة (ذات النطاق الحقيقي) فقط، وليس في Preview. تأكد من نشر الصفحة، ومن تحميل SDK‏ <script>، ومن أن checkoutUrl هو URL جلسة صالحًا من backend الخاص بك.
تأكد من أن workflow يستخدم إجراء العثور على جهة اتصال أو إنشائها باستخدام البريد الإلكتروني وأن حقل البريد الإلكتروني معيّن من payload الخاص بـ webhook.
هذا متوقع. تتم معالجة المدفوعات على Dodo، لذا سوِّها في GHL باستخدام workflow الخاص بـ webhook.
آخر تعديل في ٦ أغسطس ٢٠٢٦