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_operation qué 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

EMAIL

Texto libre + @ + guion + .sbx.brebtest.co

prueba01@anrn.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 PENDING. Después queda ACTIVE y reciben el webhook key.created.

202, la llave viene PENDING. Después queda FAILED con failure_code = U807 y reciben el webhook key.failed.

Eliminar (DELETE /v1/keys/{id})

202. Después la llave queda CANCELLED (con deleted_at) y reciben key.deleted.

202. Después la llave sigue ACTIVE, con failure_code = U809. No llega webhook.

Suspender (PATCH /v1/keys/{id}/suspend)

202. Después la llave queda SUSPENDED y reciben key.suspended.

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 ACTIVE y reciben key.activated.

202. Después la llave sigue SUSPENDED, con failure_code = U809. No llega webhook.

¿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 queda ACTIVE, se creó. Si queda FAILED, se rechazó.

  • Eliminar: hasta que pending_operation venga vacío. Si el estado es CANCELLED, se eliminó. Si failure_code tiene un valor, se rechazó.

  • Suspender o activar: hasta que pending_operation venga vacío. Si failure_code tiene 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

  1. 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.

  2. Una creación rechazada no tiene vuelta atrás. La llave queda FAILED. Para seguir probando, creen otra llave con otro valor.

  3. 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.)

  4. 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.

  5. 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.

  6. 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.