Canjear un código de compra (validar identidad)
const url = 'https://dev-api.tsp.cl/firma_digital/dev/api/partners/v1/certificate_request';const options = { method: 'POST', headers: {'x-gw': '<x-gw>', 'Content-Type': 'application/json'}, body: '{"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"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Sección titulada «Authorizations»Request Bodyrequired
Sección titulada «Request Bodyrequired»object
Código de compra generado previamente para este partner.
Identificador propio del partner para esta transacción.
RUT del titular, con dígito verificador.
Example
18925910-74 dígitos — funciona como contraseña del PFX resultante.
Número de serie de la cédula. Obligatorio si el partner tiene flujo reducido (require_cedula_serie=1).
Nombres del titular. Obligatorio solo en flujo completo.
Apellido paterno. Obligatorio solo en flujo completo.
Obligatorio solo en flujo completo.
Example
+56911111111Token de Clave Única, si el flujo del partner la requiere.
Email adicional al que enviar copia del certificado (flujo completo).
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.
Example
21/09/2034Responses
Sección titulada « Responses »Identidad validada. status indica si falta reclamar el certificado (VALIDATED, flujo B2C) o si ya se emitió y entregó (EMITTED, flujo B2B).
object
object
object
Solo presente si status es EMITTED (partner B2B).
object
Example
{ "success": true, "data": { "status": "VALIDATED", "titular": { "rut": "18925910-7", "nombreCompleto": "FABIAN JESUS AGUILAR ALISTE" } }}Campo requerido faltante o formato inválido.
object
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.
object
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).