الانتقال إلى المحتوى الرئيسي

مستودع GitHub

نموذج Go + مدفوعات دودي بسيط

نظرة عامة

يوفر نموذج Go نقطة انطلاق جاهزة للإنتاج لدمج مدفوعات دودي مع خلفية Go الخاصة بك. يتضمن هذا القالب معالجة جلسات الدفع، والتحقق من الويب هوك، ودمج بوابة العملاء، ويتبع أفضل الممارسات في Go لمساعدتك على البدء في قبول المدفوعات بسرعة.
يستخدم هذا النموذج Go 1.21+ مع أنماط العمارة النظيفة (cmd، internal، templates)، وقوالب HTML، و dodopayments-go SDK لدمج API بسلاسة.

الميزات

  • إعداد سريع - ابدأ في أقل من 5 دقائق
  • دمج المدفوعات - تدفق دفع مُعد مسبقًا باستخدام dodopayments-go SDK
  • واجهة مستخدم حديثة - صفحة تسعير نظيفة ذات طابع داكن مع قوالب HTML
  • معالجة الويب هوك - تحقق من أحداث الدفع ومعالجتها بأمان
  • بوابة العملاء - إدارة الاشتراكات بشكل ذاتي
  • أفضل ممارسات Go - عمارة نظيفة مع cmd، internal، و templates
  • دفع مسبق - يوضح تمرير بيانات العملاء لتحسين تجربة المستخدم

المتطلبات المسبقة

قبل أن تبدأ، تأكد من أن لديك:
  • Go 1.21+
  • حساب مدفوعات دودي (للوصول إلى مفاتيح API وWebhook من لوحة التحكم)

بدء سريع

1

استنساخ المستودع

git clone https://github.com/dodopayments/go-boilerplate.git
cd go-boilerplate
2

تثبيت التبعيات

make install
أو يدويًا:
go mod download
3

احصل على بيانات اعتماد API

سجل في مدفوعات دودي واحصل على بيانات اعتمادك من لوحة التحكم:
تأكد من أنك في وضع الاختبار أثناء التطوير!
4

تكوين متغيرات البيئة

أنشئ ملف .env في الدليل الجذر:
cp .env.example .env
قم بتحديث القيم باستخدام بيانات اعتماد مدفوعات دودي الخاصة بك:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here
DODO_PAYMENTS_WEBHOOK_KEY=your_webhook_signing_key_here
DODO_PAYMENTS_RETURN_URL=http://localhost:8000
DODO_PAYMENTS_ENVIRONMENT=test_mode
لا تقم أبدًا بإضافة ملف .env إلى التحكم في الإصدار. إنه مدرج بالفعل في .gitignore.
5

أضف منتجاتك

قم بتحديث internal/lib/products.go باستخدام معرفات المنتجات الفعلية الخاصة بك من مدفوعات دودي:
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999, // in cents
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
    // ... add more products
}
6

تشغيل خادم التطوير

make run
أو يدويًا:
go run cmd/server/main.go
افتح http://localhost:8000 لرؤية صفحة التسعير الخاصة بك!
يجب أن ترى صفحة تسعير ذات طابع داكن مع منتجاتك جاهزة للشراء.

هيكل المشروع

go-boilerplate/
├── cmd/
│   └── server/             # Application entry point
├── internal/
│   ├── api/                # API handlers (Checkout, Portal, Webhook)
│   ├── core/               # Configuration and system core
│   └── lib/                # Shared logic (Products, Customer utils)
├── templates/              # HTML templates
├── Makefile                # Build and run commands
├── go.mod                  # Go module definition
├── go.sum                  # Dependency checksums
├── .env.example            # Environment template
└── README.md

نقاط نهاية API

