Skip to main content
#P1778

POST /b2c/v1/auth/otp


B2C Customer Authentication (OTP)

این اندپوینت وظیفه مدیریت ورود و ثبت‌نام کاربران در وب‌سایت‌های فروش (B2C) را بر عهده دارد.
سیستم از مکانیزم رمز یکبار مصرف (OTP) استفاده می‌کند. نکته کلیدی این است که اگر شماره موبایل در سیستم وجود نداشته باشد، کاربر به صورت خودکار (Auto-Register) ثبت‌نام شده و شناسه مسافر (`passenger_id`) ایجاد می‌گردد.




Request OTP / Login

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

Body Parameters (الزامی)

Parameter Type Description
mobile String شماره موبایل کاربر.
سیستم فرمت را بررسی کرده و در صورت نیاز عدد '0' را به ابتدای آن اضافه می‌کند.
branch Integer شناسه شعبه فعال (Office ID).
در صورت ثبت‌نام جدید، کاربر به این شعبه منتسب می‌شود.

Response Structure

Key Description
status بولین (true/false) که موفقیت عملیات ارسال پیامک را نشان می‌دهد.
data.passenger_id شناسه منحصر به فرد کاربر (Customer ID) در دیتابیس. چه کاربر جدید باشد چه قدیمی، این شناسه برگردانده می‌شود.
message پیام متنی وضعیت عملیات جهت نمایش به کاربر.

Example Responses

۱. موفقیت آمیز (201 Created):

{
    "status": true,
    "time": 1702134567,
    "data": {
        "passenger_id": 5421
    },
    "message": "OTP با موفقیت ارسال گردید."
}

۲. خطای محدودیت ارسال (422 Unprocessable Entity - Code 1204):

{
    "status": false,
    "code": 1204,
    "message": "تعداد درخواست های کاربر بیش از حد مجاز بوده است. لطفا 3 ساعت دیگر اقدام نمائید."
}

۳. خطای پنل پیامک (422 Unprocessable Entity - Code 1202):

{
    "status": false,
    "code": 1202,
    "message": "پیامک OTP ارسال نشد. مشکلی رخ داده است. لطفا دوباره تلاش کنید",
    "trace": { ... }
}

Technical Logic

Request (Mobile + Branch)
Normalize Mobile
Ensure starts with '0'
Convert Persian nums to English
Exist in `customers`?
↓ No
Auto Register
INSERT INTO customers
Branch: [$branch]
↓ Yes
Select ID
Generate OTP
StaticController::generateOtp
Send SMS
StaticController::sendNotification
Log to SnailJob Queue
Return JSON (Passenger ID)