{{-- Payment Confirmation Email - Atomic Design System v2.0 Sent when a payment is successfully processed Note: $colors automatically injected via View Composer --}} @component('emails.layouts.base', [ 'title' => 'Payment Confirmed', 'previewText' => 'Your payment has been successfully processed', 'colors' => $colors ]) @component('emails.atoms.h1', ['colors' => $colors]) Payment Confirmed @endcomponent @component('emails.atoms.text', ['colors' => $colors]) Thank you for your purchase! @endcomponent @component('emails.organisms.alert-box', [ 'variant' => 'success', 'title' => 'Your payment has been successfully processed', 'colors' => $colors ]) Your tickets are confirmed and ready for the event. @endcomponent @include('emails.atoms.spacer', ['height' => '24px']) {{-- Payment Amount Highlight --}} @component('emails.organisms.section', ['background' => 'primary', 'colors' => $colors])

Amount Paid

{{ $currency }} {{ number_format($paymentAmount, 2) }}

{{ $paymentDate->format('F j, Y \a\t g:i A') }}

@endcomponent @include('emails.atoms.spacer', ['height' => '20px']) @component('emails.atoms.h3', ['colors' => $colors]) Order Information @endcomponent @component('emails.organisms.card', ['colors' => $colors]) @component('emails.molecules.info-row', [ 'label' => 'Order Number', 'value' => $orderNumber, 'colors' => $colors ]) @endcomponent @component('emails.molecules.info-row', [ 'label' => 'Ticket Number', 'value' => $ticketNumber, 'colors' => $colors ]) @endcomponent @component('emails.molecules.info-row', [ 'label' => 'Customer Name', 'value' => $order->customer_name, 'colors' => $colors ]) @endcomponent @component('emails.molecules.info-row', [ 'label' => 'Email', 'value' => $order->customer_email, 'colors' => $colors ]) @endcomponent @if($order->EventDetail) @component('emails.molecules.info-row', [ 'label' => 'Event', 'value' => $order->EventDetail->name, 'colors' => $colors ]) @endcomponent @if($order->EventDetail->event_date) @component('emails.molecules.info-row', [ 'label' => 'Event Date', 'value' => \Carbon\Carbon::parse($order->EventDetail->event_date)->format('F j, Y \a\t g:i A'), 'colors' => $colors, 'removeBorder' => true ]) @endcomponent @endif @endif @endcomponent @include('emails.atoms.spacer', ['height' => '20px']) @component('emails.atoms.h3', ['colors' => $colors]) Payment Details @endcomponent @component('emails.organisms.card', ['colors' => $colors]) @component('emails.molecules.info-row', [ 'label' => 'Payment Method', 'value' => ucfirst($paymentMethod), 'colors' => $colors ]) @endcomponent @component('emails.molecules.info-row', [ 'label' => 'Transaction ID', 'value' => $transactionId, 'colors' => $colors ]) @endcomponent @component('emails.molecules.info-row', [ 'label' => 'Payment Status', 'value' => 'Confirmed', 'colors' => $colors, 'removeBorder' => true ]) @endcomponent @endcomponent @if(count($lineItems) > 0) @include('emails.atoms.spacer', ['height' => '20px']) @component('emails.atoms.h3', ['colors' => $colors]) Order Breakdown @endcomponent @php $tickets = $lineItems->where('item_type', 'ticket'); $fees = $lineItems->where('item_type', 'booking_fee'); $taxes = $lineItems->where('item_type', 'tax'); $subtotal = $tickets->sum('amount'); @endphp @component('emails.organisms.card', ['colors' => $colors]) @foreach($tickets as $ticket) @endforeach @if($subtotal > 0) @endif @foreach($fees as $fee) @endforeach @foreach($taxes as $tax) @endforeach
Item Qty Amount
Ticket @if(isset($ticket->metadata['seat_number']))
Seat: {{ $ticket->metadata['seat_number'] }} @endif
{{ $ticket->quantity }} {{ $currency }} {{ number_format($ticket->line_total ?? $ticket->unit_price ?? 0, 2) }}
Subtotal {{ $currency }} {{ number_format($subtotal, 2) }}
{{ $fee->description }} {{ $currency }} {{ number_format($fee->line_total ?? $fee->unit_price ?? 0, 2) }}
{{ $tax->description }} {{ $currency }} {{ number_format($tax->line_total ?? $tax->unit_price ?? 0, 2) }}
TOTAL PAID {{ $currency }} {{ number_format($paymentAmount, 2) }}
@endcomponent @endif @include('emails.atoms.spacer', ['height' => '20px']) {{-- Embedded Tickets with QR Code or Barcode (based on event preference) --}} @if($hasEmbeddedTickets) @php // Determine code type from first ticket (all tickets in same event use same type) $codeType = $embeddedTickets[0]['code_type'] ?? 'qr'; $codeLabel = $codeType === 'barcode' ? 'barcodes' : 'QR codes'; @endphp @component('emails.atoms.h2', ['colors' => $colors]) Your Tickets @endcomponent @component('emails.atoms.text', ['colors' => $colors]) Present these {{ $codeLabel }} at the venue entrance. Save this email for offline access. @endcomponent @include('emails.atoms.spacer', ['height' => '16px']) @foreach($embeddedTickets as $ticket) @component('emails.organisms.card', ['colors' => $colors])
{{-- Ticket Header --}}

