En los request de operaciones existe un campo que es "sing", este campo es uno de los requisitos de seguridad para validar la identidad del comercio y el origen del request, y tomara el valor de lo generado por los siguientes pasos.
Pasos para la generación de firma
Listar todos los campos del Request.
Se deben organizar de forma alfabetica todos los campos.
Concatenar los campo y los valores asignados utilizando signo de igual "=" para separar el nombre del campo del valor, y para separar lo campos con sus valores utilizar el signo de amperson "&".
campoA=valorA&campoB=valorB
Se debe agregar el campo de key y el valor correspondiente a la llave del comercio para la API, en este ejemplo es "11111111111111111111111111111111".
A toda esta cadena de texto se debe aplicar una operacion de generación de hash MD5 para obtener el valor del campo sign se debe agregar al request de la operación a realizar.
Atención
Los nombres de los parámetros se ordenan de menor a mayor según su código ASCII (en orden alfabetico).
Si el valor de un parámetro está vacío, no se incluye en el proceso de firma.
En los nombres de los parámetros se diferencian mayúsculas de minúsculas.
Cuando se envia el callback para la verificación o el sistema de pago notifica activamente la firma, el parámetro sign en los datos no participa en la firma; se debe verificar la firma generada con el valor de sign.
En los requerimientos de operaciones se pueden agregar campos. Los campos que se agreguen deben ser compatibles al verificar las firmas.
Al firmar, se debe utilizar la clave del comerciante en texto claro (la falta de vinculación con Google Authenticator puede causar que la clave en el backoffice del comerciante se muestre en texto cifrado).
Ejemplo
Por ejemplo, los parámetros de la solicitud son los siguientes:
Para descargar el SDK, consulte “Recursos del diccionario > Descargas” - “SDK de firma”.
Incorpore el archivo JAR “supefina-sign” en su proyecto.
Completa la operación de firma mediante el método com.supefina.sign.SupefinaSignUtils#sign(java.lang.Object, java.lang.String) (parámetro 1: objeto JSON de parámetros de solicitud; parámetro 2: clave del comerciante).