Kho lưu trữ GitHub
Mẫu FastAPI + Dodo Payments hoàn chỉnh
Tổng quan
Mẫu FastAPI cung cấp một điểm khởi đầu sẵn sàng cho sản xuất để tích hợp Dodo Payments với backend Python của bạn. Mẫu này bao gồm xử lý phiên thanh toán, xác minh webhook, tích hợp cổng khách hàng và các mẫu API bất đồng bộ để giúp bạn bắt đầu chấp nhận thanh toán nhanh chóng.Mẫu này sử dụng FastAPI với các mẫu async/await, Pydantic để xác thực, và
dodopayments SDK Python để tích hợp API liền mạch.Tính năng
- Cài đặt nhanh - Bắt đầu trong chưa đầy 5 phút
- Hỗ trợ bất đồng bộ - Được xây dựng với các mẫu async/await của FastAPI
- Phiên thanh toán - Quy trình thanh toán được cấu hình sẵn sử dụng SDK Python
- Xử lý Webhook - Điểm cuối webhook an toàn với xác minh chữ ký
- Cổng khách hàng - Tạo phiên cổng khách hàng dễ dàng
- An toàn kiểu - Xác thực Pydantic đầy đủ và gợi ý kiểu
- Cấu hình môi trường - Cài đặt biến môi trường sẵn sàng sử dụng
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo bạn đã có:- Python 3.9+ (khuyến nghị: Python 3.11+)
- pip hoặc uv để quản lý gói
- Tài khoản Dodo Payments (để truy cập API và Webhook Keys từ bảng điều khiển)
Bắt đầu nhanh
1
Nhân bản kho lưu trữ
2
Tạo Môi Trường Ảo
Thiết lập một môi trường Python tách biệt:Hoặc sử dụng uv để quản lý phụ thuộc nhanh hơn:
3
Cài đặt Phụ thuộc
4
Lấy Thông tin API
Đăng ký tại Dodo Payments và lấy thông tin xác thực của bạn từ bảng điều khiển:
- API Key: Bảng điều khiển → Nhà phát triển → API Keys
- Webhook Key: Bảng điều khiển → Nhà phát triển → Webhooks
5
Cấu hình Biến Môi Trường
Tạo một Cập nhật các giá trị với thông tin xác thực Dodo Payments của bạn:
.env file trong thư mục gốc:.env
6
Chạy Máy Chủ Phát Triển
Bạn sẽ thấy Swagger UI của FastAPI với tất cả các điểm cuối có sẵn sẵn sàng để thử nghiệm.
Cấu trúc Dự án
Các Điểm Cuối API
Mẫu này bao gồm các điểm cuối được cấu hình sẵn sau:| Điểm cuối | Phương thức | Mô tả |
|---|---|---|
/checkout | POST | Tạo một phiên thanh toán mới |
/webhook | POST | Xử lý webhook Dodo Payments |
/customer-portal | POST | Tạo URL cổng khách hàng |
Ví dụ Mã
Tạo một Phiên Thanh Toán
Xử lý Webhooks
Tích hợp Cổng Khách Hàng
Sự Kiện Webhook
Mẫu này minh họa việc xử lý các sự kiện webhook phổ biến:| Sự kiện | Mô tả |
|---|---|
payment.succeeded | Thanh toán đã hoàn thành thành công |
payment.failed | Nỗ lực thanh toán thất bại |
subscription.active | Đăng ký hiện đang hoạt động |
subscription.cancelled | Đăng ký đã bị hủy |
refund.succeeded | Hoàn tiền đã được xử lý thành công |
- Cập nhật quyền người dùng trong cơ sở dữ liệu của bạn
- Gửi email xác nhận
- Cung cấp quyền truy cập vào sản phẩm kỹ thuật số
- Theo dõi phân tích và số liệu
Kiểm Tra Webhooks Tại Địa Phương
Để phát triển tại địa phương, sử dụng các công cụ như ngrok để mở rộng máy chủ địa phương của bạn:Triển Khai
Docker
Cân Nhắc Sản Xuất
Khắc Phục Sự Cố
Lỗi nhập khẩu hoặc thiếu mô-đun
Lỗi nhập khẩu hoặc thiếu mô-đun
Đảm bảo môi trường ảo của bạn đã được kích hoạt và các phụ thuộc đã được cài đặt:
Tạo phiên thanh toán thất bại
Tạo phiên thanh toán thất bại
Nguyên nhân phổ biến:
- ID sản phẩm không hợp lệ - xác minh rằng nó tồn tại trong bảng điều khiển Dodo của bạn
- Khóa API hoặc cài đặt môi trường sai trong
.env - Kiểm tra nhật ký FastAPI để biết thông điệp lỗi chi tiết
Webhooks không nhận sự kiện
Webhooks không nhận sự kiện
Để thử nghiệm tại địa phương, sử dụng ngrok để mở rộng máy chủ của bạn:Cập nhật URL webhook trong bảng điều khiển Dodo đến URL ngrok. Hãy chắc chắn cập nhật file
.env của bạn với khóa xác minh webhook chính xác.Xác minh chữ ký webhook thất bại
Xác minh chữ ký webhook thất bại
- Đảm bảo
DODO_PAYMENTS_WEBHOOK_KEYđược thiết lập đúng trong.env - Xác minh rằng bạn đang sử dụng thân yêu cầu thô để xác minh chữ ký
- Kiểm tra rằng bạn đang đọc tiêu đề
webhook-signaturemột cách chính xác
Tìm Hiểu Thêm
Python SDK
Tài liệu SDK Python hoàn chỉnh với hỗ trợ bất đồng bộ
Tài liệu Webhooks
Tìm hiểu về tất cả các sự kiện webhook và các phương pháp tốt nhất
Phiên Thanh Toán
Khám phá sâu về cấu hình phiên thanh toán
Tài liệu API
Tài liệu API Dodo Payments hoàn chỉnh
Hỗ Trợ
Cần giúp đỡ với mẫu này?- Tham gia cộng đồng Discord của chúng tôi để đặt câu hỏi và thảo luận
- Kiểm tra kho lưu trữ GitHub để biết các vấn đề và cập nhật
- Liên hệ với đội ngũ hỗ trợ của chúng tôi để được trợ giúp