I would like to add that zas has a long trajectory inside the Spanish language. The Diccionario de Autoridades already contains an entry for this word:
ZAS. Voz, con que se significa el sonido del golpe, ù el golpe mismo.
Also worth mentioning this other entry:
ZAS, ZAS. Voces, con que se significa la repetición del golpe, ù del sonido dél. Usase freqüentemente para significar los que se dán à la puerta, quando se llama a ella.
And you'll probably laugh out loud when you see this other entry:
ZASCANDIL. Voz, con que se significa el golpe repentino, ò accion impensada, y pronta, o sin reflexion, tomada la alusion del golpe, y ruido, que ocasiona el candil quando se cae.
So the word zas already alluded to the sound of a hit in the 18th century. It is an obvious evolution that it is now used also to express that something has been said and you felt like been hit in the face.
Its origin, I would say, is just onomatopoeic. The first cases seems to be from the 17th century, so its origin may be a bit earlier. Good ol' Gonzalo Correas explains us its use in the following terms using his particular way of writing:
¡Zas!
Por: sonido de golpe.
¡Zas, kandil!
Kuando se oie dar algún porrazo; o se ve, i da.
Gonzalo Correas, "Vocabulario de refranes y frases proverbiales", 1627 (Spain).
And it also appears in the Quixote:
—Eso creo yo bien —respondió don Quijote—, porque he tenido con el gigante la más descomunal y desaforada batalla que pienso tener en todos los días de mi vida, y de un revés, ¡zas!, le derribé la cabeza en el suelo, y fue tanta la sangre que le salió, que los arroyos corrían por la tierra como si fueran de agua.
Miguel de Cervantes Saavedra, "El ingenioso hidalgo don Quijote de la Mancha", 1605 (Spain).