نظرة عامة
القالب الأساسي الأدنى لـ Astro هو تطبيق ابتدائي متصل بـ Dodo Payments مسبقًا. أضف مفاتيح API ومعرّفات المنتجات، وستحصل على صفحة أسعار تفتح Checkout، ونقطة نهاية webhook لأحداث الدفع، ورابط إلى Customer Portal.يستخدم هذا القالب Astro 5 مع TypeScript وTailwind CSS 4 ومحوّل
@dodopayments/astro. لإضافة مسارات API نفسها إلى تطبيق موجود، راجع محوّل Astro.الميزات
يتضمن القالب ما يلي:- إعداد سريع: انتقل من الاستنساخ إلى تشغيل صفحة أسعار في نحو خمس دقائق.
- Checkout: تدفق Checkout مُعد مسبقًا ومبني على
@dodopayments/astro. - صفحة الأسعار: صفحة أسعار ذات سمة داكنة ومنسّقة باستخدام Tailwind CSS.
- معالج webhook: نقطة نهاية تتحقق من توقيع كل webhook وتشغّل التعليمات البرمجية الخاصة بك للحدث.
- Customer Portal: رابط في الترويسة يفتح Customer Portal، حيث يدير العملاء اشتراكاتهم.
- TypeScript: تعريفات ومعالجات منتجات مكتوبة الأنواع.
- Checkout معبأ مسبقًا: يمرر اسم العميل وبريده الإلكتروني إلى Checkout، حتى لا يضطر العميل إلى إدخالهما مرة أخرى.
المتطلبات الأساسية
قبل البدء، تحتاج إلى ما يلي:- إصدار LTS من Node.js، وهو مطلوب من Astro 5.
- حساب Dodo Payments، لإنشاء مفتاح API وسر توقيع webhook في لوحة التحكم.
البدء السريع
1
Clone the Repository
2
Install Dependencies
3
Get API Credentials
سجّل في Dodo Payments، ثم احصل على بيانات الاعتماد من لوحة التحكم:
- مفتاح API: أنشئ مفتاحًا ضمن لوحة التحكم ← المطوّر ← مفاتيح API.
- مفتاح webhook: أضف نقطة نهاية ضمن لوحة التحكم ← المطوّر ← Webhooks، ثم انسخ سر التوقيع الخاص بها. يجب أن يكون عنوان URL لنقطة النهاية عامًا وأن يستخدم HTTPS. لتلقي الأحداث على جهازك، راجع أحداث webhook.
4
Configure Environment Variables
انسخ ملف المثال لإنشاء ملف عيّن القيم إلى بيانات اعتماد Dodo Payments الخاصة بك:يعيّن
.env في الدليل الجذر:.env.example القيمة DODO_PAYMENTS_RETURN_URL إلى المنفذ 3000. غيّرها إلى 4321، وهو المنفذ الذي يستخدمه خادم تطوير Astro، حتى يعيد Checkout العميل إلى تطبيقك.تقرأ مسارات API هذه المتغيرات:- يصادق
DODO_PAYMENTS_API_KEYعلى مساري Checkout وCustomer Portal. - يتحقق
DODO_PAYMENTS_WEBHOOK_KEYمن توقيعات webhook. - يحدد
DODO_PAYMENTS_RETURN_URLالمكان الذي يرسل إليه Checkout العميل بعد الدفع. - تكون قيمة
DODO_PAYMENTS_ENVIRONMENTهيtest_modeأوlive_mode.
5
Add Your Products
استبدل المنتجات النموذجية في تعرض صفحة الأسعار
src/lib/products.ts بمنتجاتك الخاصة. عيّن كل product_id إلى معرّف منتج ضمن المنتجات في لوحة التحكم:name وdescription وprice وfeatures من هذا الملف. يفرض Checkout السعر المحدد على المنتج في Dodo Payments، لذا احرص على مزامنة price معه.6
Run the Development Server
بنية المشروع
توجد مسارات API الخاصة بـ Checkout وCustomer Portal وwebhook ضمنsrc/pages/api/:
التخصيص
تحديث معلومات المنتج
حرّرsrc/lib/products.ts لتغيير ما يلي:
- معرّفات المنتجات من المنتجات في لوحة تحكم Dodo Payments
- الأسعار
- الميزات
- الأوصاف
تعبئة بيانات العميل مسبقًا
يرسل نص Checkout البرمجي فيsrc/components/ProductCard.astro اسمًا وبريدًا إلكترونيًا ثابتين مع كل طلب Checkout. استبدلهما ببيانات المستخدم الذي سجّل الدخول:
تحديث Customer Portal
يفتح رابط Customer Portal فيsrc/components/Header.astro المسار /api/customer-portal باستخدام معرّف عميل ثابت. استبدله بمعرّف العميل من نظام المصادقة أو قاعدة البيانات لديك:
أحداث webhook
يتحقق المعالج فيsrc/pages/api/webhook.ts من كل طلب باستخدام DODO_PAYMENTS_WEBHOOK_KEY، ثم يعالج حدثين:
- يعمل
onSubscriptionActiveعندما يصبح الاشتراك نشطًا (subscription.active). - يعمل
onSubscriptionCancelledعندما يُلغى الاشتراك (subscription.cancelled).
onPaymentSucceeded. تسرد محوّل Astro جميع المعالجات المدعومة.
لا يستطيع Dodo Payments الوصول إلى localhost. للتطوير المحلي، استخدم نفقًا مثل ngrok لإتاحة خادمك المحلي، واستخدم عنوان URL للنفق كنقطة نهاية webhook.
النشر
ينشئ Astro الصفحات كمخرجات ثابتة، وتعيّن كل مسارات API القيمةexport const prerender = false حتى تُعرض عند الطلب. تحتاج المسارات عند الطلب إلى محوّل Astro لمنصة النشر لديك:
لمنصات أخرى، راجع أدلة النشر الخاصة بـ Astro. في منصة الاستضافة، أضف متغيرات البيئة الأربعة وعيّن
DODO_PAYMENTS_RETURN_URL إلى عنوان URL للإنتاج.
تحديث عنوان URL لـ webhook
بعد النشر، أضف عنوان URL لـ webhook الخاص بالإنتاج في لوحة تحكم Dodo Payments:DODO_PAYMENTS_WEBHOOK_KEY في بيئة الإنتاج إلى سر توقيع نقطة النهاية هذه.
استكشاف الأخطاء وإصلاحها
Module not found or build errors
Module not found or build errors
احذف
node_modules وpackage-lock.json، ثم أعد تثبيت التبعيات:Checkout redirect fails
Checkout redirect fails
تحقق من الأسباب الشائعة التالية:
- معرّف المنتج غير موجود في لوحة تحكم Dodo Payments.
- مفتاح API أو
DODO_PAYMENTS_ENVIRONMENTفي.envغير صحيح. يعمل مفتاح وضع الاختبار فقط معtest_mode.
npm run dev.Webhooks not receiving events
Webhooks not receiving events
للاختبار المحلي، استخدم ngrok لإتاحة خادمك:في لوحة تحكم Dodo، أضف نقطة نهاية باستخدام عنوان URL لـ HTTPS الخاص بـ ngrok متبوعًا بـ
/api/webhook. انسخ سر توقيع نقطة النهاية هذه إلى DODO_PAYMENTS_WEBHOOK_KEY في ملف .env.Customer portal link doesn't work
Customer portal link doesn't work
استبدل
CUSTOMER_ID الثابت في src/components/Header.astro بمعرّف عميل في لوحة تحكم Dodo Payments.في بيئة الإنتاج، احصل على معرّف العميل من نظام المصادقة وقاعدة البيانات لديك بدلًا من ذلك.Build fails with adapter error
Build fails with adapter error
تُعرض مسارات API عند الطلب، ولا يتضمن المستودع محوّل نشر. ثبّت محوّل Astro لمنصتك قبل إنشاء نسخة الإنتاج.راجع أدلة النشر الخاصة بـ Astro للحصول على التفاصيل.
لمزيد من المعلومات
- وثائق Dodo Payments
- وثائق Checkout Sessions
- وثائق Webhooks
- محوّل Astro: خيارات لمعالجات
CheckoutوCustomerPortalوWebhooks - وثائق Astro
الدعم
للحصول على المساعدة بشأن القالب الأساسي:- اطرح أسئلتك في مجتمع Discord.
- أبلغ عن المشكلات وتابع التحديثات في مستودع GitHub.
- راسل فريق الدعم عبر البريد الإلكتروني.