Skip to main content
#P1805

GET /b2c/v1/gateway/details

Payment Gateway Details

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



Endpoint Info

URL: /b2c/v1/gateway/details
Method: GET
Controller: CreditDebitController@paymentGatewayDetails
Auth: ندارد (مشاهده جزئیات بر اساس serial)
Source Tables: payment_gateway, gateways

Query Parameters

پارامتر نوع اجباری توضیح
serial_id string | integer شناسه‌ٔ تراکنش در جدول payment_gateway

Logic Flow

📥 ۱. دریافت پارامتر serial_id از QueryString
۲. اجرای Query:
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
آیا رکوردی یافت شد؟
  • ✅ بله → ادامه پردازش
  • ❌ خیر → بازگشت پیام 404
بررسی فیلد status:
  • 3 → پرداخت موفق ✅
  • غیر از 3 → پرداخت ناموفق ❌
در حالت پرداخت موفق:
  • اگر drive_title = 'behpardakht' یا 'sep' → مقدار result دیکد (JSON decode) می‌شود.
  • مقادیر زیر استخراج می‌شوند:
    • amount: مبلغ پرداخت
    • card: شماره کارت (از CardHolderPan)
    • tracking_code: کد رهگیری (SaleReferenceId)
    • datetime: زمان تراکنش
  • درگاه‌های دیگر در خروجی خام (`$tempPaymentGateway`) بازگردانده می‌شوند.
در حالت پرداخت ناموفق:
اگر behpardakht باشد → پیام خطا از $result->message گرفته می‌شود و SaleOrderId به عنوان tracking_code بازگردانده می‌شود.
✅ پاسخ نهایی JSON با وضعیت 200 (در موفقیت) یا 400/404 در خطا بازگردانده می‌شود.

Response Samples

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

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

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

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

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

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

Technical Notes

  • منبع اصلی داده: جدول payment_gateway (اطلاعات تراکنش) + جدول gateways (متادیتای درگاه).
  • پارامتر serial_id از Query دریافت می‌شود و باید منحصربه‌فرد باشد.
  • فیلد status=3 معرف پرداخت نهایی و تایید شده است.
  • درگاه‌های اختصاصی (Behpardakht و Sep) دارای فیلد JSON result هستند که حاوی داده‌های تراکنش مانند شماره کارت و کد مرجع است.
  • در صورت عدم match درگاه خاص، پاسخ به صورت خام (Object کامل DB row) بازگردانده می‌شود.