Firstly, your open nodes must be sorted in descending order, while in your code there is no order. You compute the distance (g) and the heuristics (h) but never actually use it. You should consider using ordered container instead of lists (as sorting lists in each iteration won't be efficient)
And secondly, you have not stored the heuristic value in the node as
n.G = h_score;
it should be like this:
n.H = h_score;