forked from TFMM/silent-auction
Merge pull request 'fix: restore fallback verification button and error handling for North checkout' (#7) from feature/tablar-theme into master
Reviewed-on: #7
This commit was merged in pull request #7.
This commit is contained in:
@@ -58,6 +58,7 @@ The Laravel framework is open-sourced software licensed under the [MIT license](
|
||||
- **Searchable Dropdowns:** Integrated `TomSelect` across various forms (Checkout, Reprint Receipt, etc.) for enhanced usability.
|
||||
- **Self-Checkout Flow:** Added a prominent self-checkout link for bidders, integrated with North Embedded Checkout.
|
||||
- **Pickup Instructions:** Added clear instructions for bidders on the checkout completion page to proceed to the Item Pickup Table.
|
||||
- **North Checkout Fallback:** Restored the manual "Verify Payment Status" button and enhanced error reporting for digital wallet payments (Google Pay).
|
||||
|
||||
#### Fixed
|
||||
- **Logo Integration:** Corrected logo sizing issues using inline styles to override theme constraints.
|
||||
@@ -66,6 +67,8 @@ The Laravel framework is open-sourced software licensed under the [MIT license](
|
||||
- **Data Restoration:** Re-added bidder information and itemized winning lists to the checkout completion views.
|
||||
|
||||
#### Changed
|
||||
- **Expanded Reports:** Standardized `bidderlist`, `showcarlist`, and `checkout_complete_list` to show full contact details (Address, City, State, Zip, Phone, Email).
|
||||
- **Reporting Enhancements:** Added Year, Make, and Model to the `showcarlist` and included item numbers in the `checkout_complete_list` for improved tracking.
|
||||
- **UI Cleanup:** Disabled default Tablar footers and notifications across all layout templates to maintain a focused auction interface.
|
||||
- **Theme Consistency:** Updated various partials to ensure a seamless transition from the previous custom theme to Tablar.
|
||||
|
||||
|
||||
@@ -17,24 +17,32 @@
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table">
|
||||
<table class="table table-vcenter card-table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Last Name</th>
|
||||
<th>First Name</th>
|
||||
<th>Address</th>
|
||||
<th>City</th>
|
||||
<th>State</th>
|
||||
<th>Zip</th>
|
||||
<th>Phone</th>
|
||||
<th>Email</th>
|
||||
<th>Address</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($bidderlist_results as $bidder)
|
||||
<tr>
|
||||
<td>{{ $bidder->bidder_assigned_number }}</td>
|
||||
<td>{{ $bidder->bidder_fname }} {{ $bidder->bidder_lname }}</td>
|
||||
<td>{{ $bidder->bidder_phone }}</td>
|
||||
<td>{{ $bidder->bidder_lname }}</td>
|
||||
<td>{{ $bidder->bidder_fname }}</td>
|
||||
<td>{{ $bidder->bidder_addr }}</td>
|
||||
<td>{{ $bidder->bidder_city }}</td>
|
||||
<td>{{ $bidder->bidder_state }}</td>
|
||||
<td>{{ $bidder->bidder_zip }}</td>
|
||||
<td>{{ \App\Helpers\PhoneHelper::format($bidder->bidder_phone) }}</td>
|
||||
<td>{{ $bidder->bidder_email }}</td>
|
||||
<td>{{ $bidder->bidder_addr }}, {{ $bidder->bidder_city }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
|
||||
@@ -16,28 +16,47 @@
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table">
|
||||
<table class="table table-vcenter card-table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Bidder #</th>
|
||||
<th>Name</th>
|
||||
<th>Items Won</th>
|
||||
<th>#</th>
|
||||
<th>Last Name</th>
|
||||
<th>First Name</th>
|
||||
<th>Address</th>
|
||||
<th>City</th>
|
||||
<th>State</th>
|
||||
<th>Zip</th>
|
||||
<th>Phone</th>
|
||||
<th>Email</th>
|
||||
<th>Total</th>
|
||||
<th>Payment</th>
|
||||
<th>Payment Method</th>
|
||||
<th>Items Won</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($checkout_complete_results as $c)
|
||||
<tr>
|
||||
<td>{{ $c->bidder_assigned_number }}</td>
|
||||
<td>{{ $c->bidder_fname }} {{ $c->bidder_lname }}</td>
|
||||
<td>{{ $c->bidder_lname }}</td>
|
||||
<td>{{ $c->bidder_fname }}</td>
|
||||
<td>{{ $c->bidder_addr }}</td>
|
||||
<td>{{ $c->bidder_city }}</td>
|
||||
<td>{{ $c->bidder_state }}</td>
|
||||
<td>{{ $c->bidder_zip }}</td>
|
||||
<td>{{ \App\Helpers\PhoneHelper::format($c->bidder_phone) }}</td>
|
||||
<td>{{ $c->bidder_email }}</td>
|
||||
<td>${{ number_format($c->winnertotal, 2) }}</td>
|
||||
<td>
|
||||
@if($c->payment_method == 1) Cash
|
||||
@elseif($c->payment_method == 2) Check ({{ $c->check_number }})
|
||||
@else Credit ({{ $c->cc_transaction }})
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@foreach(\App\Models\WinningBids::with('items')->where('winning_bidder_num', $c->bidder_num)->get() as $bid)
|
||||
{{ $bid->items->item_desc ?? 'N/A' }}<br>
|
||||
<strong>#{{ $bid->items->item_assigned_num ?? '?' }}</strong> - {{ $bid->items->item_desc ?? 'N/A' }}<br>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>${{ number_format($c->winnertotal, 2) }}</td>
|
||||
<td>{{ $c->payment_method == 1 ? 'Cash' : ($c->payment_method == 2 ? 'Check' : 'Credit') }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<div class="page-body">
|
||||
<div class="container-xl">
|
||||
<div class="card">
|
||||
<div id="payment-error-container"></div>
|
||||
<div class="card-body">
|
||||
<div id="checkout-container">
|
||||
<div class="text-center">
|
||||
@@ -33,6 +34,13 @@
|
||||
<div class="spinner-border" role="status"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="fallback-container" class="mt-4 text-center" style="display: none;">
|
||||
<div class="hr-text">Still here?</div>
|
||||
<p class="text-muted">If you have already completed your payment but the page hasn't redirected, please click the button below.</p>
|
||||
<a id="verify-button" href="#" class="btn btn-info">
|
||||
<i class="ti ti-shield-check me-2"></i>Verify Payment Status
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -67,19 +75,52 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// Set up fallback button
|
||||
const verifyUrl = `/north/verify/${bidderId}?sessionToken=${sessionToken}`;
|
||||
const verifyButton = document.getElementById('verify-button');
|
||||
const fallbackContainer = document.getElementById('fallback-container');
|
||||
verifyButton.href = verifyUrl;
|
||||
|
||||
// Show fallback after 5 seconds to give user a manual way out if auto-redirect fails
|
||||
setTimeout(() => {
|
||||
fallbackContainer.style.display = 'block';
|
||||
}, 5000);
|
||||
|
||||
await checkout.mount(sessionToken, 'checkout-container');
|
||||
|
||||
const handleCompletion = (result) => {
|
||||
window.location.href = `/north/verify/${bidderId}?sessionToken=${sessionToken}`;
|
||||
console.log('Payment complete event received:', result);
|
||||
window.location.href = verifyUrl;
|
||||
};
|
||||
|
||||
// Register standard completion events
|
||||
checkout.onPaymentComplete(handleCompletion);
|
||||
if (typeof checkout.onPaymentSuccess === 'function') {
|
||||
checkout.onPaymentSuccess(handleCompletion);
|
||||
}
|
||||
|
||||
// Handle errors
|
||||
if (typeof checkout.onPaymentError === 'function') {
|
||||
checkout.onPaymentError((error) => {
|
||||
console.error('Payment Error:', error);
|
||||
const errorDiv = document.createElement('div');
|
||||
errorDiv.className = 'alert alert-danger alert-dismissible';
|
||||
errorDiv.innerHTML = `
|
||||
<div class="d-flex">
|
||||
<div><i class="ti ti-alert-triangle me-2"></i></div>
|
||||
<div>
|
||||
<strong>Payment Error:</strong> ${error.message || 'An error occurred during payment.'}
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn-close" data-bs-dismiss="alert" aria-label="close"></a>
|
||||
`;
|
||||
document.getElementById('payment-error-container').prepend(errorDiv);
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('Checkout Error:', error);
|
||||
document.getElementById('checkout-container').innerHTML = '<div class="alert alert-danger">An error occurred. Please try again.</div>';
|
||||
document.getElementById('checkout-container').innerHTML = '<div class="alert alert-danger">An error occurred while initializing checkout. Please try again.</div>';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -14,24 +14,38 @@
|
||||
<div class="container-xl">
|
||||
<div class="card">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table" id="showcars-table">
|
||||
<table class="table table-vcenter card-table text-nowrap" id="showcars-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="sort" data-sort="bidder-num">Bidder #</th>
|
||||
<th class="sort" data-sort="bidder-num">#</th>
|
||||
<th class="sort" data-sort="lname">Last Name</th>
|
||||
<th class="sort" data-sort="fname">First Name</th>
|
||||
<th>Address</th>
|
||||
<th>City</th>
|
||||
<th>State</th>
|
||||
<th>Zip</th>
|
||||
<th>Phone</th>
|
||||
<th>Email</th>
|
||||
<th class="sort" data-sort="year">Year</th>
|
||||
<th class="sort" data-sort="make">Make</th>
|
||||
<th class="sort" data-sort="model">Model</th>
|
||||
<th class="sort" data-sort="year">Year</th>
|
||||
<th class="sort" data-sort="owner">Owner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list">
|
||||
@foreach($showcarlist_results as $vehicle)
|
||||
<tr>
|
||||
<td class="bidder-num">{{ $vehicle->bidder_assigned_number ?? 'N/A' }}</td>
|
||||
<td class="bidder-num">{{ $vehicle->bidder_assigned_number }}</td>
|
||||
<td class="lname">{{ $vehicle->bidder_lname }}</td>
|
||||
<td class="fname">{{ $vehicle->bidder_fname }}</td>
|
||||
<td>{{ $vehicle->bidder_addr }}</td>
|
||||
<td>{{ $vehicle->bidder_city }}</td>
|
||||
<td>{{ $vehicle->bidder_state }}</td>
|
||||
<td>{{ $vehicle->bidder_zip }}</td>
|
||||
<td>{{ \App\Helpers\PhoneHelper::format($vehicle->bidder_phone) }}</td>
|
||||
<td>{{ $vehicle->bidder_email }}</td>
|
||||
<td class="year">{{ $vehicle->year }}</td>
|
||||
<td class="make">{{ $vehicle->make }}</td>
|
||||
<td class="model">{{ $vehicle->model }}</td>
|
||||
<td class="year">{{ $vehicle->year }}</td>
|
||||
<td class="owner">{{ $vehicle->bidder_fname }} {{ $vehicle->bidder_lname }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
@@ -46,7 +60,7 @@
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/2.3.1/list.min.js"></script>
|
||||
<script>
|
||||
new List('showcars-table', {
|
||||
valueNames: ['bidder-num', 'make', 'model', 'year', 'owner']
|
||||
valueNames: ['bidder-num', 'lname', 'fname', 'year', 'make', 'model']
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
Reference in New Issue
Block a user