Guia: Pruebas de Llaves Asincrónica
Descripción
Al crear, eliminar, suspender y activar una llave, la API de Passport puede responder con un estado HTTP 202, cuando el DICE todavía está procesando la operación. El resultado final llega después, por Webhooks o consultando la llave mediante el endpoint: Consultar Llave.
En el ambiente de pruebas (sandbox) pueden provocar estos casos a propósito para comprobar que su integración los maneja bien. Solo se requiere crear la llave con un valor especial. Esta guía explica cómo hacerlo, paso a paso.
Este proceso solo esta disponible en el entorno de sandbox. En producción, estos valores se comportan como cualquier otra llave.
Antes de empezar
La primera respuesta tarda ~ 5 segundos y es un código HTTP 202.
El resultado final de la creación llega en aproximadamente 1 minuto después.
Mientras esperan, si consultan la llave a través del endpoint Consultar Llave, verán en
pending_operationqué operación está en curso. Si intentan otra operación sobre esa misma llave, recibirán un 409.
Como Ejecutar las Pruebas
Paso 1: Elijan la operación que quieren que pase (el "guion")
El guion son 4 letras. Cada posición corresponde a una operación, siempre en este orden:
Posición | 1.ª | 2.ª | 3.ª | 4.ª |
|---|---|---|---|---|
Operación | Crear | Eliminar | Suspender | Activar |
En cada posición ponen una de estas letras:
Letra | Número | Qué pasa con esa operación |
|---|---|---|
N | 0 | Normal: funciona como siempre. |
A | 1 | Aceptada después: responde 202 y, alrededor de 1 minuto después, se completa. |
R | 2 | Rechazada después: responde 202 y, alrededor de 1 minuto después, se rechaza. |
Ejemplo: ANRN significa:
Crear → A: queda en proceso y luego se acepta.
Eliminar → N: normal.
Suspender → R: queda en proceso y luego se rechaza.
Activar → N: normal.
Paso 2: Usar el Guion en el Valor de la Llave
Les recomendamos usar llaves de tipo alfanuméricas (ALPHA).
Tipo de Llave | Cómo se Arma | Ejemplo con el guion ANRN |
|---|---|---|
ALPHA (recomendada) | @SBX + guion + texto libre (hasta 13 letras o números) | @SBXANRNprueba01 |
Texto libre + @ + guion + .sbx.brebtest.co | ||
ID | SBX + guion + texto libre (hasta 11 letras o números) | SBXANRNprueba01 |
PHONE | 3000 + guion en números + 2 números libres | 3000102001 |
BCODE | 0099 + guion en números + 2 números libres | 0099102001 |
Importante
Para PHONE y BCODE el guion se escribe con números: N = 0, A = 1, R = 2. Por ejemplo, ANRN se escribe 1020.
Revisa el texto libre en cada prueba (prueba01, prueba02, prueba03…). Si la llave ya existe, la creación no funcionará como esperan.
El resto de los datos de la llave (cuenta, titular, etc.) se llenan como siempre.
Paso 3: Ejecuta las Operaciones y Revisa el Resultado
Comportamiento esperado de las operaciones:
Operación | Con A (aceptada) | Con R (rechazada) |
|---|---|---|
Crear (POST /v1/keys) | 202, la llave viene | 202, la llave viene |
Eliminar (DELETE /v1/keys/{id}) | 202. Después la llave queda | 202. Después la llave sigue |
Suspender (PATCH /v1/keys/{id}/suspend) | 202. Después la llave queda | 202. Después la llave sigue ACTIVE, con failure_code = U809. No llega webhook. |
Operación | Con A (aceptada) | Con R (rechazada) |
Activar (PATCH /v1/keys/{id}/activate) | 202. Después la llave queda | 202. Después la llave sigue |
¿Cómo saber si se terminó la operación?
Si los webhooks. no estan habilitados, o para los rechazos que no envían webhook, consulten GET /v1/keys/{id} cada pocos segundos:
Crear: hasta que el estado deje de ser
PENDING. Si quedaACTIVE, se creó. Si quedaFAILED, se rechazó.Eliminar: hasta que
pending_operationvenga vacío. Si el estado esCANCELLED, se eliminó. Sifailure_codetiene un valor, se rechazó.Suspender o activar: hasta que
pending_operationvenga vacío. Sifailure_codetiene un valor, se rechazó. Si viene vacío, se completó.
Importante
Usen siempre el codigo de fallo: failure_code para saber el estado, no el parámetro de texto de failure_reason.
Recetas Listas para Usar
Usa el valor de la llave, cambia el 01 del final por otro número en cada prueba y siga los pasos a continuación: Una operación a la vez
# | Tipo de Prueba | Valor de la Llave | Paso | Resultado Esperado |
|---|---|---|---|---|
1 | Creación aceptada | @SBXANNNprueba01 | Crear | Llave ACTIVE, webhook key.created |
2 | Creación rechazada | @SBXRNNNprueba01 | Crear | Llave FAILED, failure_code = U807, webhook key.failed |
3 | Eliminación aceptada | @SBXNANNprueba01 | Crear → Eliminar | Llave CANCELLED, webhook key.deleted |
4 | Eliminación rechazada | @SBXNRNNprueba01 | Crear → Eliminar | Llave sigue ACTIVE, failure_code = U809, sin webhook |
5 | Suspensión aceptada | @SBXNNANprueba01 | Crear → Suspender | Llave SUSPENDED, webhook key.suspended |
6 | Suspensión rechazada | @SBXNNRNprueba01 | Crear → Suspender | Llave sigue ACTIVE, failure_code = U809, sin webhook |
# | Tipo de Prueba | Valor de la Llave | Pasos | Resultado Esperado |
7 | Activación aceptada | @SBXNNNAprueba01 | Crear → Suspender → Activar | Llave ACTIVE, webhook key.activated |
8 | Activación rechazada | @SBXNNNRprueba01 | Crear → Suspender → Activar | Llave sigue SUSPENDED, failure_code = U809, sin webhook |
En las recetas 3 a 8, solo la última operación queda en proceso. Las anteriores (con N) responden con el comportamiento esperado.
Recorridos Completos
# | Tipo de Prueba | Valor de la Llave | Pasos | Resultado Esperado |
|---|---|---|---|---|
9 | Todo en proceso y todo aceptado | @SBXAAAAprueba01 | Crear → Suspender → Activar → Eliminar | Cada paso responde 202 y luego llega su webhook: key.created, key.suspended, key.activated, key.deleted. Al final, la llave queda CANCELLED. |
10 | Creación en proceso y suspensión rechazada | @SBXANRNprueba01 | Crear → Suspender | La creación termina ACTIVE (key.created). La suspensión se rechaza: la llave sigue ACTIVE con failure_code = U809. |
11 | Eliminar una llave suspendida | @SBXNANNprueba01 | Crear → Suspender → Eliminar | La suspensión es normal (key.suspended). La eliminación responde 202 y después la llave queda CANCELLED (key.deleted). |
12 | Rechazo, y luego eliminar la llave | @SBXNRNNprueba01 | Crear → Eliminar → Suspender → Eliminar | La primera eliminación se rechaza (U809). Después de suspender, la segunda eliminación funciona normal y la llave queda CANCELLED. |
Si se requiere probar otros tipos de llave, repitan la receta 1 con estos valores: prueba01@annn.sbx.brebtest.co (EMAIL), SBXANNNprueba01 (ID), 3000100001 (PHONE) y 0099100001 (BCODE).
Reglas Importantes
La letra se aplica siempre. Si una operación tiene R, se rechaza cada vez que la intenten, también si la reintentan. Para probar el caso aceptado, usen otra llave con A.
Una creación rechazada no tiene vuelta atrás. La llave queda FAILED. Para seguir probando, creen otra llave con otro valor.
Cómo borrar una llave que tiene R en eliminar: primero suspéndanla y después elimínenla. La R de eliminar solo se aplica mientras la llave está ACTIVE; si está suspendida, la eliminación funciona normal. (Para esto, la letra de suspender tiene que ser N o A.)
Si repiten una operación rechazada, failure_code viene vacío mientras la nueva operación está en proceso. Si se vuelve a rechazar, se llena de nuevo.
Solo valen las letras N, A y R (o los números 0, 1 y 2). No usen otras letras ni otros números: la llave puede comportarse de forma rara.
Teléfono y código de negocio tienen pocas combinaciones (solo 100 por guion). Úsenlos para una prueba puntual y eliminen esas llaves al terminar. Para pruebas repetidas, usen ALPHA o EMAIL.
Preguntas Frecuentes (FAQ)
1) La primera respuesta tarda unos 5 segundos. ¿Es normal?
Sí. Es el tiempo que esperamos al DICE antes de responder que la operación sigue en proceso.
2) Se rechazó una eliminación, suspensión o activación y no me llegó ningún webhook. ¿Es un error?
No. En esos casos no enviamos webhook. Tienen que consultar la llave con GET /v1/keys/{id} y revisar failure_code.
3)Creé la llave y todo fue normal, no se simuló nada. ¿Qué pasó?
Revisen que:
Si estas en sandbox;
El valor empieza exactamente como dice la tabla del Paso 2 (@SBX, SBX, 3000, 0099 o termina en .sbx.brebtest.co);
El guion tiene 4 letras y solo usa N, A y R (o 0, 1 y 2);
La posición de la operación que probaron no tiene una N.
4) Recibo un 409 al intentar otra operación sobre la llave.
Todavía hay una operación en curso. Esperen a que termine (alrededor de 1 minuto) y vuelvan a intentarlo.