Guide : Configuration des produits dans le système d'abonnement (droits d'accès et crédits)
Grâce à l'architecture « Credit & Entitlement », nous configurons les produits dans le backend de manière à ce qu'ils contrôlent directement notre logique métier interne (coûts, crédits, activation de fonctionnalités). Le système prend en charge les passages en toute transparence entre les différents niveaux de fonctionnalité (mises à niveau et rétrogradations).
creditPrice (le champ « caméléon » pour les crédits): ce champ gère les transactions de crédits, mais son comportement varie en fonction du mode de paiement et du type d’abonnement :paidWithCredits = true) : Cette valeur définit les coûts. Le montant est débité du portefeuille (pour les achats ponctuels ou de manière récurrente lors du renouvellement automatique des abonnements internes).paidWithCredits = false) : Cette valeur définit l’ équivalent en crédits du paiement en argent réel. Le système fait ici la distinction selon le type :WALLET_TOP_UP .billingInterval (cycle) : Facultatif. Indique s’il s’agit d’un abonnement (par ex. « month » ou « year »).additionalProperties → subscriptionInfo (Le cœur de la fonctionnalité): un objet JSON qui définit ce qu’est le droit d’accès (abonnement interne) débloque exactement pour l’utilisateur.
Le subscriptionInfo contrôle directement les autorisations (HostFeature) de l'utilisateur.
type : la catégorie (par exemple « credit », « licence », « visualizer »). Par utilisateur et type , il n’y a jamais plus d’un droit actif.niveau : le niveau de fonctionnalité. Les niveaux supérieurs remplacent les niveaux inférieurs du même type (et inversement en cas de rétrogradation).features : un objet clé-valeur pour les droits spécifiques. Le backend traite les valeurs de manière typée :true) : Est repris tel quel comme indicateur (par ex. « panorama.model3ds » : true devient panorama.model3ds = « true »).entier) : Le backend combine la clé et le nombre pour former une nouvelle chaîne de drapeaux (par exemple « host.licences.visualizer » : 3 devient host.licences.visualizer3 = « true »).Un produit typique pour les nouveaux utilisateurs ou pour les changements de niveau (passages à un niveau supérieur ou inférieur).
creditPrice: 50 (Coût en cas de paiement via le portefeuille / valeur équivalente en cas de paiement via Stripe pour les conversions de devises et les remboursements ultérieurs)billingInterval: « month »subscriptionInfo:"subscriptionInfo" : {
"type" : "visualizer",
"level" : 3,
"features" : {
"host.licences.visualizer": 3,
"panorama.model3ds": true
}
}
Que se passe-t-il ? Le backend enregistre le droit de type « visualizer » et active dans les HostFeatures host.licences.visualizer3 = « true » ainsi que panorama.model3ds = « true » . Les anciennes clés Visualizer d’un niveau précédent (par exemple visualizer2) sont alors automatiquement supprimées.
Un autre abonnement basé sur un niveau, avec un prélèvement annuel.
creditPrice : 150billingInterval: « year »subscriptionInfo:« subscriptionInfo » : {
« type » : « licence »,
« level » : 2,
« features » : {
« host.licences.licence » : 2
}
}
Ce produit est destiné à être payé régulièrement via Stripe et à créditer en contrepartie l'utilisateur de crédits dans son portefeuille.
creditPrice : 100 (Comme il s'agit d'un type « credit », cette valeur sert uniquement à la recharge)billingInterval: « month »subscriptionInfo:« subscriptionInfo » : {
« type » : « credit »,
« features » : {}
}
Que se passe-t-il ? L'utilisateur effectue un paiement en argent réel via Stripe. Le webhook détecte le type « credit » et ignore le prélèvement direct. Le creditPrice de 100 reste sous la forme WALLET_TOP_UP dans le portefeuille de l'utilisateur. Les remboursements au prorata sont automatiquement désactivés pour ce type de transaction.