Spanking isn't going to get you anywhere. All it teaches is that big people can control small people by violence.
You can change what's happening but it requires great discipline and behavioral changes on your part.
Also ... why does he listen to his Dad? Maybe you can learn something from your husband.
OK, here is what you can try:
Never react to what your boy says or does. What that means is that you do not yell, hit, or cry.
Just stare at him with no expression on your face.
When he is being particularly rude tell him in a quiet voice that you will not tolerate his behavior.
Then tell him what the consequences will be if he continues.
Use very simple language and do not raise your voice.
Example:
If you do not pick up your toys then you will not go to the park today.
If he says, rudely, I don't care:
You say fine. And you cannot watch cartoons today either.
The consequences must be something the child really likes or they will have no meaning.
If it is a bunch of toys, you can take one toy away for each rude or disobedient act.
Never yell.
And do not beg or say please do this for me.
You are the adult. He is the child.
Threats will get you nowhere.
Deprivation of enjoyable things works almost all the time.
Do not let him bully you by bad behavior.
If he has a tantrum, (not on the street) just walk away and do something else.
Again, do not react.
When he says you are the worst mommy in the world, ignore this. It doesn't mean anything.
When he talks back to you, walk away. Again, at home, not on the street.
If he does this is public, say at the supermarket. Stop shopping and go home. If there is something you needed for dinner tell him you are not going to buy it. Just go home.
If you put him in a time out and he won't stay put, tell him the consequences, tougher this time. No tv cartoons for 7 days. Count out the 7 days for him. Do not tell him anything too complicated.
If he refuses to eat lunch, let him. Take away the food and put it away. No child is going to suffer for missing one meal. And if he is hungry later, tell him to wait for dinner. Tell him lunch was before and now it is later.
You must not waver.
Now ... when he is on good behavior, praise him, tell him how proud you are of what he has said or done. Offer to do something he'd really like to do. The zoo, the playgound, whatever he really likes that is a bit of an effort.
Never use these words:
YOU ARE A BAD BOY or YOU ARE A GOOD BOY.
Instead, praise his accomplishments: tying his shoes, hanging up his coat, clearing his dishes from the table, etc.
Tell him how proud you are of his behavior again.
Too many mothers try to be friends with their children. This is a BIG mistake. He will always have his own friends. What he needs is a grownup parent who will put necessary limits on what he does, recognize his good behavior, his personality, his jokes and games.
Do not leave discipline to your husband. You will teach him that women don't matter. Not a good thing now or for the future.
My niece once wrote to her mother the following:
Dear Mom, I hate you. Love, Trace.
She was 5.
Every parent loved that letter.
Do not give up. Don't get angry. Don't react to a child.
Being a mother is the hardest job except for being a firefighter.
Be nice to yourself.