یک سایت لاراول داریم که میخواهیم موارد زیر روی آن اعمال شود
لطفا فقط در صورتی که تخصص کافی بر روی لاراول دارید ارسال پیشنهاد نمایید:
- عضویت کاربران (Registration)
1.1 روشهای عضویت
ثبتنام با شماره موبایل (پیشنهاد اصلی)
ثبتنام با ایمیل
فعالسازی حساب با کد OTP پیامکی یا لینک ایمیلی
1.2 اطلاعات مورد نیاز
نام و نام خانوادگی
شماره موبایل (Unique)
ایمیل (اختیاری اما توصیهشده)
رمز عبور (حداقل 8 کاراکتر، شامل حرف و عدد)
تکرار رمز عبور
پذیرش قوانین و مقررات (Checkbox اجباری)
1.3 اعتبارسنجی
بررسی تکراری بودن شماره یا ایمیل
محدودیت تلاش ناموفق برای ثبت OTP
هش رمز عبور با bcrypt
پیام خطای واضح برای کاربر
1.4 فعالسازی حساب
ارسال کد OTP پیامکی یا ایمیلی
محدودیت زمان اعتبار کد (مثلاً ۲ دقیقه)
امکان ارسال مجدد کد با محدودیت (Rate Limit)
- ورود کاربران (Login)
2.1 روشهای ورود
ورود با شماره موبایل + رمز عبور
ورود با ایمیل + رمز عبور
ورود با OTP (بدون رمز عبور)
2.2 امنیت ورود
محدودیت تعداد تلاش ناموفق (Laravel Throttle)
ذخیره لاگ ورود (IP، زمان، مرورگر)
امکان خروج از همه نشستها
2.3 بازیابی رمز عبور
ارسال لینک بازیابی به ایمیل یا OTP به موبایل
تعیین رمز جدید با رعایت قوانین امنیتی
- سبد خرید (Shopping Cart)
3.1 ویژگیها
افزودن کالا بدون نیاز به لاگین (Session-based)
تبدیل سبد مهمان به سبد کاربر پس از لاگین
امکان:
افزایش/کاهش تعداد
حذف محصول
محاسبه خودکار قیمت نهایی
3.2 محاسبات مالی
قیمت واحد محصول
تخفیف محصول (در صورت وجود)
مالیات (در صورت فعال بودن)
هزینه ارسال (برای کالاهای فیزیکی)
جمع کل نهایی
- فرآیند تسویه حساب (Checkout Flow)مرحله 1: کلیک روی «تسویه حساب»
بررسی احراز هویت:
IF user is NOT authenticated
redirect to Login / Register page
ELSE
redirect to Address & Checkout page
مرحله 2: صفحه لاگین / ثبتنام
کاربران قبلی: ورود با شماره موبایل + رمز یا OTP
کاربران جدید: ثبتنام سریع با شماره موبایل + OTP و پذیرش قوانین
پس از موفقیت:
انتقال سبد مهمان به کاربر
بازگشت به صفحه تسویه حساب
مرحله 3: وارد کردن یا انتخاب آدرس
انتخاب آدرس ذخیرهشده قبلی
افزودن آدرس جدید:
نام تحویلگیرنده
شماره تماس
استان / شهر
آدرس کامل
کد پستی
مرحله 4: بررسی نهایی سفارش
نمایش لیست محصولات، تعداد، قیمت، هزینه ارسال و جمع کل
انتخاب آدرس و روش پرداخت
دکمه «ثبت نهایی سفارش و پرداخت»
- روشهای پرداخت
5.1 پرداخت آنلاین (درگاه مستقیم)
اتصال به درگاههای بانکی (زرینپال، IDPay و…)
استفاده از Callback امن
بررسی وضعیت تراکنش (موفق/ناموفق)
ذخیره اطلاعات تراکنش:
Amount
RefID
Gateway Name
5.2 کارت به کارت
نمایش شماره کارت و نام صاحب حساب
آپلود تصویر فیش واریزی
ثبت شماره پیگیری
وضعیت سفارش: «در انتظار تایید مالی»
5.3 نکات فنی
ایجاد رکورد سفارش قبل از پرداخت
تغییر وضعیت پس از پرداخت موفق
ثبت IP و زمان تراکنش
- مدیریت سفارشها (Orders)وضعیتهای سفارش
در انتظار پرداخت
پرداخت شده
در انتظار تایید کارت به کارت
تایید شده
لغو شده
عودت داده شده
لاگ سفارش
ثبت تغییر وضعیت با تاریخ و کاربر
جلوگیری از تغییر غیرمجاز
- صفحه قوانین و مقررات (Terms & Conditions)محتوای الزامیشرایط عضویت و استفاده از سایت
مسئولیت اطلاعات حساب کاربری
شرایط پرداخت و بازگشت وجه
سیاست حریم خصوصی
قوانین مربوط به کالاهای دیجیتال و فیزیکی
شرایط لغو سفارش
نکات فنی
پذیرش قوانین هنگام ثبتنام و پرداخت (Checkbox اجباری)
ثبت زمان و IP پذیرش قوانین
- الزامات فنی LaravelMiddlewareRoute::middleware(['auth'])->group(function () { Route::get('/checkout/address', ...); Route::post('/checkout/confirm', ...);});
حفظ مسیر بازگشت پس از ورود
session(['url.intended' => route('checkout.address')]);
انتقال سبد مهمان به کاربر
هنگام لاگین، Merge Session Cart با Cart دیتابیس
جداول اصلی
users, carts, orders, order_items, payments, transactions, addresses, tickets, logs
امنیت و لاگها
CSRF Protection فعال
ذخیره لاگ تراکنشها و لاگ ورود
محدودیت تلاش OTP و لاگین