fix(purchase) add a check for user.balance