advanced_reports a un producto y cada cliente que pague recibirá una concesión que su aplicación comprobará mediante la API o mantendrá sincronizada con webhooks. No hay ninguna plataforma externa, paso de OAuth ni paso de entrega: la propia concesión es la capacidad.Qué se entrega
Nada sale de Dodo Payments. La concesión es el elemento entregable:- Tras la compra, Dodo Payments crea la concesión directamente en
Delivered. Nunca entra enPending, no requiere ninguna acción del cliente y no tiene ningún paso de entrega que pueda fallar. - La concesión incluye un payload tipado de
feature:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Su aplicación leefeature_idpara decidir qué desbloquear. - La cancelación, el reembolso o una revocación manual mueve la concesión a
Revoked, y el flag desaparece de las concesiones entregadas al cliente.
feature_id es un identificador que usted elige y no es único entre las concesiones. Dos concesiones pueden otorgar el mismo feature_id; por ejemplo, un plan Pro mensual y uno anual que otorguen ambos advanced_reports.Crear un feature flag
Open Entitlements
Name the Flag
api_access), y puede editarlo. No puede contener espacios.
Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.
Add Metadata (Optional)
Confirm

The created feature flag. The right pane tracks every customer grant issued from it.
Asociar a un producto
Abra un producto o cree uno y busque la tarjeta Entitlements. Haga clic en + para asociar concesiones existentes, seleccione su feature flag y haga clic en Done.
Attaching the feature flag to a product. One product can deliver multiple entitlements.

The product now includes the feature flag. Every successful purchase or active subscription grants it.
Configuración necesaria
Crear vía API
Asociar límites con metadatos
Un flag booleano responde a «¿Tiene este cliente la función?». Los metadatos responden a «¿Con qué configuración?». Los metadatos de la concesión aceptan valores de tipo string, integer, number y boolean. Cada concesión toma una instantánea inmutable de los metadatos de la concesión cuando se crea. La instantánea es lo que hace que los metadatos sean seguros para usar con límites de planes:- Editar posteriormente los metadatos de la concesión solo afecta a las concesiones futuras. Los clientes conservan los límites con los que realizaron la compra.
- Cada concesión devuelve su instantánea en el campo
metadata, por lo que una sola llamada a la API le proporciona tanto el flag como su configuración.
advanced_reports con { "tier": "pro", "monthly_report_limit": 100 } permite que su aplicación desbloquee el dashboard y además aplique la cuota de 100 informes sin una segunda consulta. Si posteriormente aumenta el límite a 250, los clientes existentes permanecerán en 100 hasta que reciban una nueva concesión, por ejemplo, después de cambiar de plan.
Comprobar las funciones de un cliente
Para crear el conjunto de funciones que tiene un cliente, enumere sus concesiones de feature flags entregadas. El endpoint devuelve una fila por concesión en todas las concesiones y puede filtrarlo porintegration_type y status. Estos ejemplos usan el client de Crear mediante la API.
feature solo se completa en las concesiones de feature_flag. Es null para cualquier otro tipo de integración. Consulte la referencia de API List Customer Grants para conocer la estructura completa de la respuesta.Ciclo de vida
Las concesiones de feature flags siguen el ciclo de vida de las concesiones estándar, con una simplificación: no hay ningún paso de entrega, por lo que las concesiones nunca permanecen enPending ni pasan a Failed.
Webhooks
Para replicar los flags en su propia base de datos en lugar de hacer polling, suscríbase a los eventos deentitlement_grant.*:
entitlement_grant.createdllega ya en estadoDelivered, con el payload defeature. Active la función.entitlement_grant.deliveredse activa cuando se restaura una concesión previamente revocada. Vuelva a activar la función.entitlement_grant.revokedindica que se retiró el acceso. Desactive la función y comprueberevocation_reasonpara elegir el mensaje que mostrará.
entitlement_grant.failed, porque la entrega se realiza completamente dentro de Dodo Payments.
Ejemplo: el plan Pro desbloquea informes avanzados
- Cree el flag. Establezca
feature_id: advanced_reportscon los metadatos{ "tier": "pro", "monthly_report_limit": 100 }. - Asócielo al producto de suscripción del plan Pro.
- Un cliente se suscribe. Dodo Payments crea una concesión
Deliveredy activaentitlement_grant.created. Su controlador de webhook activaadvanced_reportspara el cliente con un límite de 100. - Su aplicación controla la función. Al cargar el dashboard, compruebe el conjunto de funciones almacenado en caché (o llame a
listEntitlementGrants) y muestre la pestaña de informes solo cuando esté presenteadvanced_reports. - El cliente cancela. Dodo Payments revoca la concesión y activa
entitlement_grant.revoked, y su controlador desactiva la función. Si posteriormente la suscripción se recupera mediante el proceso de cobro,entitlement_grant.deliveredrestaura la función sin cambios en el código.
Prácticas recomendadas
- Use IDs de feature estables en
snake_case. El código de su aplicación comprueba estas cadenas, por lo que cambiar el nombre de una es un cambio incompatible en ambos lados. - Use un flag por capacidad. Es preferible usar
advanced_reportsyapi_accesscomo dos concesiones en lugar de un únicopro_bundle, para que las revocaciones y las combinaciones de planes se mantengan claras. - Gestione el estado mediante webhooks y verifíquelo con la API. Los webhooks mantienen actualizada su base de datos. El endpoint de listado es la fuente de verdad para los trabajos de conciliación y los fallos de caché.
- Trate
Revokedcomo inmediato. Un flag revocado significa que el cliente ya no paga por la función. Controle el acceso en la siguiente solicitud, no en la siguiente sesión. - Coloque los límites en los metadatos, no en el código. Cambiar una cuota requerirá entonces únicamente editar la concesión. Los nuevos clientes obtendrán el nuevo valor y las concesiones existentes conservarán la instantánea adquirida.