Ir al contenido

Canjear un código de compra (validar identidad)

POST
/certificate_request
curl --request POST \
--url https://dev-api.tsp.cl/firma_digital/dev/api/partners/v1/certificate_request \
--header 'Content-Type: application/json' \
--header 'x-gw: <x-gw>' \
--data '{ "pCode": "example", "referenceId": "example", "dni": "18925910-7", "email": "hello@example.com", "pin": "example", "serialNumber": "example", "names": "example", "fLastname": "example", "mLastname": "example", "phone": "+56911111111", "claveUnica": "example", "dniFront": "example", "dniBack": "example", "partnerCopy": "hello@example.com", "fechaVencimiento": "21/09/2034" }'

Valida la identidad del titular de un código de compra ya emitido (vía POST /pcode del Worker partner-pcode). No entrega el certificado en esta llamada — para eso está certificate_claim — salvo que el partner esté configurado en modo B2B, en cuyo caso el certificado se genera y se entrega automáticamente (webhook y/o email al partner) en esta misma llamada, sin que el usuario final tenga que reclamarlo.

Los campos que se exigen dependen de partner_config.require_cedula_serie, no de esta llamada: un partner con flujo reducido (require_cedula_serie=1) no debe enviar names/fLastname/phone (los nombres se obtienen de Registro Civil) pero sí serialNumber; un partner con flujo completo debe enviar names/fLastname/phone y valida además contra Clave Única.

Media typeapplication/json
object
pCode
required

Código de compra generado previamente para este partner.

string
referenceId
required

Identificador propio del partner para esta transacción.

string
dni
required

RUT del titular, con dígito verificador.

string
Example
18925910-7
email
required
string format: email
pin
required

4 dígitos — funciona como contraseña del PFX resultante.

string
/^\d{4}$/
serialNumber

Número de serie de la cédula. Obligatorio si el partner tiene flujo reducido (require_cedula_serie=1).

string
names

Nombres del titular. Obligatorio solo en flujo completo.

string
fLastname

Apellido paterno. Obligatorio solo en flujo completo.

string
mLastname
string
phone

Obligatorio solo en flujo completo.

string
Example
+56911111111
claveUnica

Token de Clave Única, si el flujo del partner la requiere.

string
dniFront
string
dniBack
string
partnerCopy

Email adicional al que enviar copia del certificado (flujo completo).

string format: email
fechaVencimiento

Fecha de vencimiento de la cédula informada por el usuario, formato YYYY-MM-DD o DD-MM-YYYY/DD/MM/YYYY (día primero). Se compara contra la fecha real de Registro Civil si el partner tiene validate_vencimiento=1.

string
Example
21/09/2034

Identidad validada. status indica si falta reclamar el certificado (VALIDATED, flujo B2C) o si ya se emitió y entregó (EMITTED, flujo B2B).

Media typeapplication/json
object
success
boolean
data
object
p_code
string
referenceId
string
status
string
Allowed values: VALIDATED EMITTED
titular
object
rut
string
nombreCompleto
string
email
string format: email
certificate

Solo presente si status es EMITTED (partner B2B).

object
serialNumber
string
validFrom
string format: date-time
validTo
string format: date-time
pfxFileName
string
Example
{
"success": true,
"data": {
"status": "VALIDATED",
"titular": {
"rut": "18925910-7",
"nombreCompleto": "FABIAN JESUS AGUILAR ALISTE"
}
}
}

Campo requerido faltante o formato inválido.

Media typeapplication/json
object
success
boolean
error
string
message
string
Example
{
"success": false,
"error": "VALIDATION_ERROR"
}

API Key inválida o ausente.

El código de compra no existe.

Rechazo de negocio: serie requerida y ausente, RUT no coincide con el código de compra, email ya usado por otro titular, validación en curso en otro código de compra, cédula no coincide con Registro Civil, o fecha de vencimiento no coincide.

Media typeapplication/json
object
success
boolean
error
string
message
string
Example
{
"success": false,
"error": "VALIDATION_ERROR"
}

El código de compra está bloqueado de forma permanente.

Se agotó el límite de intentos de validación de cédula (bloqueo de seguridad), o se superó el rate limit de emisión (10 requests/minuto por partner).