I am using stripe for payments and Mail for sending mail
Mail::send(
'shop.order_confirmation',
['user' => $user, 'code' => $code],
function($message) use ($user){
$message->to($user->email);
$message->from("[email protected]");
$message->subject(Auth::user()->name , "Your order confirmation");
$message->bcc("[email protected]");
}
);
at ProductController:
<?php
namespace App\Http\Controllers;
use App\Cart;
use App\Product;
use App\Order;
use Illuminate\Http\Request;
use App\Http\Requests;
use Session;
use Auth;
use Stripe\Charge;
use Stripe\Stripe;
use Mail;
class ProductController extends Controller
{
public function getIndex()
{
$products = Product::all();
return view('shop.index', ['products' => $products]);
}
public function getAddToCart(Request $request, $id)
{
$product = Product::find($id);
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->add($product, $product->id);
$request->session()->put('cart', $cart);
return redirect()->route('product.index');
}
public function getCart()
{
if (!Session::has('cart')) {
return view('shop.shopping-cart');
}
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
return view('shop.shopping-cart', ['products' => $cart->items, 'totalPrice' => $cart->totalPrice]);
}
public function getCheckout()
{
if (!Session::has('cart')) {
return view('shop.shopping-cart');
}
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
$total = $cart->totalPrice;
return view('shop.checkout', ['total' => $total]);
}
public function getReduceByOne($id){
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->reduceByOne($id);
if (count($cart->items) > 0){
Session::put('cart', $cart);
} else{
Session::forget('cart');
}
return redirect()->route('product.shoppingCart');
}
public function getRemoveItem($id){
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->removeItem($id);
if (count($cart->items) > 0){
Session::put('cart', $cart);
} else{
Session::forget('cart');
}
return redirect()->route('product.shoppingCart');
}
public function postCheckout(Request $request)
{
if (!Session::has('cart')) {
return redirect()->route('shop.shoppingCart');
}
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
Stripe::setApiKey('');
try {
$charge = Charge::create(array(
"amount" => $cart->totalPrice * 100,
"currency" => "usd",
"source" => 'tok_mastercard', // obtained with Stripe.js
"description" => "Test Charge"
));
$order = new Order();
$order->cart = serialize($cart);
$order->address = $request->input('address');
$order->name = $request->input('name');
$order->surname = $request->input('surname');
$order->city = $request->input('city');
$order->zip = $request->input('zip');
$order->phone = $request->input('phone');
$order->payment_id = $charge->id;
Auth::user()->orders()->save($order);
Mail::send(
'shop.order_confirmation',
['user' => $user, 'code' => $code],
function($message) use ($user){
$message->to($user->email);
$message->from("[email protected]");
$message->subject(Auth::user()->name , "Your order confirmation");
$message->bcc("[email protected]");
}
);
} catch (\Exception $e) {
return redirect()->route('checkout')->with('error', $e->getMessage());
}
Session::forget('cart');
return redirect()->route('product.index')->with('success', 'Successfully purchased products!');
}
}
The issue is that en error appear saying: "Undefined variable: user"
I tried to use Auth::user()->name but it does not help.
Thank you one more time.