How to get the normal of the face which was hit in a collision?
You could try to use a ray sensor:

c = bge.logic.getCurrentController()
ray = c.sensors["raySensorName"]

if ray.positive:
    pos_vec = Vector(ray.hitPosition)
    normal_vec = Vector(ray.hitNormal)