El problema lo veo aquí:
Código:
<button title="Comprar" type="submit" id="button-pay" onClick=" function () {
document.getElementById('Firma').value = sha256(document.getElementById('SESION-CURSO').value);
};">
Tienes varias cosas mal ahí:
1) En el atributo onclick declaras una función en lugar de invocarla, eso significa que nunca se ejecuta.
2) El tipo de botón es submit y nada garantiza que el submit se realice antes que el onclick (en algunos navegadores ocurre al revés).
Una forma de corregirlo sería:
Código:
<button title="Comprar" type="button" id="button-pay" onClick="document.getElementById('Firma').value = sha256(document.getElementById('SESION-CURSO').value);this.form.submit();">Enviar</button>
Otra forma sería dejar el tipo del botón como submit y usar el método onsubmit del form para invocar una función que haga la connversión antes de enviar el form. Algo así:
Código:
<form ... onsubmit="document.getElementById('Firma').value = sha256(document.getElementById('SESION-CURSO').value);">
...
<button title="Comprar" type="submit" id="button-pay">Enviar</button>
</form>