#P1785
GET /b2c/v1/credit-card
Get Credit Card Detail
این اندپوینت برای دریافت اطلاعات یک کارت اعتباری خاص استفاده میشود.
ویژگی امنیتی (Security Masking): سیستم به طور خودکار بررسی میکند که آیا کاربر درخواستدهنده (`operator`) همان مالک کارت (`passenger_id`) است یا خیر:
- اگر مالک باشد: اطلاعات کامل شامل `cvv2`، تاریخ انقضا و شماره کامل کارت نمایش داده میشود.
- اگر مالک نباشد: شماره کارت به صورت ماسک شده (مثلاً `6037****1234`) برمیگردد و فیلدهای حساس (`cvv2`, `expire_date`) حذف میشوند.
Fetch Credit Card
URL:
/b2c/v1/credit-cardMethod: GET
Controller: CreditCards@showCreditCard
Auth: Required (Bearer Token)
Headers (الزامی)
| Header Name | Description |
|---|---|
| Authorization | توکن احراز هویت (Bearer Token). |
Query Parameters (فیلترها)
| Parameter | Type | Description |
|---|---|---|
| id | Integer | (اختیاری) جستجو بر اساس شناسه کارت در سیستم. |
| passenger_id | Integer | (اختیاری) جستجو بر اساس شناسه مسافر (مالک کارت). |
Response Structure
| Key | Type | Description |
|---|---|---|
| payload.id | Integer | شناسه رکورد کارت. |
| payload.status | Integer | وضعیت کارت (معمولاً 1 فعال). |
| payload.card.number | String | شماره کارت (کامل یا ماسک شده بسته به مالکیت). |
| payload.card.withdrawal_limit | Integer/Bool | سقف برداشت (در صورت وجود). |
| payload.card.blocked_amount | Integer/Bool | مبلغ بلوکه شده. |
| payload.card.cvv2 | String | (شرطی) فقط اگر کاربر لاگین شده مالک کارت باشد ارسال میشود. |
| payload.card.expire_date | String | (شرطی) فقط اگر کاربر لاگین شده مالک کارت باشد ارسال میشود. |
| payload.passenger | Object | اطلاعات صاحب کارت. |
Example Responses
۱. موفقیت آمیز - مالک کارت (نمایش کامل):
{
"payload": {
"id": 101,
"status": 1,
"card": {
"number": "6037991122334455",
"withdrawal_limit": 50000000,
"blocked_amount": 0,
"cvv2": "1234", // موجود است
"expire_date": "04/05" // موجود است
},
"passenger": {
"id": 55,
"first_name": "علی",
"last_name": "محمدی"
}
},
"meta": {
"timestamp": 1702160000
}
}
۲. موفقیت آمیز - غیر مالک (اطلاعات امنیتی مخفی):
{
"payload": {
"id": 101,
"status": 1,
"card": {
"number": "6037********4455", // ماسک شده
"withdrawal_limit": false,
"blocked_amount": false
// فیلدهای cvv2 و expire_date وجود ندارند
},
"passenger": {
"id": 55,
"first_name": "علی",
"last_name": "محمدی"
}
},
"meta": {
"timestamp": 1702160010
}
}
۳. خطا - یافت نشد:
{
"error": {
"code": 1000,
"message": "کارت اعتباری پیدا نشد."
},
"meta": {
"timestamp": 1702160020
}
}
Technical Logic
Request (GET)
↓
Database Query
Join `credit_cards` with `customers`
Filter by `id` OR `passenger_id` from Request
Join `credit_cards` with `customers`
Filter by `id` OR `passenger_id` from Request
↓
Record Found?
↓ Yes
Check Ownership
request->operator->id == card->passenger_id↓ No
Error 422
"Card Not Found"
"Card Not Found"
↓
Is Owner?
↓ Yes
Return Full Data
Include `cvv2`, `expire_date`
Real Card Number
Include `cvv2`, `expire_date`
Real Card Number
↓ No
Return Safe Data
Exclude Sensitive Fields
Mask Number:
Exclude Sensitive Fields
Mask Number:
1234********5678