faraztahari
1 سال پیش توسط faraztahari مطرح شد
1 پاسخ

مشکل در فراخوانی یک مقدار در لاراول

سلام دوستان من یک به یک مشکلی بر خوردم برای قسمت درگاه پرداخت سایتم، من قبل از اتصال به درگاه پرداخت سفارش رو ایجاد میکنم در یک تابع دیگر، حالا میخوام Id اون سقارش به همراه یک متفیر دیگه رو برگردونم و بفرستم برای تابع ارسال به سمت درگاه ولی نمیتونم مقدار رو برگردونم، وقتی dd میگیرم به من مقادیر ایجاد شده رو نمایش میده ولی نمیدونم چجوری میتونم از متغییر هاش استفاده کنم.... :(


ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام دوست عزیز
ببینید در مرحله اول که پیشنهاد میکنم برای درگاه پرداخت از پکیج شتابیت استفاده کنید حتما
در مرحله ی دوم شماره سفارش رو نمیفرسته این پکیج
یک کد دیگه تولید میکنه خودش و شما باید جدول دیگری طراحی کنی برای سفارشت و اون کد رو با مثلا اگر چند درگاه داری اسم بانک و اطلاعات برگشتی از بانک مثل چهار رقم اول و اخر کارت شخص و status پرداخت و زمانو اینجور چیزا توی اون جدول ذخیره کنی
رابطه ی یک به چند هست چون هر سفارش میتونه چند پرداخت ناموفق داشته باشه و باید بمونه اطلاعاتش و یا ممکنه جوری طراحی کنی که بعد ویرایش سفارش با تغییر مبلغ مانده بتونه بره درگاه که پیشنهاد نمیشه معمولا
بعد از پرداخت خود بانک اون کد که حالا اصطلاحا RefId میتونه باشه یا uuid یا resnumber رو به شما برمیگردونه و شما سرچ میکنی توی اون جدول دیگری که ساختی و مبلغ سفارش رو هم از دیتابیس خودت برمیداری و دوباره برای اعتبار سنجی مبلغ پرداختی میدی به بانک که ببینه درست بوده پرداخت و مبلغ یا نه
من نمونه کدش رو قرار میدم برات

اینجا لحظه انتقال به بانک هست و متغییر transactionId توسط خود شتابیت به همین شکل زیر به ما داده میشه و باید ذخیرش کنیم

            $invoice = (new Invoice)->amount($order->payable/10);
            return shetabitPayment::callbackUrl(route('payment.callback'))->purchase($invoice, function($driver, $transactionId) use($order) {
                $order->resnumbers()->create(['RefId'=>$transactionId]);
            })->pay()->render();

توی بازگشت هم مسیری که مشخص کردی برای بانک کد زیر میتونه استفاده بشه

        try {
            $order=Resnumber::where('RefId',$request->RefId)->firstOrFail()->order;
            $receipt = shetabitPayment::amount($order->payable/10)->transactionId($request->RefId)->verify();
            $resnumber=Resnumber::where('RefId',$request->RefId)->firstOrFail();

مبلغ سفارش رو وقتی بانک نشونت میده حتما از دیتابیس خودت دریافت کنی و چک کنی
توی try catch که قرار بدی با firstOrFail و یا verify اگر خطایی پیش بیاد دیگ خودش میره تو catch
دقت کنی بعضی بانکا تومان میگیرن ریال چک میکن حساب کتاب نداره هر بانکی یه جوره


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

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