You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
529 lines
17 KiB
529 lines
17 KiB
def doc_upload_transaction_receipts():
|
|
return """
|
|
# 🐈 Scenario
|
|
🛠️ آپلود رسید پرداخت برای تراکنش
|
|
|
|
این API برای آپلود یک یا چند رسید پرداخت برای یک تراکنش استفاده میشود.
|
|
پس از آپلود موفقیتآمیز، وضعیت تراکنش به 'waiting_approval' (در انتظار تایید) تغییر میکند.
|
|
|
|
---
|
|
|
|
## 🚀 روند آپلود (دو مرحلهای)
|
|
|
|
### مرحله 1️⃣: آپلود فایل به سرور موقت
|
|
ابتدا باید فایلهای خود را به endpoint زیر آپلود کنید:
|
|
|
|
```
|
|
POST /upload-tmp-media/
|
|
Content-Type: multipart/form-data
|
|
|
|
Body:
|
|
- file: [فایل رسید]
|
|
```
|
|
|
|
**پاسخ:**
|
|
```json
|
|
{
|
|
"url": "/static/tmp/xyz123-receipt.jpg",
|
|
"name": "receipt.jpg",
|
|
"size": "1024000",
|
|
"mime_type": "image/jpeg"
|
|
}
|
|
```
|
|
|
|
### مرحله 2️⃣: ثبت URL فایلها در تراکنش
|
|
سپس URL های دریافتی را به این endpoint ارسال کنید:
|
|
|
|
```
|
|
POST /api/transactions/<transaction_id>/receipts/upload/
|
|
Content-Type: application/json
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 درخواست API (مرحله 2)
|
|
|
|
### URL:
|
|
```
|
|
POST /api/transactions/<transaction_id>/receipts/upload/
|
|
```
|
|
|
|
### پارامترهای URL:
|
|
| کلید | نوع داده | توضیحات |
|
|
|------------------|-----------|----------------------------------------------------------|
|
|
| `transaction_id` | Integer | شناسه تراکنش که میخواهید رسید برای آن ثبت کنید |
|
|
|
|
### پارامترهای درخواست (JSON Body):
|
|
| کلید | نوع داده | الزامی | توضیحات |
|
|
|---------------|-----------|--------|----------------------------------------------------------|
|
|
| `files` | String[] | بله | لیست URL های فایلهای آپلود شده از مرحله 1 (حداکثر 10 فایل) |
|
|
| `description` | String | خیر | توضیحات اختیاری درباره رسیدها |
|
|
|
|
---
|
|
|
|
## 💡 نکات مهم:
|
|
1. **روند دو مرحلهای**:
|
|
- **مرحله 1**: ابتدا فایلها را به `/upload-tmp-media/` آپلود کنید
|
|
- **مرحله 2**: سپس URL های دریافتی را به این API ارسال کنید
|
|
|
|
2. **محدودیت فایلها**:
|
|
- حداکثر 10 فایل میتوانید در هر درخواست ثبت کنید
|
|
|
|
3. **وضعیت تراکنش**:
|
|
- فقط میتوانید برای تراکنشهایی با وضعیت 'pending' یا 'waiting_approval' رسید آپلود کنید
|
|
- پس از ثبت موفقیتآمیز، وضعیت تراکنش به 'waiting_approval' تغییر میکند
|
|
|
|
4. **احراز هویت**:
|
|
- باید توکن احراز هویت را در هدر درخواست ارسال کنید
|
|
- فقط میتوانید برای تراکنشهای خودتان رسید آپلود کنید
|
|
|
|
---
|
|
|
|
## 📊 پاسخها
|
|
|
|
| کد وضعیت | توضیحات |
|
|
|---------------|-----------------------------------------------------------|
|
|
| `201` | موفقیتآمیز - رسیدها با موفقیت ثبت شدند |
|
|
| `400` | دادههای نامعتبر یا تراکنش قادر به دریافت رسید نیست |
|
|
| `403` | عدم دسترسی - شما صاحب این تراکنش نیستید |
|
|
| `404` | تراکنش یافت نشد |
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست کامل (JSON):
|
|
|
|
```json
|
|
{
|
|
"files": [
|
|
"/static/tmp/xyz123-receipt1.jpg",
|
|
"/static/tmp/abc456-receipt2.jpg"
|
|
],
|
|
"description": "Payment receipt for Python course"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ موفقیتآمیز
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Receipts uploaded successfully",
|
|
"transaction_status": "waiting_approval",
|
|
"receipts": [
|
|
{
|
|
"id": 1,
|
|
"file": "http://example.com/media/receipts/1/receipt1.jpg",
|
|
"description": "Payment receipt for course enrollment",
|
|
"uploaded_at": "2025-12-03T10:30:00Z"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"file": "http://example.com/media/receipts/1/receipt2.jpg",
|
|
"description": "Payment receipt for course enrollment",
|
|
"uploaded_at": "2025-12-03T10:30:05Z"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست کامل (cURL):
|
|
|
|
### مرحله 1 - آپلود فایل:
|
|
```bash
|
|
curl -X POST \\
|
|
'http://your-api.com/upload-tmp-media/' \\
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\
|
|
-F 'file=@/path/to/receipt1.jpg'
|
|
```
|
|
|
|
### مرحله 2 - ثبت رسید:
|
|
```bash
|
|
curl -X POST \\
|
|
'http://your-api.com/api/transactions/123/receipts/upload/' \\
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\
|
|
-H 'Content-Type: application/json' \\
|
|
-d '{
|
|
"files": ["/static/tmp/xyz123-receipt1.jpg"],
|
|
"description": "Payment receipt for Python course"
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ خطا (403 - عدم دسترسی):
|
|
|
|
```json
|
|
{
|
|
"message": "You don't have permission to upload receipts for this transaction"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ خطا (400 - وضعیت نامعتبر):
|
|
|
|
```json
|
|
{
|
|
"message": "Cannot upload receipts for transaction with status 'success'"
|
|
}
|
|
```
|
|
"""
|
|
|
|
|
|
def doc_list_transaction_receipts():
|
|
return """
|
|
# 🐈 Scenario
|
|
🛠️ لیست رسیدهای پرداخت یک تراکنش
|
|
|
|
این API برای دریافت لیست تمام رسیدهای آپلود شده برای یک تراکنش خاص استفاده میشود.
|
|
|
|
---
|
|
|
|
## 🚀 درخواست API
|
|
|
|
### URL:
|
|
```
|
|
GET /api/transactions/<transaction_id>/receipts/
|
|
```
|
|
|
|
### پارامترهای URL:
|
|
| کلید | نوع داده | توضیحات |
|
|
|------------------|-----------|----------------------------------------------------------|
|
|
| `transaction_id` | Integer | شناسه تراکنش که میخواهید رسیدهای آن را مشاهده کنید |
|
|
|
|
---
|
|
|
|
## 💡 نکات مهم:
|
|
1. **احراز هویت**:
|
|
- باید توکن احراز هویت را در هدر درخواست ارسال کنید
|
|
- فقط میتوانید رسیدهای تراکنشهای خودتان را مشاهده کنید
|
|
|
|
2. **مرتبسازی**:
|
|
- رسیدها بر اساس تاریخ آپلود (جدیدترین اول) مرتب میشوند
|
|
|
|
---
|
|
|
|
## 📊 پاسخها
|
|
|
|
| کد وضعیت | توضیحات |
|
|
|---------------|-----------------------------------------------------------|
|
|
| `200` | موفقیتآمیز - لیست رسیدها بازگردانده شد |
|
|
| `403` | عدم دسترسی - شما صاحب این تراکنش نیستید |
|
|
| `404` | تراکنش یافت نشد |
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ موفقیتآمیز
|
|
|
|
```json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"file": "http://example.com/media/receipts/1/receipt1.jpg",
|
|
"description": "Payment receipt for course enrollment",
|
|
"uploaded_at": "2025-12-03T10:30:00Z"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"file": "http://example.com/media/receipts/1/receipt2.jpg",
|
|
"description": "Second payment receipt",
|
|
"uploaded_at": "2025-12-03T10:25:00Z"
|
|
}
|
|
]
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 توضیحات مقادیر پاسخ
|
|
|
|
| کلید | نوع داده | توضیحات |
|
|
|---------------|------------|----------------------------------------------------------|
|
|
| `id` | Integer | شناسه یکتای رسید |
|
|
| `file` | String | URL کامل فایل رسید آپلود شده |
|
|
| `description` | String | توضیحات اختیاری درباره رسید (ممکن است خالی باشد) |
|
|
| `uploaded_at` | DateTime | تاریخ و زمان آپلود رسید |
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست (cURL):
|
|
|
|
```bash
|
|
curl -X GET \\
|
|
'http://your-api.com/api/transactions/123/receipts/' \\
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ خطا (403 - عدم دسترسی):
|
|
|
|
```json
|
|
{
|
|
"message": "You don't have permission to view receipts for this transaction"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ خطا (404 - تراکنش یافت نشد):
|
|
|
|
```json
|
|
{
|
|
"message": "Transaction not found"
|
|
}
|
|
```
|
|
"""
|
|
|
|
|
|
def doc_transaction_list():
|
|
return """
|
|
# 🐈 Scenario
|
|
🛠️ لیست تراکنشهای کاربر
|
|
|
|
این API برای دریافت لیست تمام تراکنشهای کاربر احراز هویت شده استفاده میشود.
|
|
|
|
---
|
|
|
|
## 🚀 درخواست API
|
|
|
|
### URL:
|
|
```
|
|
GET /api/transactions/list/
|
|
```
|
|
|
|
---
|
|
|
|
## 💡 نکات مهم:
|
|
1. **احراز هویت**:
|
|
- باید توکن احراز هویت را در هدر درخواست ارسال کنید
|
|
- فقط تراکنشهای خودتان را مشاهده میکنید
|
|
|
|
2. **فیلترینگ خودکار**:
|
|
- تراکنشهای حذف شده (soft deleted) نمایش داده نمیشوند
|
|
|
|
3. **وضعیتهای تراکنش**:
|
|
- `pending`: در انتظار پرداخت
|
|
- `waiting_approval`: در انتظار تایید (رسید آپلود شده)
|
|
- `success`: پرداخت موفق و تایید شده
|
|
- `failed`: پرداخت ناموفق
|
|
|
|
---
|
|
|
|
## 📊 پاسخها
|
|
|
|
| کد وضعیت | توضیحات |
|
|
|---------------|-----------------------------------------------------------|
|
|
| `200` | موفقیتآمیز - لیست تراکنشها بازگردانده شد |
|
|
| `401` | عدم احراز هویت |
|
|
|
|
---
|
|
|
|
## 📄 توضیحات مقادیر پاسخ
|
|
|
|
| کلید | نوع داده | توضیحات |
|
|
|---------------|------------|----------------------------------------------------------|
|
|
| `id` | Integer | شناسه یکتای تراکنش |
|
|
| `course` | Object | اطلاعات دوره مرتبط با تراکنش |
|
|
| `status` | String | وضعیت تراکنش (pending, waiting_approval, success, failed) |
|
|
| `price` | Decimal | مبلغ تراکنش |
|
|
| `created_at` | DateTime | تاریخ و زمان ایجاد تراکنش |
|
|
| `updated_at` | DateTime | تاریخ و زمان آخرین بهروزرسانی تراکنش |
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ موفقیتآمیز
|
|
|
|
```json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"course": {
|
|
"id": 5,
|
|
"title": "Python Programming Basics",
|
|
"slug": "python-programming-basics",
|
|
"thumbnail": "http://example.com/media/courses/thumbnails/python.jpg",
|
|
"price": "99.00",
|
|
"final_price": "79.00"
|
|
},
|
|
"status": "waiting_approval",
|
|
"price": "79.00",
|
|
"created_at": "2025-12-01T10:00:00Z",
|
|
"updated_at": "2025-12-03T10:30:00Z"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"course": {
|
|
"id": 8,
|
|
"title": "Django Web Development",
|
|
"slug": "django-web-development",
|
|
"thumbnail": "http://example.com/media/courses/thumbnails/django.jpg",
|
|
"price": "149.00",
|
|
"final_price": "149.00"
|
|
},
|
|
"status": "success",
|
|
"price": "149.00",
|
|
"created_at": "2025-11-28T14:20:00Z",
|
|
"updated_at": "2025-11-29T09:15:00Z"
|
|
}
|
|
]
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست (cURL):
|
|
|
|
```bash
|
|
curl -X GET \\
|
|
'http://your-api.com/api/transactions/list/' \\
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
|
|
```
|
|
"""
|
|
|
|
|
|
def doc_create_transaction():
|
|
return """
|
|
# 🐈 Scenario
|
|
🛠️ ثبتنام در دوره و ایجاد تراکنش
|
|
|
|
این API برای ثبتنام کاربر در یک دوره و ایجاد تراکنش استفاده میشود.
|
|
|
|
---
|
|
|
|
## 🚀 درخواست API
|
|
|
|
### URL:
|
|
```
|
|
POST /api/transactions/<slug>/join/
|
|
```
|
|
|
|
### پارامترهای URL:
|
|
| کلید | نوع داده | توضیحات |
|
|
|---------|-----------|----------------------------------------------------------|
|
|
| `slug` | String | اسلاگ دورهای که میخواهید در آن ثبتنام کنید |
|
|
|
|
### پارامترهای درخواست (JSON Body):
|
|
| کلید | نوع داده | الزامی | توضیحات |
|
|
|---------------------|-----------|--------|----------------------------------------------------------|
|
|
| `participant_infos` | Array | بله | لیست اطلاعات شرکتکنندگان |
|
|
|
|
### ساختار `participant_infos`:
|
|
| کلید | نوع داده | الزامی | توضیحات |
|
|
|---------------|-----------|--------|----------------------------------------------------------|
|
|
| `fullname` | String | بله | نام کامل شرکتکننده |
|
|
| `email` | String | بله | ایمیل شرکتکننده (برای دوره رایگان باید با ایمیل کاربر احراز هویت شده یکسان باشد) |
|
|
| `phone_number`| String | خیر | شماره تلفن شرکتکننده |
|
|
| `gender` | String | خیر | جنسیت شرکتکننده (male, female) |
|
|
| `birthdate` | Date | خیر | تاریخ تولد شرکتکننده (فرمت: YYYY-MM-DD) |
|
|
|
|
---
|
|
|
|
## 💡 نکات مهم:
|
|
1. **دوره رایگان**:
|
|
- اگر دوره رایگان باشد و فقط یک شرکتکننده در لیست باشد و ایمیل او با کاربر احراز هویت شده یکسان باشد، تراکنش به صورت خودکار تایید میشود (status = 'success')
|
|
- کاربر به صورت خودکار به عنوان دانشجو در دوره ثبت میشود
|
|
|
|
2. **دوره پولی**:
|
|
- تراکنش با وضعیت 'pending' ایجاد میشود
|
|
- کاربر باید رسید پرداخت خود را آپلود کند
|
|
- پس از آپلود رسید، وضعیت به 'waiting_approval' تغییر میکند
|
|
- پس از تایید توسط ادمین، وضعیت به 'success' تغییر میکند
|
|
|
|
3. **احراز هویت**:
|
|
- باید توکن احراز هویت را در هدر درخواست ارسال کنید
|
|
|
|
---
|
|
|
|
## 📊 پاسخها
|
|
|
|
| کد وضعیت | توضیحات |
|
|
|---------------|-----------------------------------------------------------|
|
|
| `201` | موفقیتآمیز - تراکنش ایجاد شد |
|
|
| `400` | دادههای نامعتبر |
|
|
| `404` | دوره یافت نشد |
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست (JSON Body):
|
|
|
|
```json
|
|
{
|
|
"participant_infos": [
|
|
{
|
|
"fullname": "علی رضایی",
|
|
"email": "ali@example.com",
|
|
"phone_number": "+989123456789",
|
|
"gender": "male",
|
|
"birthdate": "1995-05-15"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ موفقیتآمیز (دوره رایگان):
|
|
|
|
```json
|
|
{
|
|
"message": "Transaction Participant created successfully.",
|
|
"transaction_id": 123,
|
|
"participant_infos": [
|
|
{
|
|
"fullname": "علی رضایی",
|
|
"email": "ali@example.com",
|
|
"phone_number": "+989123456789",
|
|
"gender": "male",
|
|
"birthdate": "1995-05-15"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 نمونه پاسخ موفقیتآمیز (دوره پولی):
|
|
|
|
```json
|
|
{
|
|
"message": "Transaction Participant created successfully.",
|
|
"transaction_id": 124,
|
|
"participant_infos": [
|
|
{
|
|
"fullname": "سارا احمدی",
|
|
"email": "sara@example.com",
|
|
"phone_number": "+989123456789",
|
|
"gender": "female",
|
|
"birthdate": "1998-03-20"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
توجه: برای دوره پولی، شما باید با استفاده از `transaction_id` بازگشتی، رسید پرداخت خود را از طریق API آپلود رسید آپلود کنید.
|
|
|
|
---
|
|
|
|
## 📄 نمونه درخواست (cURL):
|
|
|
|
```bash
|
|
curl -X POST \\
|
|
'http://your-api.com/api/transactions/python-programming-basics/join/' \\
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\
|
|
-H 'Content-Type: application/json' \\
|
|
-d '{
|
|
"participant_infos": [
|
|
{
|
|
"fullname": "علی رضایی",
|
|
"email": "ali@example.com",
|
|
"phone_number": "+989123456789",
|
|
"gender": "male",
|
|
"birthdate": "1995-05-15"
|
|
}
|
|
]
|
|
}'
|
|
```
|
|
"""
|