يتضمن النموذج نقاط النهاية المُعدة مسبقًا التالية:
نقطة النهايةالطريقةالوصف
/GETصفحة التسعير مع قائمة المنتجات
/api/checkoutPOSTإنشاء جلسة دفع جديدة
/api/webhookPOSTمعالجة ويب هوك مدفوعات دودي
/api/customer-portalPOSTتوليد عنوان URL لبوابة العملاء

التخصيص

تحديث معلومات المنتج

قم بتحرير internal/lib/products.go لتعديل:
  • معرفات المنتجات (من لوحة تحكم دودي)
  • التسعير
  • الميزات
  • الأوصاف
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999,
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
}

ملء بيانات العملاء مسبقًا

في templates/index.html، استبدل بيانات العملاء الثابتة ببيانات المستخدم الفعلية الخاصة بك:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // Replace with actual logged-in user's email
};
في تطبيق الإنتاج، ستقوم بحقن هذه القيم ديناميكيًا من نظام المصادقة الخاص بك.

أحداث الويب هوك

يظهر النموذج كيفية التعامل مع أحداث الويب هوك في internal/api/webhook.go. تشمل الأحداث المدعومة:
الحدثالوصف
subscription.activeيتم تفعيله عندما يصبح الاشتراك نشطًا
payment.succeededيتم تفعيله عندما تكون المدفوعات ناجحة
أضف منطق عملك داخل معالج الويب هوك لـ:
  • تحديث أذونات المستخدم في قاعدة بياناتك
  • إرسال رسائل تأكيد عبر البريد الإلكتروني
  • توفير الوصول إلى المنتجات الرقمية
  • تتبع التحليلات والبيانات

اختبار الويب هوك محليًا

للتطوير المحلي، استخدم أدوات مثل ngrok لفتح خادمك المحلي:
ngrok http 8000
قم بتحديث عنوان URL للويب هوك في لوحة تحكم مدفوعات دودي:
https://your-ngrok-url.ngrok.io/api/webhook

النشر

بناء للإنتاج

make build
أو يدويًا:
go build -o bin/server cmd/server/main.go
./bin/server

النشر على Vercel

[ نشر مع Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

أنشئ Dockerfile:
FROM golang:1.21-alpine AS builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o bin/server cmd/server/main.go

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/bin/server .
COPY --from=builder /app/templates ./templates

EXPOSE 8000
CMD ["./server"]
قم بالبناء والتشغيل:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

اعتبارات الإنتاج

قبل النشر في الإنتاج:
  • قم بتبديل DODO_PAYMENTS_ENVIRONMENT إلى live_mode
  • استخدم مفاتيح API للإنتاج من لوحة التحكم
  • قم بتحديث عنوان URL للويب هوك إلى نطاق الإنتاج الخاص بك
  • قم بتمكين HTTPS لجميع نقاط النهاية

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

تأكد من تنزيل وحدات Go بشكل صحيح:
go mod tidy
go mod download
الأسباب الشائعة:
  • معرف المنتج غير صالح - تحقق من وجوده في لوحة تحكم دودي
  • مفتاح API خاطئ أو إعداد بيئة في .env
  • تحقق من سجلات الخادم للحصول على رسائل خطأ مفصلة
للاختبار المحلي، استخدم ngrok لفتح خادمك:
ngrok http 8000
قم بتحديث عنوان URL للويب هوك في لوحة تحكم دودي إلى عنوان URL الخاص بـ ngrok. تأكد من تحديث ملف .env الخاص بك بمفتاح التحقق الصحيح للويب هوك.
تأكد من أنك تقوم بتشغيل الخادم من الدليل الجذر للمشروع، أو أن مسار القوالب مُعد بشكل صحيح في الكود الخاص بك.

تعرف على المزيد

الدعم

تحتاج إلى مساعدة بشأن النموذج؟
  • انضم إلى مجتمع Discord لطرح الأسئلة والمناقشات
  • تحقق من مستودع GitHub للحصول على المشكلات والتحديثات
  • اتصل بفريق الدعم لدينا للحصول على المساعدة