0

I'm building an ecommerce website with Laravel 8, and I'm trying to incorporate real time shipping rates with Shippo API. I was able to install Shippo via composer, but I get an error saying too few arguements or undefined variable. I'm borrowing some code from article regarding Shippo, but I keep getting the errors. Are you having a similar problem? Did you solve it? Any help is appreciated. Here is my controller code,

<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\ShipDivision;
use App\Models\ShipDistrict;
use App\Models\ShipState;
use App\Models\Product;
use App\Services\Shipping_New;
use App\Models\User;
use Auth;
use\App\Http\Controllers\Frontend\CartController;
use Gloudemans\Shoppingcart\Facades\Cart;
use Carbon\Carbon;

class CheckoutController extends Controller
{

  /**
   * @var Shipping
   */
  private $shipping;

  /**
   * @var UserRepository
   */
  private $user;

  /**
   * CheckoutController constructor.
   * @param UserRepository $user
   * @param Shipping $shipping
   */
  public function __construct(User $user, Shipping_New $shipping)
  {
      $this->middleware('auth');
      $this->shipping = $shipping;
      $this->user = $user;
  }

  public function DistrictGetAjax($division_id) {

    $ship = ShipDistrict::where('division_id',$division_id)->orderBy('district_name', 'ASC')->get();

    return json_encode($ship);

  }

  public function StateGetAjax($district_id) {

    $ship = ShipState::where('district_id',$district_id)->orderBy('state_name', 'ASC')->get();

    return json_encode($ship);

  }

  public function CheckoutStore(Request $request) {

    $data = array();
    $data['name'] = $request->name;
    $data['shipping_last_name'] = $request->shipping_last_name;
    $data['email'] = $request->email;
    $data['phone'] = $request->phone;
    $data['zip'] = $request->zip;
    $data['street1'] = $request->street1;
    $data['company'] = $request->company;
    $data['city'] = $request->city;
    $data['country'] = $request->country;
    $data['notes'] = $request->notes;
    $data['state_id'] = $request->state_id;
    $data['district_id'] = $request->district_id;
    $data['division_id'] = $request->division_id;
    $cartTotal = Cart::total();
    // The rates is a complete object but for this we
    // only need the rates_list items and will pass that.


    if ($request->payment_method == 'stripe') {


      return view('online-boutique-stores.payment.stripe', compact('data','cartTotal'));


    }

      elseif ($request->payment_method == 'paypal') {

        $carts = Cart::content();
        $cartQty = Cart::count();
        $cartTotal = Cart::total();

        return view('online-boutique-stores.payment.paypal', compact('data', 'cartTotal'));

      }

      else {

        return 'cash';

      }

  }

}
D.T
  • 105
  • 1
  • 1
  • 7

1 Answers1

0

Remove this your construct arguments. Because you don't see any use in these arguments. You can use this way ?

public function __construct()

{ $this->middleware('auth');

}