feat(payment): enhance payment configuration to include active gateways and update CORS settings
This commit is contained in:
+17
-5
@@ -16,8 +16,11 @@
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"test_mode": true,
|
||||
"appointment_fee_rials": 150000
|
||||
"test_mode": false,
|
||||
"appointment_fee_rials": 150000,
|
||||
"gateways": [
|
||||
{ "name": "mellat", "label": "بانک ملت" }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -26,8 +29,11 @@
|
||||
|-------|------|-------------|
|
||||
| `test_mode` | boolean | `true` = درگاه آزمایشی فعال است — backend از MockGateway استفاده میکند و پول واقعی کسر نمیشود |
|
||||
| `appointment_fee_rials` | integer | مبلغ هر نوبت به ریال (از تنظیمات سایت، کلید `appointment_fee_rials`). frontend برای نمایش «مبلغ قابل پرداخت» از این میخواند؛ مبلغِ واقعیِ تراکنش هم در backend از همین کلید خوانده میشود (نه از client) |
|
||||
| `gateways` | array | فقط درگاههای **فعال** (اعتبارنامهشان در تنظیمات سایت یا env ست شده). هر عضو: `{ name, label }`. frontend فقط همینها را برای انتخاب نمایش میدهد. در `test_mode` تنها `[{ "name": "mellat", "label": "بانک ملت (آزمایشی)" }]` برمیگردد. اگر هیچ درگاهی فعال نباشد آرایه خالی است و frontend باید پرداخت را غیرفعال کند. |
|
||||
|
||||
**نکته:** این endpoint هیچ اطلاعات حساسی (terminal_id، password، ...) را expose نمیکند. تنها یک boolean برای مصرف frontend است.
|
||||
فعالبودن هر درگاه با `PaymentGatewayInterface::isConfigured()` تعیین میشود: `mellat` نیازمند `mellat_terminal_id` + `mellat_username` + `mellat_password`؛ `sep` نیازمند `sep_terminal_id`.
|
||||
|
||||
**نکته:** این endpoint هیچ اطلاعات حساسی (terminal_id، password، ...) را expose نمیکند — فقط نام/برچسب درگاههای فعال.
|
||||
|
||||
---
|
||||
|
||||
@@ -127,9 +133,15 @@ Initiate payment for an appointment. Returns a redirect URL to the payment gatew
|
||||
## POST `/api/v1/payment/callback/{gateway}`
|
||||
## GET `/api/v1/payment/callback/{gateway}`
|
||||
|
||||
Payment gateway callback. Called by the bank after user completes (or cancels) payment.
|
||||
Payment gateway callback. Called by the bank after user completes (or cancels) payment. هر درگاه callback مخصوص خودش را دارد؛ URL آن هنگام `initiate` از `APP_BASE_URL` ساخته میشود:
|
||||
|
||||
**Permission:** `PUBLIC` — called by the gateway, not the user
|
||||
```
|
||||
{APP_BASE_URL}/api/v1/payment/callback/{gateway}?order_id={orderId}
|
||||
```
|
||||
|
||||
**نکته IPG ملت:** طبق راهنمای درگاه ملت، `callBackUrl` باید روی **دامنهٔ ثبتشدهٔ پذیرنده** باشد و **IP مجاز نیست** (در غیر این صورت کد پاسخ `62` — «مسیر back call در دامنهٔ ثبتشده نیست»). بنابراین `APP_BASE_URL` در پروداکشن باید دقیقاً `https://clinic-pro.ir` (دامنهٔ ثبتشده نزد ملت/شاپرک) باشد.
|
||||
|
||||
**Permission:** `PUBLIC` — called by the gateway, not the user (محدود به IPهای شبکهٔ شاپرک `isAllowedCallbackIp`؛ در `test_mode` بدون محدودیت IP)
|
||||
|
||||
### Path Parameters
|
||||
| Param | Type | Description |
|
||||
|
||||
Reference in New Issue
Block a user