Partager via


API de tarification commerciale

Cet article décrit diverses API de tarification fournies par le moteur de tarification Microsoft Dynamics 365 Commerce.

Le moteur de tarification Dynamics 365 Commerce fournit les API suivantes au serveur de vente au détail qui peuvent être utilisées par des applications externes pour prendre en charge divers scénarios de tarification :

  • GetActivePrices – Cette API obtient le prix calculé d’un produit, y compris les remises simples.
  • CalculateSalesDocument : cette API calcule les prix et les remises pour les produits à des quantités données s’ils sont achetés ensemble.
  • GetAvailablePromotions - Cette API obtient des remises applicables pour les produits dans le panier.
  • AddCoupons – Cette API ajoute des coupons à un panier.
  • RemoveCoupons – Cette API supprime les coupons d’un panier.

Pour plus d’informations sur l’utilisation des API au serveur de vente au détail dans des applications externes, consultez Utiliser les API au serveur de vente au détail dans des applications externes.

GetActivePrices

L’API GetActivePrices a été introduite dans la version 10.0.4 de Commerce. Cette API obtient le prix calculé d’un produit, y compris les remises simples. Elle ne calcule pas les remises multilignes et suppose que chaque produit d’une demande d’API a une quantité de 1. Cette API peut également prendre une liste de produits en entrée et consulter le prix de produits individuels en masse.

L’API GetActivePrices prend en charge les rôles Commerce Employé, Client, Anonyme, et Application.

Le principal cas d’utilisation des API GetActivePrices est la page de détails du produit (PDP), où les détaillants présentent le meilleur prix pour un produit, y compris les remises effectives.

Remarque

Si vous voyez moins de produits retournés pour un appel GetActivePrices, vous pouvez suivre Validateur de la configuration du commerce de canal pour valider vos configurations de commerce.

Le tableau suivant montre les paramètres d’entrée pour l’API GetActivePrices.

Name Sous-nom Type Obligatoire/Facultatif Description
projectDomain ProjectionDomain Requis
ChannelId long Obligatoire
CatalogId long Obligatoire
productIds IEnumerable<long> Obligatoire La liste des produits pour lesquels calculer les prix.
activeDate DateTimeOffset Requis La date à laquelle les prix sont calculés.
customerId chaîne Facultatif Numéro du compte client.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Facultatif Les niveaux d’affiliation et de fidélité
AffiliationId long Requis L'ID d'affiliation.
LoyaltyTierId long Facultatif L'ID du niveau de fidélité.
includeSimpleDiscountsInContextualPrice bool Facultatif Définissez ce paramètre sur vrai pour inclure des remises simples dans le calcul du prix. La valeur par défaut est false.
includeVariantPriceRange bool Facultatif Définissez ce paramètre sur vrai pour obtenir les prix minimum et maximum parmi toutes les variantes d’un produit maître. La valeur par défaut est false.
includeAttainablePricesAndDiscounts bool Facultatif Définissez ce paramètre sur vrai pour obtenir des prix et des remises accessibles. La valeur par défaut est false.
Demande de corps d’échantillon
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Exemple de corps de réponse
{
    "value": 
    [
        {
            "ProductId": 68719489871,
            "ListingId": 68719489871,
            "BasePrice": 0,
            "TradeAgreementPrice": 0,
            "AdjustedPrice": 0,
            "MaxVariantPrice": 0,
            "MinVariantPrice": 0,
            "CustomerContextualPrice": 0,
            "DiscountAmount": 0,
            "CurrencyCode": "USD",
            "ItemId": "82000",
            "InventoryDimensionId": null,
            "UnitOfMeasure": "ea",
            "ValidFrom": "2022-06-20T01:40:05.873-05:00",
            "ProductLookupId": 0,
            "ChannelId": 5637144592,
            "CatalogId": 0,
            "SalesAgreementPrice": 0,
            "PriceSourceTypeValue": 1,
            "DiscountLines": [],
            "AttainablePriceLines": [],
        }
    ]
}

