Discounts
Le module Discounts vous permet de lire les remises, de valider les coupons et de consulter le solde de bonus de l'utilisateur.
Plus d'informations sur l'interface utilisateur du module : https://doc.oneentry.cloud/docs/category/discounts (ouvre dans un nouvel onglet)
Utilisez ce module pour récupérer les remises et valider les codes promo : réductions en pourcentage ou d'un montant fixe, accumulation de points bonus et remises personnelles. Vous définissez les règles de remise dans le panneau d'administration OneEntry. Le module les récupère, valide les coupons au moment du paiement et lit le solde et l'historique de bonus de l'utilisateur actuel.
Le SDK est en lecture seule. Vous ne pouvez pas créer ni modifier de remises avec lui ; cela se fait dans le panneau d'administration. Lorsque vous y créez une remise, vous définissez un nom, un marqueur (identifier), un type (DISCOUNT, BONUS ou PERSONAL_DISCOUNT), une discountValue (PERCENT ou FIXED_AMOUNT plus la value numérique), une période de validité facultative (startDate / endDate) et des conditions facultatives.
Démarrage rapide
Initialisez le module à partir de defineOneEntry :
const { } = defineOneEntry( , { });
Validez un code promo au moment du paiement et lisez le résultat :
// Validate a coupon code entered by the customer.
const result = await Discounts.validateDiscountsCoupon("SUMMER-KBWZ-2428");
if ('statusCode' in result) {
console.error(result.message); // IError: the request failed
} else if (result.valid) {
console.log("Coupon applied:", result.coupon);
} else {
console.log("Invalid coupon:", result.error); // e.g. "Coupon not found"
}
Objet remise
Une remise (IDiscountsEntity) est une règle de tarification qui réduit le coût des produits ou des commandes :
type:DISCOUNT,BONUSouPERSONAL_DISCOUNT.discountValue: la manière dont la réduction est calculée. Il contient undiscountType(PERCENTouFIXED_AMOUNT), unevaluenumérique, uneapplicability(TO_PRODUCTouTO_ORDER) et unmaxAmountfacultatif.identifier: le marqueur unique utilisé pour le filtrage et les références.startDate/endDate: la période de validité facultative.conditions: les règles qui déterminent quand la remise s'applique (par produit, catégorie, montant du panier, utilisateur, …).
{
id: 1,
identifier: 'summer_sale',
localizeInfos: {
title: 'Summer Sale'
},
type: 'DISCOUNT',
startDate: '2025-06-01T00:00:00.000Z',
endDate: '2025-08-31T23:59:59.999Z',
discountValue: {
applicability: 'TO_ORDER',
discountType: 'PERCENT',
value: 20,
maxAmount: 100
},
conditionLogic: 'AND',
conditions: [
{ id: 1, conditionType: 'MIN_CART_AMOUNT', entityIds: null, value: { amount: 50 } }
]
}
Types de remises
Le champ type classe la remise :
type | Description |
|---|---|
| DISCOUNT | Remise standard appliquée aux produits/commandes |
| BONUS | Accumulation de points bonus (fidélité) |
| PERSONAL_DISCOUNT | Remise destinée à des utilisateurs ou groupes précis |
Le mode de calcul de la réduction est défini dans discountValue.discountType :
discountValue.discountType | Description | Exemple |
|---|---|---|
| PERCENT | Réduit le prix d'un pourcentage | 20 % sur tous les articles d'été |
| FIXED_AMOUNT | Réduit le prix d'un montant fixe | 10 $ de réduction sur les commandes de plus de 50 $ |
Méthodes
| Méthode | Description |
|---|---|
| getAllDiscounts() | Obtenir toutes les remises |
| getDiscountByMarker() | Obtenir une remise par marqueur |
| validateDiscountsCoupon() | Valider un code promo |
| getBonusBalance() | Obtenir le solde de bonus de l'utilisateur actuel |
| getBonusHistory() | Obtenir l'historique des transactions de bonus de l'utilisateur actuel |
| getDiscountsByVectorSearch() | Recherche les remises par leur sens (recherche vectorielle) |
Appliquer une remise au moment du paiement
Validez le code saisi par le client avec validateDiscountsCoupon(), puis passez-le comme couponCode à Orders.previewOrder() pour obtenir les totaux remisés, et à Orders.createOrder() lorsque vous passez la commande. Pour appliquer une remise sans coupon, passez son marqueur dans additionalDiscountsMarkers. La plateforme applique les remises et les coupons lors du calcul de la commande : ne recalculez donc pas les prix côté client. N'utilisez getDiscountByMarker() que pour afficher une remise (par exemple, son discountValue). createOrder() nécessite une autorisation utilisateur.
validateDiscountsCoupon() renvoie un ICouponValidationResult : { valid: boolean; coupon?; error? }. Si le coupon n'existe pas ou qu'un coupon à usage unique a déjà été utilisé, valid vaut false et error contient la raison (par exemple, "Coupon not found"). La validation du coupon ne vérifie pas les startDate/endDate de la remise : vérifiez-les donc vous-même (voir Validity period).
Période de validité
startDate et endDate sont facultatifs. Vérifiez-les avant d'afficher une remise, afin de n'afficher que les remises actuellement actives.
Badges de remise sur les produits
Récupérez toutes les remises avec getAllDiscounts(), associez-les aux produits selon votre propre logique métier et affichez un badge à partir de localizeInfos.title et discountValue.value. Les remises changent rarement : mettez-les en cache au chargement au lieu d'appeler l'API à répétition. Pour les noms multilingues, utilisez localizeInfos.
Voir aussi
- Products : produits auxquels s'appliquent les remises
- Orders : prévisualiser et créer des commandes avec remises appliquées
- Payments : paiements des commandes remisées
- Locales : noms de remises multilingues