@extends('storefront.layout') @section('title', trans_key('storefront.pageTitles.checkout').' - '.config('app.name', 'HyperLocal')) @section('body_class', 'sf-app-checkout-body') @section('content') @php $cart = $cart ?? null; $storefrontQuery = $storefrontQuery ?? []; $appliedCouponCode = $appliedCouponCode ?? ''; $availableCoupons = collect($availableCoupons ?? []); $contactPhone = $contactPhone ?? ''; $appName = $appName ?? config('app.name', 'HyperLocal'); $resumeCheckout = $resumeCheckout ?? false; $items = collect($items ?? data_get($cart, 'items', [])); $summary = $summary ?? []; $subtotal = (float) data_get($summary, 'subtotal', 0); $discount = (float) data_get($summary, 'discount_total', data_get($summary, 'coupon_discount_total', 0)); $couponDiscount = (float) data_get($summary, 'coupon_discount_total', 0); $comboDiscount = (float) data_get($summary, 'combo_discount_total', 0); $deliveryFee = (float) data_get($summary, 'delivery_fee', 0); $platformFee = (float) data_get($summary, 'platform_fee', 0); $taxTotal = (float) data_get($summary, 'tax_total', 0); $grandTotal = (float) data_get($summary, 'grand_total', $cartTotal ?? 0); $payableAmount = (float) data_get($summary, 'payable_amount', $grandTotal); $itemQuantity = (int) $items->sum('quantity'); $isGrocery = ($selectedService ?? 'grocery') !== 'food'; $storeLogo = $cart?->store ? \App\Support\StorefrontPresenter::storeLogo($cart->store) : null; $paymentMethods = collect($paymentMethods ?? [])->map(function ($method) { return [ 'key' => data_get($method, 'key', 'cod'), 'name' => data_get($method, 'name', 'Cash on Delivery'), 'subtitle' => data_get($method, 'subtitle', ''), 'icon' => data_get($method, 'icon', 'card'), 'logo' => data_get($method, 'logo'), ]; }); $pendingCheckout = is_array($pendingCheckout ?? null) ? $pendingCheckout : []; $selectedPaymentMethod = $selectedPaymentMethod ?? data_get($paymentMethods->first(), 'key', 'cod'); $selectedPayment = $paymentMethods->firstWhere('key', $selectedPaymentMethod) ?? $paymentMethods->first(); $deliveryLocation = session('delivery_location', 'Select delivery location'); $deliveryEstimateLabel = $deliveryEstimateLabel ?? ($isGrocery ? 'Delivery in 10-20 mins' : 'Delivery in 30-35 mins'); $savedAddresses = collect($savedAddresses ?? []); $selectedAddress = $selectedAddress ?? ($savedAddresses->firstWhere('is_default', true) ?: $savedAddresses->first()); $formatCheckoutAddress = function ($address, bool $includeLabel = false) { if (! $address) { return ''; } return collect([ $includeLabel ? (data_get($address, 'type') ?: data_get($address, 'label')) : null, data_get($address, 'address_line_1') ?: data_get($address, 'address'), data_get($address, 'address_line_2'), data_get($address, 'landmark'), data_get($address, 'city'), data_get($address, 'state'), data_get($address, 'postal_code') ?: data_get($address, 'pincode'), ])->map(fn ($part) => trim((string) $part)) ->filter() ->unique() ->join(', '); }; $selectedAddressText = $selectedAddress ? $formatCheckoutAddress($selectedAddress) : (data_get($pendingCheckout, 'delivery_address') ?: ($deliveryLocation !== 'Select delivery location' ? $deliveryLocation : '')); $deliveryLatitude = data_get($pendingCheckout, 'delivery_lat') ?: data_get(session('delivery_coordinates', []), 'latitude', session('delivery_lat')); $deliveryLongitude = data_get($pendingCheckout, 'delivery_lng') ?: data_get(session('delivery_coordinates', []), 'longitude', session('delivery_lng')); $isTakeawayAvailable = $cart?->store?->service_type === 'food' || true; @endphp @php $checkoutGatewayKeys = $paymentMethods->pluck('key'); @endphp @if($checkoutGatewayKeys->contains('razorpay')) @endif @if($checkoutGatewayKeys->contains('cashfree')) @endif