# GET /b2c/v1/gateway/details

## Payment Gateway Details

این اندپوینت جزئیات تراکنش از درگاه بانکی (Payment Gateway) را بر اساس `serial_id` برمی‌گرداند. در صورتی‌که وضعیت تراکنش موفق (`status=3`) باشد، اطلاعات کارت و کد رهگیری نمایش داده می‌شود؛ در غیر این صورت، پیام خطا و جزئیات تراکنش ناموفق بازگردانده می‌شود.

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

</div>### Endpoint Info

<div class="api-docs" id="bkmrk-url%3A-%2Fb2c%2Fv1%2Fgateway"><div class="endpoint-info"><div>**URL:** `/b2c/v1/gateway/details`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** `CreditDebitController@paymentGatewayDetails`</div><div>**Auth:** ندارد (مشاهده جزئیات بر اساس serial)</div><div>**Source Tables:** `payment_gateway`, `gateways`</div></div>---

</div>### Query Parameters

<div class="api-docs" id="bkmrk-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D8%A7%D8%AC%D8%A8%D8%A7%D8%B1%DB%8C-%D8%AA"><table class="schema-table" dir="rtl"><thead><tr><th>پارامتر</th><th>نوع</th><th>اجباری</th><th>توضیح</th></tr></thead><tbody><tr><td>serial\_id</td><td>string | integer</td><td>✅</td><td>شناسه‌ٔ تراکنش در جدول `payment_gateway`</td></tr></tbody></table>

---

</div>### Logic Flow

<div class="api-docs" id="bkmrk-%F0%9F%93%A5-%DB%B1.-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-"><div class="flowchart" dir="rtl"><div class="flow-item">📥 ۱. دریافت پارامتر `serial_id` از QueryString</div><div class="flow-arrow">↓</div><div class="flow-item-process">۲. اجرای Query:</div></div></div>```
SELECT payment_gateway.*, gateways.drive as drive_title
FROM payment_gateway
JOIN gateways ON payment_gateway.drive = gateways.id
WHERE payment_gateway.serial_id = :serial_id
```

<div class="api-docs" id="bkmrk-%E2%86%93-%D8%A2%DB%8C%D8%A7-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%DB%8C-%DB%8C%D8%A7%D9%81%D8%AA-%D8%B4%D8%AF"><div class="flowchart" dir="rtl"><div class="flow-arrow">↓</div><div class="flow-item-decision">آیا رکوردی یافت شد؟ - ✅ بله → ادامه پردازش
- ❌ خیر → بازگشت پیام 404

</div><div class="flow-arrow">↓</div><div class="flow-item-decision">بررسی فیلد `status`: - `3` → پرداخت موفق ✅
- غیر از 3 → پرداخت ناموفق ❌

</div><div class="flow-arrow">↓</div><div class="flow-item-process">**در حالت پرداخت موفق:**- اگر `drive_title = 'behpardakht'` یا `'sep'` → مقدار `result` دیکد (JSON decode) می‌شود.
- مقادیر زیر استخراج می‌شوند: 
    - `amount`: مبلغ پرداخت
    - `card`: شماره کارت (از `CardHolderPan`)
    - `tracking_code`: کد رهگیری (`SaleReferenceId`)
    - `datetime`: زمان تراکنش
- درگاه‌های دیگر در خروجی خام (`$tempPaymentGateway`) بازگردانده می‌شوند.

</div><div class="flow-arrow">↓</div><div class="flow-item-process">**در حالت پرداخت ناموفق:**  
اگر **behpardakht** باشد → پیام خطا از `$result->message` گرفته می‌شود و `SaleOrderId` به عنوان `tracking_code` بازگردانده می‌شود.</div><div class="flow-arrow">↓</div><div class="flow-item-success">✅ پاسخ نهایی JSON با وضعیت `200` (در موفقیت) یا `400`/`404` در خطا بازگردانده می‌شود.</div></div>---

</div>### Response Samples

#### 🎯 پرداخت موفق (درگاه Behpardakht)

```json
{
  "payload": {
    "drive": "behpardakht",
    "amount": 1250000,
    "card": "610433******8124",
    "datetime": "2025-12-09T10:12:35",
    "tracking_code": "74632159"
  },
  "meta": { "timestamp": 1733749500 }
}
```

#### ⚠️ پرداخت ناموفق (درگاه Behpardakht)

```json
{
  "error": {
    "code": 1000,
    "message": "پرداخت ناموفق | تراکنش توسط دارنده کارت لغو شد"
  },
  "meta": {
    "timestamp": 1733749600,
    "data": {
      "message": "تراکنش توسط دارنده کارت لغو شد",
      "datetime": "2025-12-09T10:12:35",
      "tracking_code": "69854172"
    }
  }
}
```

#### ❌ پرداختی یافت نشد

```json
{
  "error": {
    "code": 1000,
    "message": "پرداختی با این مشخصات یافت نشد."
  },
  "meta": { "timestamp": 1733749700 }
}
```

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

</div>### Technical Notes

<div class="api-docs" id="bkmrk-%D9%85%D9%86%D8%A8%D8%B9-%D8%A7%D8%B5%D9%84%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87%3A-%D8%AC%D8%AF%D9%88%D9%84">- منبع اصلی داده: جدول `payment_gateway` (اطلاعات تراکنش) + جدول `gateways` (متادیتای درگاه).
- پارامتر `serial_id` از Query دریافت می‌شود و باید منحصربه‌فرد باشد.
- فیلد `status=3` معرف پرداخت نهایی و تایید شده است.
- درگاه‌های اختصاصی (Behpardakht و Sep) دارای فیلد JSON `result` هستند که حاوی داده‌های تراکنش مانند شماره کارت و کد مرجع است.
- در صورت عدم match درگاه خاص، پاسخ به صورت خام (Object کامل DB row) بازگردانده می‌شود.

</div>