sinaa
5 سال پیش توسط sinaa مطرح شد
11 پاسخ

خرید چندگانه و ثبت تراکنش

سلام چطور میشه خرید چندگانه یا همون سبد خرید مثل دیجی کالا داشت و پس از پرداخت اجازه دانلود فایل هایی که خریده به کاربر داده بشه و تراکنش ها بصورت جداگانه ثبت بشه @hesammousavi @mohsenbostan


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 5 سال پیش مطرح شد
1

وقتی شما پرداختی رو با موفقیت انجام دادی یه نشونه باید مبنی بر اینکه پرداختت انجام شده استو سیستم به نام خودت برات ذخیره میکنه. وقتی سیستم به اون لینکهای دانلود میرسه این نشونه پرداختو در مشخصاتت جستجو میکنه اگه این نشونه رو داشتی اجازه نمایش و دانلود لینک ها رو بهت میده. در جدول order فیلدی به نام pay_status برای هر سفارشت ایجاد میشه به طور پیش فرض مقدارش false است اگه پرداخت کردی با توجه به مقدار true بودن این فیلد اجازه دانلود بهت داده میشه.برای خرید هم نیاز به چند جدول داری.
یه جدول که برای محصولات فروشگاه هست.
یه جدول که برای کاربران سایت است
یه جدول برای سفارشات هست
یه جدول هم برای محصولاتی که به سبد خرید اضافه می کنی و قصد خرید اونهارو داری.
@sinaa.hajebi


sinaa
@sinaa.hajebi 5 سال پیش مطرح شد
0

@hosseinshirinegad98 مرسی از جوابتون من از سبد خرید استفاده میکنم فایل هایی که میفروشم دانلودی هستن اگر میشه بیشتر راهنمایی کنید


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 5 سال پیش مطرح شد
1

من با جدول محصولات و کاربرات کاری ندارم اما دو تا جدول این وسط هستن که فیلدهاشو برات لیست میکنم.
1- جدول سفارشات که باید دارای فیلدهای زیر باشه(orders)
id | user_id | pay_status |
2 - جدول محصولات سفارش داده شده دارای فیلدهای (order_product)
id | order_id | product_id |
البته این جداول فیلدهای دیگه ای هم میتونن داشته باشن و باید هم داشته باشن در جدول orders دوتا مقدار که بانک بعد پرداخت موفقیت آمیز بهت برمی گردونه رو باید ذخیره کنی. @sinaa.hajebi


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 5 سال پیش مطرح شد
0

میتونی از این دوستان بیشتر کمک بگیری
@mohsenbostan
@forughi.vahid
@ali.bayat
@sinaa.hajebi


وحید
تخصص : Fullstack
@forughi.vahid 5 سال پیش مطرح شد
1

@sinaa.hajebi
فرض کنید شما جدولی برای ذخیره محصولاتتون دارید و یسری ریکورد محصول اضافه کردید و فایل محصولات رو هم آپلود کردید و مسیر هر محصول رو توی جدول محصولات مشخص کردید . خوب حالا دو تا بحث هست ،
. اولا یه راوت باید درست کنید که کاربرا بتونن با استفاده از اون فایل محصول مورد نظر رو دانلود کنن . مثلا

Route::get('/products/{product}/download','Controller@download'))

. دوم فقط کاربرانی به اون راوت دسترسی دارند که اون محصول رو خریداری کرده باشند ، اولین قدم اینه که شما یه جدول سفارشات داشته باشید و اطلاعات سفارش رو مثل آیدی محصول ، آیدی کاربر ، هزینه و وضعیت پرداخت و ... رو توش ذخیره کنید ( اگر هر سفارش میتونه چند محصول داشته باشه میتونید بین محصولات و سفارشات پیوت تیبل درست کنید) . قدم دوم اینه که مشخص کنید آیا این کاربر به راوت دانلود فلان محصول دسترسی داره یا خیر . خوب خیلی راحت میتونید توی جدول سفارشات کاربر بگردید و در صورت وجود سفارش با وضعیت success برای محصول مورد نظر ، فایل رو از استوریج برای کاربر دانلود کنید. یا اینکه یه تیبل جدا درست کنید و محصولات کاربرا رو توش ذخیره کنید .
برای چک کردن دسترسی هم میتونید از policy یا یه if توی کنترلر استفاده کنید.
. برای هر مسئله راههای زیادی وجود داره . هر برنامه نویس یک راه حل ، سعی کنید علاوه بر اینکه به best practice ها توجه میکنید ، از خلاقیت خودتون هم برای حل مسائل استفاده کنید.


