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.