Seat {{ $ticket['seat_number'] }}

{{ $ticket['description'] }}

{{ $currency }} {{ number_format($ticket['price'], 2) }}

{{-- QR Code or Barcode Section (conditional based on event preference) --}}
@if($codeType === 'barcode') {{-- CODE128 Barcode Display --}} {{ $ticket['code_alt_text'] }}

Scan Barcode at Venue

@else {{-- QR Code Display (default) --}} {{ $ticket['code_alt_text'] }}

Scan at Venue Entrance

@endif
{{-- Ticket Number Footer --}}

Ticket: {{ $ticket['ticket_number'] }}

@endcomponent @include('emails.atoms.spacer', ['height' => '16px']) @endforeach {{-- Offline Tip --}} @component('emails.organisms.alert-box', [ 'variant' => 'info', 'title' => 'Pro Tip', 'colors' => $colors ]) Screenshot this email or save it offline before arriving at the venue. Venue wifi may be unreliable. @endcomponent @include('emails.atoms.spacer', ['height' => '20px']) @endif {{-- PDF Download / Attachment Notice --}} @if($hasPdfAttachment) @component('emails.organisms.alert-box', [ 'variant' => 'success', 'title' => 'Tickets Attached', 'colors' => $colors ]) Your tickets are attached to this email as a PDF. Perfect for printing or box office pickup. @endcomponent @elseif($downloadUrl) @component('emails.organisms.alert-box', [ 'variant' => 'warning', 'title' => 'Download Your Tickets', 'colors' => $colors ]) Your tickets are ready for download. Click the button below to get your printable PDF. @endcomponent @include('emails.atoms.spacer', ['height' => '16px'])
@component('emails.molecules.button', [ 'href' => $downloadUrl, 'variant' => 'secondary', 'size' => 'large', 'colors' => $colors ]) 📥 Download Printable Tickets PDF @endcomponent

Link valid for 24 hours

@endif @include('emails.atoms.spacer', ['height' => '20px'])
@component('emails.molecules.button', [ 'href' => $frontendUrl, 'variant' => 'primary', 'size' => 'large', 'colors' => $colors ]) View My Orders @endcomponent
@include('emails.atoms.spacer', ['height' => '20px']) @component('emails.organisms.alert-box', [ 'variant' => 'info', 'title' => 'Security Notice', 'colors' => $colors ]) This confirmation email serves as proof of purchase. Please keep it for your records. Do not share your ticket number or QR codes with anyone. @endcomponent {{-- Email Open Tracking Pixel (invisible) --}} @if($trackingPixelUrl) @endif @endcomponent