مشکل در متد checkout در بخش payment

پرسیده شده
فعالیت 1515 روز پیش
دیده شده 913 بار
0

با عرض سلام 

در BasketController متد زیر مشکل دارد ، متغیر order مقدار null رو برمیگردونه
 

BasketController.php codes :

 private $basket;
    private $transaction;
    public function __construct(Basket $basket , Transaction $transaction)
    {
        $this->middleware('auth')->only(['checkoutForm','checkout']);
        $this->basket = $basket;
        $this->transaction = $transaction;

    }
public function checkout(Request $request)
    {
        $this->validateForm($request);
        $order =  $this->transaction->checkout();
        if(!is_null($order)){
            return redirect()->route('home')->with('success', __('payment.your order has been registered', ['orderNum' => $order->id]));
        }
        return 'Order is Empty';
    }
-----------------------------------------------------
Transaction.php codes :

 public function checkout()
    {
        DB::beginTransaction();
        try{
            $order = $this->makeOrder();
            $payment = $this->makePayment($order);
            DB::commit();
        }catch(\Exception $e){
            DB::rollBack();
            return null;
        }
        if ($payment->isOnline()) {
            $this->gatewayFactory()->pay($order);
        }
        $this->completeOrder($order);
        return $order;
    }

 private function makeOrder()
    {
        $order = Order::create([
            'user_id' => auth()->user()->id,
            'code' => bin2hex(str_random(16)),
            'amount' => $this->basket->subTotal()
        ]);
        $order->products()->attach($this->products());
        return $order;
    }
    private function makePayment($order)
    {
        return Payment::create([
            'order_id' => $order->id,
            'pay_method' => $this->request->pay_method,
            'amount' => $order->amount,
        ]);
    }

private function gatewayFactory()
    {
        $gateway = [
            'saman' => Saman::class,
            'pasargad' => Pasargad::class
        ][$this->request->gateway];

        return resolve($gateway);
    }
 private function completeOrder($order)
    {
        $this->normalizeQuantity($order); 
        event(new OrderRegistered($order));
        $this->basket->clear();
    }

 

فایل پیوست

مجید صادقی زاده
مجید صادقی زاده

18 اسفند 98

0
حذف شده

استاد من بررسی کردم ، دقیقا خطایی که میده برای دستور زیر هست

$order =  $this->transaction->checkout();

که توی متد checkout در فایل BasketController وجود دارد ، که میرسه به متدهای makeOrder و makePayment ، متد اولی یعنی makeOrder درست کار میکنه اما متد دوم دقیقا برای اون موردی که توی یه پست دیگه خدمتتون گفته بودم بخاطر خالی بودن فیلد gateway خطا میده ، لطفا راهنمایی بفرمایید چطوری این فیلد رو در این بخش هندل کنم ، توی حالتی که کدهاش بالا موجود هست این فیلد وجود نداره

فایل پیوست

مجید صادقی زاده

توسط

مجید صادقی زاده

18 اسفند 98

حذف شده
وقتی از متد create برای افزودن تو دیتابیس استفاده میکنیم ، فقط فیلدهایی که اختیاری هستند و مقدار پیش فرض دارند رو می تونیم مقدار دهی نکنیم ، اینجا فیلد gatewaty مقدار پیش فرضی نداره
مجید صادقی زاده

18 اسفند 98

0
حذف شده

به این شکل مقدار دهی کردم

private function makePayment($order)
{
    return Payment::create([
        'order_id' => $order->id,
        'pay_method' => $this->request->pay_method,
        'amount' => $order->amount,
        'gateway' => $this->request->gateway,
    ]);
}

 

فایل پیوست

مجید صادقی زاده

توسط

مجید صادقی زاده

18 اسفند 98

0
حذف شده

سلام ... 

نیازی نیست که مقدار gateway رو داخل متد makePayment ایجاد کنید ... داخل ویدیو هم من اینکار رو انجام ندادم .. ویدیو و یا سورس کد رو با دقت مطالعه کنید متوجه مشکل خواهید شد.

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

21 اسفند 98

0
حذف شده

استاد من طبق آموزش پیش رفتم خطا داشتم ، یکی یکی بررسی کردم به اینجا رسیدم که این خط رو اضاف کنم 

توی ویدئوهای مربوط به پروژه های دیگه یه خط کد دیگه ای اضافه کردید که فرصت نکردم هنوز اونو بررسی کنم که این خطی که نوشتم رو بردارم برنامه درست کار میکنه با اون یا نه ، حتما بررسی کردم نتیجه رو میزارم

فایل پیوست

مجید صادقی زاده

توسط

مجید صادقی زاده

21 اسفند 98