1
Encuentra la oferta
Extrae el catálogo o pide la mejor tasa en un comercio. → Leer el catálogo
2
Confirma que el monto es comprable
Fija o variable, con inventario o generada bajo demanda. → Fijas vs. variables
3
Compra
Una mutación, una tarjeta, una clave de idempotencia. → Comprar
4
Revela
Obtén el código, PIN o URL, y muéstralo correctamente. → Revelar
Vocabulario
Cinco términos hacen la mayor parte del trabajo en esta sección, y tres suenan parecidos.
Dos identificadores se confunden fácilmente:
merchantId identifica la marca, offeringMerchantId identifica a la parte que ofrece ese acuerdo en particular. Compras contra un offerId o un slug, nunca contra un merchantId.
Leyendo el catálogo
Tres caminos de entrada, para tres trabajos distintos.
Filtra
getMerchants a tarjetas de regalo con offerTypes: { giftCardOffer: true, cardLinkedOffer: false }. Las ofertas vinculadas a tarjeta existen en el catálogo, pero hoy solo las ofertas de tarjeta de regalo y exclusivas se pueden comprar a través del API.
El catálogo completo es un archivo en caché, actualizado dos veces al día.
getOfferQuote es en vivo. Si la tasa exacta importa al momento de la compra — y normalmente importa — cotiza antes de comprar en lugar de confiar en una extracción de catálogo de esta mañana. Las tasas promocionales se reflejan en ambos, incluyendo en exportaciones CSV generadas durante una promoción.Ofertas exclusivas
Las tasas están personalizadas por cuenta. Si la tuya tiene tasas negociadas, aparecen como ofertas contype: "EXCLUSIVE_RATE_OFFER" que llevan un exclusiveRateId. Pasa ese ID a purchaseGiftCard para forzar la compra en esa tasa; si lo omites, Fluz elige la mejor disponible.
Ofertas fijas vs. variables
Esta es la distinción que más da forma a cómo construyes, y un comercio puede tener ambas.FIJA
La tarjeta viene en denominaciones preestablecidas — 50, $100 — y compras una de ellas exactamente.Con frecuencia respaldada por inventario real que Fluz posee, por lo que las ofertas fijas suelen tener mejores tasas y límites de compra más altos.El inventario es finito. Se agota.
VARIABLE
Eliges cualquier monto dentro de un rango mínimo/máximo, y la tarjeta se genera en tiempo real.No hay inventario que agotar — suministro efectivamente ilimitado.Usualmente una tasa de recompensa menor que la oferta fija de la misma marca.
Dónde leer los montos comprables
Dos campos lo deciden, y la combinación determina en cuál campo está la respuesta. Si te equivocas, enviarás montos que la oferta no puede cumplir.
Observa que “tiene información de inventario” no significa “tiene inventario contable”. En una oferta variable,
stockInfo devuelve un rango, no una cantidad. Solo StockInfoFixedType lleva un número availableStock contra el que puedes decrementar.
Rellenar stockInfo requiere que Fluz confirme inventario con el proveedor, y los tiempos de respuesta del proveedor varían, por lo que solicitarlo hace la consulta más lenta. Pídelo solo cuando estés a punto de actuar sobre ello. → Obtener Inventario en Ofertas con Stock
Comprar una tarjeta
Una mutación:purchaseGiftCard. Tres decisiones.
1. Cómo elegir la oferta
Anclar te da certeza sobre la tasa; la selección automática te da certeza sobre el cumplimiento.
merchantSlug + minRewardRate es el punto medio y usualmente el valor predeterminado correcto para pedidos automatizados.
2. Cómo pagar
Se requiere al menos una fuente de fondos, y puedes combinar tu saldo de Fluz con otra.3. Idempotencia
idempotencyKey es obligatorio, y es la diferencia entre un reintento y una compra doble. Una clave por tarjeta prevista, reutilizada en cada reintento de esa misma tarjeta. → Idempotencia
→ Comprar Tarjeta de Regalo
Comprar más de una
Una llamada compra exactamente una tarjeta, en una oferta, a una tasa. No hay campo de cantidad ni mezcla entre ofertas. Para diez tarjetas, envía diez llamadas con diez claves de idempotencia distintas. Lo que sucede cuando sobrepasas el inventario depende de cómo elegiste la oferta:- Anclada (
offerId) — una vez que la oferta con stock se agota, las llamadas restantes fallan. Sin fallback automático. - Selección automática (
merchantSlug) — las llamadas restantes pasan a la siguiente mejor oferta, a menudo una variable con una tasa menor, a menos queminRewardRatelo bloquee.
Pedidos a volumen
Las compras contra la misma cuenta de Fluz se procesan secuencialmente. Si envías un lote grande de una vez, las llamadas se encolan unas detrás de otras, tardando ocasionalmente minutos en responder.Un timeout del cliente no es una cancelación. Fluz sigue procesando una solicitud por la que dejaste de esperar. Trata un timeout como un resultado desconocido, nunca como una falla.Resuélvelo reintentando con la misma
idempotencyKey — el reintento devuelve la compra original si ya tuvo éxito, y no cobrará doble. Emitir una clave nueva para una compra que ya intentaste es exactamente cómo ocurren los pedidos duplicados.Configura los timeouts del cliente en alrededor de un minuto, marca el paso de las solicitudes en tandas en lugar de todas a la vez y distribuye el volumen pesado entre múltiples cuentas.Revelar la tarjeta
Una compra te da ungiftCardId. Los detalles de canje llegan en una segunda llamada.
1
Obtén la tarjeta de regalo
Omite esto si acabas de comprar y ya tienes el
giftCardId. De lo contrario, getGiftCards las lista con purchaseId, purchaseDisplayId, purchaseValue, currentValue y status — suficiente para conciliar pedidos sin revelar cada tarjeta.2
Revelarla
revealGiftCardByGiftCardId devuelve code, pin, url y termsAndConditions.- No todas las tarjetas tienen los tres campos. Algunos comercios emiten un código sin PIN; otros emiten solo una URL. Fluz transmite lo que el comercio proporciona — maneja nulos.
- Renderiza según
deliveryFormatybarcodeType, y tomadeliveryFormatdegetGiftCards, no de la oferta actual del comercio. Las ofertas cambian; la tarjeta se emitió bajo el formato vigente al momento de la compra.barcodeTypeesNONE,C128,PDF417oQRCODE; cuando esNONE, considera mostrar elfaceplateUrlen su lugar. - Es posible que los detalles no estén listos al instante. Haz polling con backoff exponencial — 300 ms, duplicando, con tope de tres minutos — y detente tan pronto como regresen los detalles.
Alcances (scopes)
Habilítalos en la pestaña Permissions de tu app antes de construir. Un scope que solicitas pero no has habilitado se descarta silenciosamente. → Configurar App OAuth
Cuando las cosas fallan
Lista completa: Códigos de Error de Tarjetas de Regalo.
Antes de reembolsar a un usuario final en una compra fallida o con timeout, reintenta con la misma
idempotencyKey o busca la compra por ID. Las solicitudes con timeout frecuentemente tuvieron éxito, y el código permanece revelable hasta que se reembolsa la compra.
Próximos pasos
Obtener catálogo
Extrae comercios y sus ofertas.
Obtener la mejor oferta
Cotización en vivo para un comercio y monto.
Obtener inventario
Stock en ofertas fijas con inventario.
Comprar una tarjeta de regalo
La mutación, completa.
Comprar en lote
Pedir muchas tarjetas y el comportamiento al agotarse.
Ver tarjetas de regalo
Revelar códigos, PINs y URLs.