Seguridad
Qué protege n1co.js por ti, qué te toca hacer a ti y cómo confirmar un pago sin confiar en el navegador.
- Guarda la llave secreta y el secreto de webhooks solo en tu servidor.
- Sirve tus páginas por
https, carga n1co.js desde el host de n1co y usapage_origins. - Confirma cada pago en tu servidor antes de entregar el pedido.
Confirmar un pago en tu servidor
curl -s https://api-epay.dev.n1co.dev/v1/payment_intents/pi_UGF5bWVudEludGVudEV4YW1w \
-H "Authorization: Bearer $N1CO_SECRET_KEY"
# Entrega el pedido solo si "status" es "succeeded" y "amount" y "currency" son los de tu orden.Lo que hace n1co.js por ti#
- Iframes de n1co. El card element y 3D Secure se sirven desde el origen de n1co: ni tu página ni sus scripts pueden leerlos.
- Tokenización. El número y el código se tokenizan antes de llegar al API. Tu página solo recibe la marca, los últimos cuatro dígitos y el vencimiento.
- Origen verificado. Con
page_origins, el API rechaza cualquier otra página. - Página segura. n1co.js no se monta en
http://, salvolocalhosty127.0.0.1.
Lo que te toca a ti#
- Guarda la llave secreta y el secreto de webhooks en un gestor de secretos. Si se exponen, rótalos.
- Entrega cada
client_secretsolo a la página de su comprador. - Carga n1co.js desde el host de n1co; para fijar una versión, usa la ruta con SRI.
- Verifica la firma de cada webhook y descarta los repetidos.
- Si tu página tiene Content Security Policy, permite el host de n1co.js:
Content-Security-Policy: script-src 'self' https://elements.n1co.dev; frame-src https://elements.n1co.devDatos personales y PCI#
El nombre, el correo y el teléfono que envías en customer, y la facturación, son datos personales. ePay nunca devuelve los datos del cliente, y los webhooks no llevan la facturación. No pongas datos sensibles en metadata.
Con n1co.js, tu página y tu servidor no almacenan, procesan ni transmiten datos de tarjeta. Confirma con tu evaluador PCI qué cuestionario te aplica.