سلام چطور میشه خرید چندگانه یا همون سبد خرید مثل دیجی کالا داشت و پس از پرداخت اجازه دانلود فایل هایی که خریده به کاربر داده بشه و تراکنش ها بصورت جداگانه ثبت بشه @hesammousavi @mohsenbostan
وقتی شما پرداختی رو با موفقیت انجام دادی یه نشونه باید مبنی بر اینکه پرداختت انجام شده استو سیستم به نام خودت برات ذخیره میکنه. وقتی سیستم به اون لینکهای دانلود میرسه این نشونه پرداختو در مشخصاتت جستجو میکنه اگه این نشونه رو داشتی اجازه نمایش و دانلود لینک ها رو بهت میده. در جدول order فیلدی به نام pay_status برای هر سفارشت ایجاد میشه به طور پیش فرض مقدارش false است اگه پرداخت کردی با توجه به مقدار true بودن این فیلد اجازه دانلود بهت داده میشه.برای خرید هم نیاز به چند جدول داری.
یه جدول که برای محصولات فروشگاه هست.
یه جدول که برای کاربران سایت است
یه جدول برای سفارشات هست
یه جدول هم برای محصولاتی که به سبد خرید اضافه می کنی و قصد خرید اونهارو داری.
@sinaa.hajebi
@hosseinshirinegad98 مرسی از جوابتون من از سبد خرید استفاده میکنم فایل هایی که میفروشم دانلودی هستن اگر میشه بیشتر راهنمایی کنید
من با جدول محصولات و کاربرات کاری ندارم اما دو تا جدول این وسط هستن که فیلدهاشو برات لیست میکنم.
1- جدول سفارشات که باید دارای فیلدهای زیر باشه(orders)
id | user_id | pay_status |
2 - جدول محصولات سفارش داده شده دارای فیلدهای (order_product)
id | order_id | product_id |
البته این جداول فیلدهای دیگه ای هم میتونن داشته باشن و باید هم داشته باشن در جدول orders دوتا مقدار که بانک بعد پرداخت موفقیت آمیز بهت برمی گردونه رو باید ذخیره کنی. @sinaa.hajebi
میتونی از این دوستان بیشتر کمک بگیری
@mohsenbostan
@forughi.vahid
@ali.bayat
@sinaa.hajebi
@sinaa.hajebi
فرض کنید شما جدولی برای ذخیره محصولاتتون دارید و یسری ریکورد محصول اضافه کردید و فایل محصولات رو هم آپلود کردید و مسیر هر محصول رو توی جدول محصولات مشخص کردید . خوب حالا دو تا بحث هست ،
. اولا یه راوت باید درست کنید که کاربرا بتونن با استفاده از اون فایل محصول مورد نظر رو دانلود کنن . مثلا
Route::get('/products/{product}/download','Controller@download'))
. دوم فقط کاربرانی به اون راوت دسترسی دارند که اون محصول رو خریداری کرده باشند ، اولین قدم اینه که شما یه جدول سفارشات داشته باشید و اطلاعات سفارش رو مثل آیدی محصول ، آیدی کاربر ، هزینه و وضعیت پرداخت و ... رو توش ذخیره کنید ( اگر هر سفارش میتونه چند محصول داشته باشه میتونید بین محصولات و سفارشات پیوت تیبل درست کنید) . قدم دوم اینه که مشخص کنید آیا این کاربر به راوت دانلود فلان محصول دسترسی داره یا خیر . خوب خیلی راحت میتونید توی جدول سفارشات کاربر بگردید و در صورت وجود سفارش با وضعیت success برای محصول مورد نظر ، فایل رو از استوریج برای کاربر دانلود کنید. یا اینکه یه تیبل جدا درست کنید و محصولات کاربرا رو توش ذخیره کنید .
برای چک کردن دسترسی هم میتونید از policy یا یه if توی کنترلر استفاده کنید.
. برای هر مسئله راههای زیادی وجود داره . هر برنامه نویس یک راه حل ، سعی کنید علاوه بر اینکه به best practice ها توجه میکنید ، از خلاقیت خودتون هم برای حل مسائل استفاده کنید.
@hosseinshirinegad98 بازم مرسی برای جوابتون ولی من ساخت جداول رو میدونم ولی دو محصول رو نمیدونم چطور به درگاه بفرستم و برش گردونم چون درگاه فقط به من یک جواب پاس میده
منظور شما از اینکه میگید دو محصول رو نمیدونم چطور به درگاه بفرستم چیه؟افزودن به سبده خریدیو میگید؟
@sinaa.hajebi
چیزی که واسه درگاه مهمه هزینه کل هست ، نیازی نیست شما به درگاه بگید چند تا محصول توی این پرداخت دارید میفروشید ، یه amount که جمع قیمت کل محصولات اون سفارش هست و یک callback به درگاه میدید ، یه transid بهتون میده که توی جدول سفارشات ثبتش میکنید و بعد از اتمام عملیات پرداخت transid رو میفرسته به اون راوت callback , شما از روی این transid که بهتون میده توی جدول سفارشات ، سفارش مورد نظر رو پیدا میکنید ، همونطور که توی پیام قبلی هم گفتم برای اینکه مشخص کنید هر سفارش چند محصول داره باید از پیوت تیبل order_product استفاده کنید ، در اصل ارتباط شما با درگاه فقط transid هست ، و این جدول سفارشات شماست که مشخص میکنه این پرداخت برای کدوم محصولات انجام شده.
@hosseinshirinegad98 @forughi.vahid دوستان منظورم اینه من با یک تراکنش موفقی که درگاه بهم پاس میده چطور دوتا محصول رو تو دیتابیس بعنوان تراکنش موفق ثبت کنم؟
@sinaa.hajebi
توی پیام های قبلی هم توضیح دادم خدمتتون، برای اینکه مشخص کنید یک سفارش چند محصول داره باید پیوت تیبل درست کنید ، یک جدول به اسم order_product میسازید و فیلد های product_id , order_id رو توش قرار میدید ، چون ممکنه اطلاعات محصولات بعد ها تغییر کنه بهتره فیلد های دیگه ای مثل price و .... رو هم توی این جدول اضافه کنید،
حالا هر سفارشی که ایجاد میشه محصولات مربوط به سفارش رو توی این جدول اضافه می کنید و با تراکتش موفق در واقع تمام محصولات این سفارش خریداری شده اند.
لطفا با دقت مطالعه بفرمایید ،سوالی بود در خدمتم
شما یه تراکنش داری مثلا با چند تا محصول یا یه محصول. به ازای یه فروش ، شما باید در جدول سفارشات یه رکورد برای سفارشت ثبت کنی حالا تو اون تراکنش فروشت هر چند تا محصول داشته باشی فرقی نداره. یه رکورد برای سفارشت ثبت میکنی تو تیبل سفارشات با وضعیت پرداخت شده.
من به شما جداول موردنیازو گفتم .
گفتم به شما : شما ابتدا یه سفارش ایجاد میکنی بعد این سفارش چند تا محصول یا یه محصول میتونه داشته باشه محصولات این سفارشو در یک جدول دیگه قرار میدی. حالا متوجه شدی؟
شما دو تا تیبل میخوای
یکی برای سفارش و دیگری برای محصول سفارش. دیگه محصولات رو تو جدول سفارش ذخیره نمی کنی از یه جدول دیگه برای ذخیره محصولات سفارش استفاده میکنن.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