How do I block orders?

Orders can be blocked by adding a blocker when some condition is met.

For example, you can prevent potentially fraudulent orders from proceeding to payment by checking the order's email domain and IP address against configured blocked values.

First, define some settings:

\Aero\Common\Facades\Settings::group('checkout', static function (\Aero\Common\Settings\SettingGroup $group) {
    $group->array('blocked_email_domains')->section('Fraud');
    $group->array('blocked_ip_addresses')->section('Fraud');
});

An is_fraudulent getter can then be macro'ed onto the order model:

\Aero\Cart\Models\Order::macro('getIsFraudulentAttribute', function () {
    $orderEmailDomain = Str::after($this->email, '@');

    return in_array($orderEmailDomain, setting('checkout.blocked_email_domains'))
        || in_array($this->ip, setting('checkout.blocked_ip_addresses'));
});

Middleware can then be added to the checkout payment page to block the order if fraud has been detected:

\Aero\Checkout\Http\Responses\CheckoutPaymentPage::middleware(function (\Illuminate\Http\Request $request, \Closure $next) {
    $order = \Aero\Cart\Facades\Cart::order();

    if ($order->is_fraudulent) {
        $order->setBlocker('fraud', [
            'reason' => 'We suspect that this order is fraudulent. Please contact our support team if you have any questions.',
        ]);
    }

    return $next($request);
});

The checkout payment page can then be extended to set a custom view to display the blocker reason:

\Aero\Checkout\Http\Responses\CheckoutPaymentPage::extend(function (\Aero\Checkout\Http\Responses\CheckoutPaymentPage $page, \Closure $next) {
    $blocker = $page->cart->order()->getBlocker('fraud');

    if ($blocker) {
        $page->setData('blocker', $blocker);
        $page->getData('sections')->put('payment_method', 'acme::error');
    }

    return $next($page);
});

The acme::error view:

<div class="payment-method checkout__section">
    <div class="checkout__error">{{ blocker.reason }}</div>
</div>

Parameters

Parameter Type Description
$key
string
The key of the blocker to set.
$value
mixed
The value of the blocker to set.

Revision #4
Created 2026-09-16 13:17:48 UTC by Ethan Payne
Updated 2026-10-02 12:58:11 UTC by Ethan Payne