Ir al contenido

Sandbox e integración

  1. Entregar datos de config (ver) a la ticketera.

  2. Smoke test del iframe: la ticketera abre un evento de prueba; tu iframe carga y emite ready. Validás en logs que llegó un context.

  3. Selección feliz: usuario selecciona, vos emitís selected (el resumen se actualiza). Usuario presiona Continuar; te llega submit, persistís la oferta y respondés submitted con la interaction. GET de estado responde valid, llega purchaseReserved y devolvés expiresAt, llega purchasePaid y respondés 200 { "status": "confirmed" }.

  4. cleared: el usuario vacía el carrito del iframe; emitís cleared; la orden se crea sin add-on.

  5. expired: simulás expiración del hold; te llega purchaseExpired, liberás el hold y respondés 200 { "status": "expired" }. El siguiente GET responde 410 expired.

  6. Transición inválida: la ticketera fuerza un purchasePaid sobre valid. Devolvés 409 invalid_transition sin mutar.

  7. Idempotencia de webhooks: te llegan dos purchasePaid con misma interaction. Cumplís una sola vez y re-respondés el ack original.

  8. Refund parcial: llega purchaseRefunded con items que abarcan un subset de la compra. Revertís fulfillment de esos items, respondés 200 { "status": "confirmed" }, y el siguiente GET refleja partnerItems reducido.

  9. Refund total: llega purchaseRefunded con items que abarcan todos los items vigentes. Revertís y respondés 200 { "status": "refunded" }.

  10. Refund no consensuado: llega purchaseRefunded con refund.reason: chargeback afectando items refundable: false. Revertís fulfillment igual (la plata ya se fue) y respondés normalmente.

  11. Firma de producción: repetís los pasos en producción con un evento real de prueba.

Crowder Embed Validator

  • Valida estructura de mensajes postMessage y bodies HTTP.
  • Simula el context que Crowder envía.
  • Detecta errores antes de integrar con la ticketera.

Crowder Embed Template

Incluye:

  • Iframe que implementa ready, context, selected, submit/submitted, cleared, error.
  • Endpoint GET de estado con todos los lifecycle.
  • Endpoint POST de eventos con validación de transición y deduplicación por (interaction, status).
  • Manejo correcto de expiresAt en el ack del purchaseReserved.