Skip to main content
#P1779

POST /b2c/v1/auth/submit


B2C Verify OTP & Login

این اندپوینت مرحله نهایی احراز هویت است.
کلاینت کد دریافتی (OTP) را به همراه شناسه مسافر ارسال می‌کند. سیستم کد را در جدول otp_requests اعتبارسنجی کرده (بررسی انقضا و عدم استفاده قبلی) و در صورت صحت، وضعیت کد را به "استفاده شده" تغییر می‌دهد و یک JWT Token با اعتبار ۷ روز برای کاربر صادر می‌کند.




Submit OTP

URL: /b2c/v1/auth/submit
Method: POST
Controller: V1UserController@authSubmit
Auth: Public (Guest Access)

Headers (الزامی)

Header Name Description
Domain دامنه سایت فروش (جهت ثبت در Payload توکن به عنوان iss و aud).

Body Parameters (الزامی)

Parameter Type Description
passenger_id Integer شناسه مسافر (دریافت شده در پاسخ مرحله قبل).
otp String/Int کد یکبار مصرف دریافتی در پیامک.
branch Integer شناسه شعبه (جهت ثبت در کلیم brn توکن).

Response Structure

Key Description
status وضعیت عملیات (true).
access_token توکن احراز هویت (JWT) که باید در هدر Authorization: Bearer ... درخواست‌های بعدی ارسال شود.
مدت اعتبار: ۶۰۴۸۰۰ ثانیه (یک هفته).
user آبجکت حاوی اطلاعات پروفایل کاربر (نام، نام خانوادگی، موبایل و کدملی).

Example Responses

۱. موفقیت آمیز (Login Success):

{
    "status": true,
    "user": {
        "uuid": 5421,
        "from": "user",
        "role": "passenger",
        "type": "passenger",
        "level": 1,
        "data": {
            "title": {
                "fa": "محمد محمدی",
                "en": "Mohammad Mohammadi"
            },
            "sex": "male",
            "first_name": "Mohammad",
            "last_name": "Mohammadi",
            "first_name_fa": "محمد",
            "last_name_fa": "محمدی",
            "mobile": "09121234567",
            "national_code": "0012345678"
        }
    },
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

۲. خطای نامعتبر بودن کد (422 Unprocessable Entity - Code 1209):

{
    "status": false,
    "code": 1209,
    "message": "رمز یکبار مصرف وارد شده معتبر نمی باشد."
}

Technical Logic

Request (ID + OTP)
Validate OTP
Check table `otp_requests`
Match ID & Code AND
Not Expired AND Not Used
↓ Invalid
Error 1209
Return 422 JSON
↓ Valid
Update OTP
Set is_used = 1
Fetch User Info
SELECT from `customers`
Detect User Agent (Device)
Generate JWT
Claims: uuid, branch, ip, domain
Exp: +7 Days
Return Token + User Data