Utiliser PriceLookupContext

La classe PriceLookupContext a été introduite dans la version 10.0.37 de Commerce. La classe contient tous les critères de recherche pour l’API GetActivePrices et remplace les paramètres précédents de productIds, activeDate, customerId et affiliationLoyaltyTiers. La classe possède également des propriétés supplémentaires que les développeurs peuvent utiliser pour filtrer les remises lors de la recherche de remise.

Selon les besoins de votre organisation, l’API GetActivePrices peut accepter soit les paramètres précédents, soit les nouveaux paramètres associés à la classe PriceLookupContext.

Paramètres d’entrée

Name Sous-nom Type Obligatoire/Facultatif Description
projectDomain ProjectionDomain Requis
ChannelId long Requis
CatalogId long Requis
priceLookupContext PriceLookupContext Requis
HeaderContext PriceLookupHeaderContext Requis Contient CustomerAccountNumber, AffiliationLoyaltyTierLines et SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Requis Contient ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId et SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool Facultatif Définissez ce paramètre sur vrai pour inclure des remises simples dans le calcul du prix. La valeur par défaut est false.
includeVariantPriceRange bool Facultatif Définissez ce paramètre sur vrai pour obtenir les prix minimum et maximum parmi toutes les variantes d’un produit maître. La valeur par défaut est false.
includeAttainablePricesAndDiscounts bool Facultatif Définissez ce paramètre sur vrai pour obtenir des prix et des remises accessibles. La valeur par défaut est false.

Pour plus d’informations, voir la rubrique PriceLookupContext.

CalculateSalesDocument

L’API CalculateSalesDocument a été introduite dans la version 10.0.25 de Commerce. Cette API calcule les prix et les remises pour les produits à des quantités données s’ils sont achetés ensemble dans une commande. Le calcul des prix derrière l’API CalculateSalesDocument prend en compte à la fois les remises sur une seule ligne et les remises sur plusieurs lignes.

Le principal cas d’utilisation pour l’API CalculateSalesDocument est le calcul de prix dans des scénarios où le contexte du panier complet ne persiste pas (comme les devis de vente). Les scénarios e-commerce en point de vente (PDV) et Commerce peuvent également bénéficier de ce cas d’utilisation. Un prix total inférieur lorsque les articles du panier sont calculés comme un ensemble (par exemple, pour des offres groupées discrètes, des produits liés ou recommandés, ou des produits qui ont déjà été ajoutés au panier) peut persuader les clients d’ajouter des produits au panier.

Le modèle de données pour la demande et la réponse de l’API CalculateSalesDocument est Panier. Cependant, dans le contexte de cette API, le modèle de données est nommé SalesDocument. Étant donné que la plupart des propriétés sont facultatives et que seules quelques-unes d’entre elles affectent le calcul du prix, seuls les champs liés au prix sont affichés dans le tableau suivant. Nous vous déconseillons d’impliquer d’autres champs dans la demande d’API.

La portée de l’API CalculateSalesDocument n’est que le calcul des prix et des remises. Les taxes et les frais ne sont pas impliqués.

Le tableau suivant montre les paramètres d’entrée à l’intérieur de l’objet nommé salesDocument.

Name Sous-nom Type Obligatoire/Facultatif Description
ID chaîne Requis L’identificateur du document des ventes.
CartLines IList<CartLine> Facultatif La liste des lignes pour lesquelles calculer les prix et les remises.
ID produit long Requis dans l'étendue de CartLine L'ID d'enregistrement de produit.
ItemId chaîne Facultatif L'identificateur de l'article. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre ProductId.
InventoryDimensionId chaîne Facultatif L'identificateur de la dimension de stock. Si une valeur est fournie, la combinaison des valeurs ItemId et InventoryDimensionId doivent correspondre à la valeur du paramètre ProductId.
Quantity decimal Requis dans l'étendue de CartLine La quantité du produit.
UnitOfMeasureSymbol chaîne Facultatif L'unité du produit. Par défaut, si aucune valeur n’est fournie, l’API utilise l’unité de vente du produit.
CustomerId chaîne Facultatif Numéro du compte client.
LoyaltyCardId chaîne Facultatif L'identificateur de la carte de fidélité. Tout compte client associé à la carte de fidélité doit correspondre à la valeur du paramètre CustomerId (s’il est fourni). La carte de fidélité ne sera pas prise en compte si elle est introuvable ou si son statut est Bloqué.
AffiliationLines IList<AffiliationLoyaltyTier> Facultatif Les lignes du niveau d’affiliation de la fidélité. Si les valeurs CustomerId et/ou LoyaltyCardId sont fournies, les lignes de niveau d’affiliation de fidélité correspondantes seront fusionnées avec les lignes fournies dans la valeur AffiliationLines.
AffiliationId long Requis dans l'étendue de AffiliationLoyaltyTier L'ID d'enregistrement de l'affiliation.
LoyaltyTierId long Requis dans l'étendue de AffiliationLoyaltyTier L'ID de l'enregistrement du niveau de fidélité.
AffiliationTypeValue int Requis dans l'étendue de AffiliationLoyaltyTier Une valeur qui indique si la ligne d’affiliation est du type General (0) ou du type Loyalty (1). Si ce paramètre est réglé sur 0, l’API prend la valeur AffiliationId comme identificateur et ignore la valeur LoyaltyTierId. Si ce paramètre est réglé sur 1, l’API prend la valeur LoyaltyTierId comme identificateur et ignore la valeur AffiliationId.
ReasonCodeLines Collection<ReasonCodeLine> Requis dans l’étendue de AffiliationLoyaltyTier Lignes de code Reason. Ce paramètre n’a aucun effet sur le calcul du prix mais est requis dans le cadre de l’objet AffiliationLoyaltyTier.
CustomerId chaîne Requis dans l’étendue de AffiliationLoyaltyTier Numéro du compte client.
Coupons IList<Coupon> Facultatif Les coupons qui ne sont pas applicables (inactifs, expirés ou introuvables) ne seront pas pris en compte dans le calcul du prix.
Code chaîne Requis dans l’étendue de Coupon Le code de coupon.
CodeId chaîne Facultatif L'identificateur du code de coupon. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre Code.
DiscountOfferId chaîne Facultatif L’identificateur de la remise. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre Code.
Demande de corps d’échantillon
{
    "salesDocument": 
    {
        "Id": "CalculateSalesDocument",
        "CartLines": 
        [
            {
                "ProductId": 68719491408,
                "ItemId": "91003",
                "InventoryDimensionId": "",
                "Quantity": 1,
                "UnitOfMeasureSymbol": "ea"
            },
            {
                "ProductId": 68719493014,
                "Quantity": 2,
                "UnitOfMeasureSymbol": "ea"
            }
        ],
        "CustomerId": "3003",
        "AffiliationLines": 
        [
            {
                "AffiliationId": 68719476742,
                "LoyaltyTierId": 0,
                "AffiliationTypeValue": 0,
                "ReasonCodeLines": [],
                "CustomerId": null
            }
        ],
        "LoyaltyCardId": "55103",
        "Coupons": 
        [
            {
                "CodeId": "CODE-0005",
                "Code": "CPN0004",
                "DiscountOfferId": "ST100077"
            }
        ]
    }
}

L’objet cart entier est renvoyé comme corps de réponse. Pour vérifier les prix et les remises, vous devez vous concentrer sur les champs du tableau suivant.

Name Sous-nom Type Description
NetPrice decimal Le prix net de l’ensemble du document de vente avant application des remises.
DiscountAmount decimal Le montant total de la remise de l’ensemble du document de vente.
TotalAmount decimal Le montant total de l’ensemble du document de vente.
CartLines IList<CartLine> Lignes calculées qui incluent les détails du prix et de la remise.
Prix decimal Le prix du produit à l’unité.
NetPrice decimal Le prix net de la ligne avant application des remises (= Prix x Quantité).
DiscountAmount decimal Le montant de la remise.
TotalAmount decimal Le résultat final de la tarification totale de la ligne.
PriceLines IList<PriceLine> Détails du prix, y compris la source du prix (prix de base, ajustement de prix ou accord commercial) et le montant.
DiscountLines IList<DiscountLine> Détails de la remise.

GetAvailablePromotions

Il existe deux API GetAvailablePromotions similaires :

  • Carts/GetAvailablePromotions accepte une liste d’identifiants de ligne de panier comme paramètre.
  • GetAvailablePromotions accepte un objet DiscountsSearchCriteria comme paramètre.

Carts/GetAvailablePromotions

Étant donné un panier comportant plusieurs lignes de panier, l’API Carts/GetAvailablePromotions renvoie toutes les remises applicables pour les lignes de panier.

Le principal cas d’utilisation de l’API Carts/GetAvailablePromotions est la page du panier, où les détaillants présentent les remises appliquées ou les coupons disponibles pour le panier actuel.

Le tableau suivant répertorie les paramètres d’entrée pour l’API Carts/GetAvailablePromotions.

Name Type Obligatoire/Facultatif Description 
clé chaîne Obligatoire L’ID du panier.
cartLineIds IEnumerable<string> Facultatif Définissez ce paramètre pour renvoyer les remises uniquement pour les lignes de panier sélectionnées.
Corps de réponse d’échantillon
{
    "value": 
    [
        {
            "LineId": "f495ffa507bc4f63a47a409cd8713dd7",
            "Promotion": {
                "OfferId": "ST100012",
                "OfferName": "Loyalty 5% off over $100",
                "PeriodicDiscountTypeValue": 4,
                "IsDiscountCodeRequired": false,
                "ValidationPeriodId": null,
                "AdditionalRestrictions": null,
                "Description": "All loyalty members get 5% with transaction total above $10 unless some exclusive or best price discounts are already applied on the transaction",
                "ValidFromDate": "2022-06-20T06:52:56.2460219Z",
                "ValidToDate": "2022-06-20T06:52:56.2460224Z",
                "CouponCodes": [],
                "ValidationPeriod": null
            }
        }
    ]
}

GetAvailablePromotions

L’API GetAvailablePromotions renvoie toutes les remises applicables pour le canal donné.

Le principal cas d’utilisation de l’API GetAvailablePromotions est la page « Toutes les remises », où les détaillants présentent toutes les remises pour le canal actuel.

Le tableau suivant répertorie les paramètres d’entrée pour l’API GetAvailablePromotions.

Name Sous-nom Type Obligatoire/Facultatif Description
searchCriteria DiscountsSearchCriteria Requis
ChannelId long Requis
Mot clé chaîne Facultatif
IsDiscountCodeRequired bool Facultatif Indique si le code de coupon est requis ou non. Si la valeur null est transmise, toutes les remises sont récupérées, quelles que soient les exigences du code de coupon.
StartDate DateTimeOffset Requis Date de début (incluse).
EndDate DateTimeOffset Requis Date de fin (incluse).
Demande de corps d’échantillon
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Exemple de corps de réponse
{
    "@odata.context": "https://usnconeboxax1ret.cloud.onebox.dynamics.com/Commerce/$metadata#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.Promotion)",
    "value": [
        {
            "OfferId": "ST100024",
            "OfferName": "Weekly ad",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": true,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100019",
            "OfferName": "Take 20 off anything",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": true,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100015",
            "OfferName": "Watches",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100012",
            "OfferName": "Loyalty 5% off over $100",
            "PeriodicDiscountTypeValue": 4,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "All loyalty members get 5% with transaction total above $10 unless some exclusive or best price discounts are already applied on the transaction",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100011",
            "OfferName": "Loyalty 50% off sunglasses",
            "PeriodicDiscountTypeValue": 1,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Gold tier Loyalty customers get 50% on Sunglasses when purchased with a Top, Scarf or Men's Casual shirts",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100009",
            "OfferName": "Student discount",
            "PeriodicDiscountTypeValue": 2,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Students get 10% off for on Jeans and Backpacks",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100004",
            "OfferName": "Soccer sale",
            "PeriodicDiscountTypeValue": 3,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Providing you great discounts ranging from 10% to 20% on all branded Soccer balls.  We carry a full line of soccer balls.  Buy one for yourself or gift it to someone.  We promise you that you won't be disappointed.  If you don't see something that you are looking for please call us.  This offer is only valid at our Retail Malls.",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        },
        {
            "OfferId": "ST100003",
            "OfferName": "BMX helmet sale",
            "PeriodicDiscountTypeValue": 0,
            "IsDiscountCodeRequired": false,
            "ValidationPeriodId": "",
            "AdditionalRestrictions": "",
            "Description": "Get 20% off on all branded youth BMX helmets when you buy two or more.  Choose from our great selection of BMX bike helmets from top brands, including ProTec, Giro, Bell and SixSixOne BMX helmets.  This offer is only available at our Retail Mall stores",
            "ValidFromDate": "1900-01-01T00:00:00Z",
            "ValidToDate": "2154-12-31T00:00:00Z",
            "CouponCodes": [],
            "ExtensionProperties": [
                {
                    "Key": "DATAAREAID",
                    "Value": {
                        "StringValue": "usrt"
                    }
                },
                {
                    "Key": "DATEVALIDATIONTYPE",
                    "Value": {
                        "IntegerValue": 1
                    }
                }
            ]
        }
    ]
}

AddCoupons

L’API AddCoupons prend en charge l’ajout d’une liste de coupons à un panier. Il renvoie l’objet panier après l’ajout des coupons.

Le tableau suivant montre les paramètres d’entrée pour l’API AddCoupons.

Name Type Obligatoire/facultatif Description 
clé chaîne Obligatoire L’ID du panier.
couponCodes IEnumerable<string> Obligatoire Les codes de coupon à ajouter au panier.
isLegacyDiscountCode bool Facultatif Définissez ce paramètre sur vrai pour indiquer que le coupon est un code de remise hérité. La valeur par défaut est false.

RemoveCoupons

L’API RemoveCoupons prend en charge la suppression d’une liste de coupons d’un panier. Elle renvoie l’objet panier après la suppression des coupons.

Le tableau suivant montre les paramètres d’entrée pour l’API RemoveCoupons.

Name Type Obligatoire/facultatif Description 
clé chaîne Obligatoire L’ID du panier.
couponCodes IEnumerable<string> Requis Les codes de coupon à supprimer du panier.

GetProductPromotions

L’API GetProductPromotions a été introduite dans la version 10.0.38 de Commerce. Cette API obtient une liste de produits promotionnels avec des remises sur les produits données, et peut également prendre une liste d’identifiants de remise sur les produits et le contexte de tarification en entrée et interroger les produits promotionnels associés. Le principal cas d’utilisation de l’API GetProductPromotions concerne les pages de listes de produits, où les détaillants présentent des produits bénéficiant de remises. Cette API prend en charge à la fois le modèle de tarification basé sur la propriété et l’ancien modèle de tarification.

Le tableau suivant montre les paramètres d’entrée pour l’API GetProductPromotions.

Name Sous-nom Type Obligatoire/Facultatif Description
productDiscountIds IEnumerable<string> Requis La liste des identifiants de remise sur les produits à rechercher pour les produits promotionnels.
priceLookupContext PriceLookupContext Requis Le contexte de la tarification.
activeDate DateTimeOffset Facultatif Date de prise en compte de la promotion.

Restrictions et limitations :

  • Ne peut accepter qu’un maximum de cinq identifiants de remise sur les produits en entrée.
  • Seules les remises simples sont prises en charge.
Demande de corps d’échantillon
{
    {
    "productDiscountIds": 
    [
        "ST100009",
        "ST100024"
    ],
    "priceLookupContext": 
    {
        "HeaderContext": 
        {
            "AffiliationLoyaltyTierLines": 
            [
                {
                    "AffiliationId": 5637144577,
                    "LoyaltyTierId": 0, 
                    "AffiliationTypeValue": 0,
                    "ReasonCodeLines": [],
                    "CustomerId": "2001"
                }
            ]
        },
        "LineContexts": []
    },
    "activeDate": "2023-08-20T14:40:05.873+08:00",
    },
}
Exemple de corps de réponse
{
    "value": 
    [
        {
            "ProductId": 68719489871,
            "ProductDiscounts":
            [
                {
                    "OfferId": "ST100009",
                    "OfferName": "Student discount",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "Students get 10% off on Jeans and Backpacks",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                },
                {
                    "OfferId": "ST100024",
                    "OfferName": "Weekly ad",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                }
            ]   
        },
        {
            "ProductId": 68719489872,
            "ProductDiscounts":
            [
                {
                    "OfferId": "ST100009",
                    "OfferName": "Student discount",
                    "PeriodicDiscountTypeValue": 2,
                    "IsDiscountCodeRequired": false,
                    "ValidationPeriodId": null,
                    "AdditionalRestrictions": null,
                    "Description": "Students get 10% off on Jeans and Backpacks",
                    "ValidFromDate": "1900-01-01T00:00:00.0000000Z",
                    "ValidToDate": "2154-12-31T00:00:00.0000000Z",
                    "CouponCodes": [],
                    "DateValidationTypeValue": 1
                }
            ]   
        }
    ]
}

Pour plus d’informations, voir la rubrique PriceLookupContext.

PriceLookupContext

La classe PriceLookupContext est utilisée pour le modèle de tarification basé sur la propriété dans les API GetProductPromotions et GetActivePrices .

La structure de la classe PriceLookupContext est illustrée dans l’exemple suivant.

{
    HeaderContext: PriceLookupHeaderContext
    {
        CustomerAccountNumber: string
        AffiliationLoyaltyTierLines: IEnumerable<AffiliationLoyaltyTier>
        ChannelId: long?
        SalesOrderProperties: IEnumerable<AttributeValueBase>
    },
    LineContexts: IEnumerable<PriceLookupLineContext>
    [
        {
            ProductRecordId: string
            UnitOfMeasureSymbol: string
            InventorySiteId: string
            InventoryLocationId: string
            DeliveryMode: string
            CatalogId: string
            SalesLineProperties: IEnumerable<AttributeValueBase>
        },
    ]
}
Demande de corps d’échantillon
"PriceLookupContext":
{
    "HeaderContext": 
    {
        "CustomerAccount": 2001,
        "AffiliationLoyaltyTierLines": 
        [
            {
                "AffiliationId": 5637144577,
                "LoyaltyTierId": 0, 
                "AffiliationTypeValue": 0,
                "ReasonCodeLines": [],
                "CustomerId": "2001"
            }
        ],
        "SalesOrderProperties":
        [
            {
                "@odata.type": "#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue",
                "Name": "CalcDate",
                "TextValue": "2022-10-10"
            }
        ]
    },
    "LineContexts": []
}

Remarque

  • Aucun groupe de clients n’est spécifié dans le paramètre PriceLookupHeaderContext, car il a été déduit du numéro de compte client.
  • Le ChannelId peut être spécifié dans le paramètre PriceLookupHeaderContext. S’il n’est pas spécifié, le ChannelId du contexte de demande (le canal actuel lors de l’utilisation de Store Commerce) est utilisé.