Hello, Rasha Assem,
Personally, I had chosen not to answer your question because I was doubtful about (1). Let's wait and see what David can tell us, but I don't think any of the options work. Also, I'd say "get a visa" rather than "take a visa." I'd say the following, but I don't know if that is the intended meaning:
1a. My friend told me that he wouldn't get the visa to the USA until he had paid for it.
2- She told me that I ………………. due care to my work. I actually appreciate her advice.
In this case, I'd choose (d) "should give" to express advice about a current situation ("should have given" would express criticism for the person not having given due care to their work.)
I am wondering if 'b' & 'd' are both possible?
In the case of (3), I also think that both options are possible.