¿Cómo firmar las transacciones?
Aprender a generar la firma de seguridad requerida para enviar transacciones a la API de ProntoPaga
La firma permite validar que los datos de la transacción no fueron alterados, y que la solicitud proviene de un comercio autorizado.
ImportanteNunca envíes tu secretKey en el request, ni la incluyas en código público, aplicaciones front-end, repositorios o documentaciones externas.
Antes de empezar
La siguiente información en necesaria para poder firmar las transacciones. En caso de que no cuentes con alguna, ponte en contacto con el equipo de Customer Support mediante las vías oficiales de ProntoPaga.
| Requisito | Descripción |
|---|---|
secretKey | Clave secreta entregada por ProntoPaga y que no debe ser compartida. |
| Parámetros de la transacción | Todos los campos que deben completarse para ser enviados en el body request. |
| Algoritmo HMAAC-SHA256 | Método usado para generar la firma. |
Resumen del proceso
Paso 1
Toma los parámetros del request, excepto sign.
Ejemplo de request
El siguiente ejemplo muestra la estructura del request con los parámetros requeridos para iniciar la transacción:
{
"amount": "25500",
"clientDocument": "11111111-1",
"clientEmail": "[email protected]",
"clientName": "John Doe",
"clientPhone": "999999999",
"country": "CL",
"currency": "CLP",
"order": "XYZ789",
"paymentMethod": "webpay_payment",
"urlConfirmation": "https://www.webhook.com",
"urlFinal": "https://sandbox.prontopaga.com/successful",
"urlRejected": "https://sandbox.prontopaga.com/declined"
}Ordena los parámetros
Los parámetros deben ordenarse alfabéticamente, como en el siguiente ejemplo:
Amount
clientDocument
clientEmail
clientName
clientPhone
ountre
current
order
paymentMethod
urlConfirmation
urlFinal
urlRejected
ParámetrosTodos los parámetros deben estar en el body request de la firma, excepto el parámetro
sign(que es en donde va la firma). Ese campo se agregará después.
Construye la cadena
Concatena cada nombre de parámetro con su valor, sin espacios adicionales, separadores ni caracteres extra
amount25500clientDocument11111111-1clientEmailjohndoe@example.comclientNameJohn DoeclientPhone999999999countryCLcurrencyCLPorderXYZ789paymentMethodwebpay_paymenturlConfirmationhttps://www.webhook.comurlFinalhttps://sandbox.prontopaga.com/successfulurlRejectedhttps://sandbox.prontopaga.com/declinedGenera la firma
Usa la cadena concatenada, tu secretKey y el algoritmo HMAC-SHA256 para generar la firma, que deberá tener este aspecto:
// String to sign.
$keys = array_keys($data);
sort($keys);
$toSign = '';
foreach ($keys as $key) {
$toSign .= $key . $data[$key];
}
$sign = hash_hmac('sha256', $toSign, $secretKey);Agrega la firma al request
Después de generar la firma, inclúyela en el campo sign, como se ve a continuación:
{
"amount": "25500",
"clientDocument": "11111111-1",
"clientEmail": "[email protected]",
"clientName": "John Doe",
"clientPhone": "999999999",
"country": "CL",
"currency": "CLP",
"order": "XYZ789",
"paymentMethod": "webpay_payment",
"urlConfirmation": "https://www.webhook.com",
"urlFinal": "https://sandbox.prontopaga.com/successful",
"urlRejected": "https://sandbox.prontopaga.com/declined",
"sign": "generated_signature"
}Buenas prácticas
Genera la firma siempre desde el back-end.
Procura guardar tu secretKey en un gestor seguro de secretos y no en un texto plano o dentro de un código.
No incluyas el campo sign al construir la cadena.
Revisa que los parámetros estén ordenados alfabéticamente.
Asegúrate de que no existan espacios, saltos de línea o separadores entre los campos concatenados.
Updated 1 day ago