Aaron,
The labor laws do not allow such behavior.
It's very clear, you must get paid for every hour you work. An employer can ask for extended shifts, or send you home early, but they can not make you work without pay.
I believe you when you say it happened to your son, but that is the result of the local manager, and he should be fired and/or brought up on charges.
And despite what many will say, I'm positive that Corporate Walmart would agree.
All companies want to turn a profit, but all companies also want happy employees.