Selling Tickets with commerce

Commerce can be used for events (free and paid), but it’s not quite optimised for it. From a user and merchant perspective you’ll notice that you’re working with a somewhat generic product type, rather than something built with events in mind. That doesn’t have to be a problem - but especially when compared with something so specifically built for events like EventBrite, it’s worth exploring what your client expects.

You’ll definitely be able of improving the user (/merchant) experience with some custom development.

As for your 4 specific points:

  1. Free orders are already supported; the payment step in the checkout will immediately mark the order as ready for processing.
  2. ItemData module can be used for that, but it does not make fields required, so if you need a guarantee that the information is entered you could look at a custom add to cart snippet that performs the validation, and then adds it to the cart. There’s an export to get information from all orders that contain a specific product; but that may or may not be sufficient for printing names - please test that with the client.
  3. Requires custom development. At the moment you can configure which address fields are required with the basic address validation module but that’s not dynamic based on order contents.
  4. Requires custom development. I recently had to build something similar for SimpleCart, using Scheduler, and if you have some budget available I’d be happy to create an official Commerce extension that does the same for Commerce.

The resource product type is indeed convenient if you already have the information there, though keep in mind its limitations (e.g. no variations, not all custom functionality like custom order shipments can be used).