I have an e-commerce web app where you can choose among multiple time slots for your delivery. There are some rules that depend on when the purchase is completed.
For instance, if I purchase something before 2:00 PM, I'm able to select same-day delivery.
Some customers might select same-day delivery when it's 1:55 PM, but as they continue through the checkout process, the 2:00 PM deadline is met, so their purchase is rejected.
How should I handle this situation?
Currently, whenever the user reaches the "select delivery time" step of the checkout process, backend sends all the possible time slots, according to the business logic at that moment.
I have a few ideas on mind (like allowing a 10-minute "grace period", or giving a detailed explanation when the purchase fails do to this reason), but since this seems to be a common problem, I would rather use an existing solution than re-inventing the wheel.
This is a good finding and I appreciate considering a solution for your users. I had this issue with food ordering apps that were allowing me to order some food from a restaurant that closed at the same time I placed my order and as I was waiting for my ordered I got called and announced that the food won't be delivered.
You could move the time slot to the last step to minimise the time period from order start to order finish.
Another solution would be to disable the 2:00 delivery if the order is made from 13:45 on.