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