Try the German solution. To get a cart, you have to put a Euro into the cart to unchain it. When you return it, you chain it back on and get the Euro back.
Works for many years now, and people have been conditioned to it, so they return even "hacked" carts (there are tools to unchain them without a coin).