How to disallow commerce checkout if no payment method is available? With Drupal Commerce and Commerce Payment, when no payment method is available on the checkout, it displays this message: Payment is not required to complete your order. and the customer is still able to finish the checkout.

It's probably trivial, but I can't find a solution that doesn't involve calling a hook in a custom module.

The best solution would to actually display a webform when no payment method is available.
The core payment module offers this option in the checkout pane's settings form.