The field sales_stop_at of ChapterEvent should be checked in reserve_ticket and start_payment to ensure that sales are not done after the last sale time.
The response of these endpoint should be an appropriate HTTP error code, probably 403 as well as a message.