# POST /b2c/v1/online/{type}/penalty

<div class="api-docs" id="bkmrk-">  <div class="endpoint-section">  
</div></div>## Refund Penalty Calculation

این اندپوینت برای محاسبه جریمه استرداد رزرو یا بلیط آنلاین طراحی شده است.   
سیستم با توجه به نوع سرویس (`{type}`) و شعبه ارسال‌کننده، میزان جریمه، مبلغ قابل استرداد و قوانین مربوط به لغو رزرو را محاسبه می‌کند.

<div class="api-docs" id="bkmrk--1"><div class="endpoint-section">  
</div>  
---

  </div># Calculate Refund Penalty

<div class="api-docs" id="bkmrk-url%3A-%2Fb2c%2Fv1%2Fonline%2F"><div class="endpoint-info"><div>**URL:** `/b2c/v1/online/{type}/penalty`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** V1OnlineController@penaltyItemProgress</div><div>**Auth:** Public (No Authentication Required)</div></div></div>### Path Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">{type}</td><td>String</td><td>نوع سرویس برای محاسبه جریمه؛ یکی از مقادیر: `aircraft`, `train`, `accommodation`.</td></tr></tbody></table>

  </div>### Request Body Parameters

<div class="api-docs" id="bkmrk-parameter-type-requi"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">data</td><td>Object / Array</td><td>✅</td><td>داده‌های مربوط به آیتم رزرو یا بلیط؛ شامل اطلاعات تاریخی، شماره بلیط، ارائه‌دهنده و اطلاعات سفر.</td></tr><tr><td dir="ltr">branch</td><td>Integer</td><td>✅</td><td>شناسه شعبه ارسال‌کننده درخواست برای محاسبه قوانین جریمه محلی.</td></tr></tbody></table>

---

  </div>### Response Structure

<div class="api-docs" id="bkmrk-key-description-item"><table class="schema-table" dir="rtl"><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">items</td><td>خروجی اصلی محاسبه جریمه از کلاس `BaseService::getRefundPenalty`. شامل جزئیات هر آیتم است.</td></tr><tr><td dir="ltr">meta.timestamp</td><td>زمان پاسخ (Unix Timestamp).</td></tr></tbody></table>

</div>### Example Response - Success

```json
{
    "items": [
      {
        "provider": "Mahan Air",
        "ticket_number": "WS5050",
        "original_price": 15000000,
        "penalty_amount": 3000000,
        "refundable_amount": 12000000,
        "currency": "IRR",
        "rule": "لغو تا ۳ ساعت مانده به پرواز با جریمه ۲۰٪"
      }
    ],
    "meta": {
      "timestamp": 1733739501
    }
}
```

<div class="api-docs" id="bkmrk--2">---

  </div>### Error Response (400 Bad Request)

```json
{
    "status": false,
    "time": 1733739501,
    "error": {
      "code": 1002,
      "message": "Invalid booking data format or provider error.",
      "trace": [ ... ]
    },
    "support": {
      "phone": "021-91016838 in 121",
      "email": "ict@airplus.app",
      "panel": "helpdesk.airplus.app"
    }
}
```

<div class="api-docs" id="bkmrk--3">---

  </div>### Technical Logic

<div class="api-docs" id="bkmrk-request-body%3A-data-%2B"><div class="flowchart" dir="rtl"><div class="flow-item">Request Body: `data` + `branch`</div><div class="flow-arrow">↓</div><div class="flow-item-process">**Initialize BaseService**  
ساخت نمونه: `$BaseService = new \App\Lib\BaseService()`</div><div class="flow-arrow">↓</div><div class="flow-item-process">**Call getRefundPenalty()**  
`$BaseService->getRefundPenalty($request->data, $request->get('branch'))`</div><div class="flow-arrow">↓</div><div class="flow-item-success">**Return JSON Result**  
شامل اطلاعات جریمه و مبلغ قابل بازگشت برای هر آیتم</div><div class="flow-arrow">↓</div><div class="flow-item-decision" style="background: #ffe6e6;">در صورت بروز Exception → ساخت پاسخ خطا با اطلاعات تماس پشتیبانی</div></div></div>