sinaa
@sinaa.hajebi 5 سال پیش مطرح شد
0

@hosseinshirinegad98 بازم مرسی برای جوابتون ولی من ساخت جداول رو میدونم ولی دو محصول رو نمیدونم چطور به درگاه بفرستم و برش گردونم چون درگاه فقط به من یک جواب پاس میده


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 5 سال پیش مطرح شد
1

منظور شما از اینکه میگید دو محصول رو نمیدونم چطور به درگاه بفرستم چیه؟افزودن به سبده خریدیو میگید؟


وحید
تخصص : Fullstack
@forughi.vahid 5 سال پیش مطرح شد
1

@sinaa.hajebi
چیزی که واسه درگاه مهمه هزینه کل هست ، نیازی نیست شما به درگاه بگید چند تا محصول توی این پرداخت دارید میفروشید ، یه amount که جمع قیمت کل محصولات اون سفارش هست و یک callback به درگاه میدید ، یه transid بهتون میده که توی جدول سفارشات ثبتش میکنید و بعد از اتمام عملیات پرداخت transid رو میفرسته به اون راوت callback , شما از روی این transid که بهتون میده توی جدول سفارشات ، سفارش مورد نظر رو پیدا میکنید ، همونطور که توی پیام قبلی هم گفتم برای اینکه مشخص کنید هر سفارش چند محصول داره باید از پیوت تیبل order_product استفاده کنید ، در اصل ارتباط شما با درگاه فقط transid هست ، و این جدول سفارشات شماست که مشخص میکنه این پرداخت برای کدوم محصولات انجام شده.


sinaa
@sinaa.hajebi 5 سال پیش مطرح شد
0

@hosseinshirinegad98 @forughi.vahid دوستان منظورم اینه من با یک تراکنش موفقی که درگاه بهم پاس میده چطور دوتا محصول رو تو دیتابیس بعنوان تراکنش موفق ثبت کنم؟


وحید
تخصص : Fullstack
@forughi.vahid 5 سال پیش آپدیت شد
0

@sinaa.hajebi
توی پیام های قبلی هم توضیح دادم خدمتتون، برای اینکه مشخص کنید یک سفارش چند محصول داره باید پیوت تیبل درست کنید ، یک جدول به اسم order_product میسازید و فیلد های product_id , order_id رو توش قرار میدید ، چون ممکنه اطلاعات محصولات بعد ها تغییر کنه بهتره فیلد های دیگه ای مثل price و .... رو هم توی این جدول اضافه کنید،
حالا هر سفارشی که ایجاد میشه محصولات مربوط به سفارش رو توی این جدول اضافه می کنید و با تراکتش موفق در واقع تمام محصولات این سفارش خریداری شده اند.
لطفا با دقت مطالعه بفرمایید ،سوالی بود در خدمتم


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 5 سال پیش آپدیت شد
0

شما یه تراکنش داری مثلا با چند تا محصول یا یه محصول. به ازای یه فروش ، شما باید در جدول سفارشات یه رکورد برای سفارشت ثبت کنی حالا تو اون تراکنش فروشت هر چند تا محصول داشته باشی فرقی نداره. یه رکورد برای سفارشت ثبت میکنی تو تیبل سفارشات با وضعیت پرداخت شده.
من به شما جداول موردنیازو گفتم .
گفتم به شما : شما ابتدا یه سفارش ایجاد میکنی بعد این سفارش چند تا محصول یا یه محصول میتونه داشته باشه محصولات این سفارشو در یک جدول دیگه قرار میدی. حالا متوجه شدی؟
شما دو تا تیبل میخوای
یکی برای سفارش و دیگری برای محصول سفارش. دیگه محصولات رو تو جدول سفارش ذخیره نمی کنی از یه جدول دیگه برای ذخیره محصولات سفارش استفاده میکنن.

@sinaa.hajebi


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام