Security
Pagsmile incluye una firma en el encabezado Pagsmile-Signature de cada evento. Esto le permite verificar que el evento fue enviado por Pagsmile en lugar de un tercero. Puede verificar la firma en
Firma
Verificando firmas manualmente
El contenido aproximado del encabezado Pagsmile-Signature es el siguiente (aquí con salto de línea para facilitar la visualización, el contenido real está todo en una línea):
El encabezado Pagsmile-Signature contiene una marca de tiempo y una firma. La marca de tiempo está prefijada por t=, seguida de una marca de tiempo UNIX; la firma tiene el prefijo v2=, seguido del contenido de la firma.
La notificación enviada utiliza el siguiente formato:
Step 1 : Extract the timestamp and signatures from the header
Divida el encabezado usando el carácter [,] como separador, para obtener una lista de elementos. Luego, divida cada elemento utilizando el carácter [=] como separador, para obtener un par de prefijos y valores.
El valor del prefijo [t] corresponde a la marca de tiempo y [v2] corresponde a la firma. Puede descartar todos los demás elementos.
Paso 2 : Prepare el RequestBody string original
Obtén todo el contenido en RequestBody. Por favor, preste atención aquí. No utilice la estructura autoconstruida del programa para formatear y/o serializar el contenido de RequestBody. Si tiene requisitos similares, hágalo después de obtener los datos originales para su verificación para evitar la clasificación innecesaria de campos y la adición de caracteres que afectan la firma.
Paso 3 : Determine la firma esperada
Calcule un HMAC con la función hash SHA256. Utilice secretKey get del merchant dashboard como clave (salt) y use el string RequestBody original como mensaje.
Paso 4 : Compare las firmas
Compare la firma en el encabezado con la firma esperada. Para un match de igualdad, calcule la diferencia entre la marca de tiempo actual y la marca de tiempo recibida y, a continuación, decida si la diferencia está dentro de su tolerancia.
Ejemplo de códigos de verificación en Java
}
Last updated