API de tarification commerciale

Cet article décrit différentes API tarifaires que le moteur de tarification Microsoft Dynamics 365 Commerce fournit.

Le moteur de tarification Dynamics 365 Commerce fournit les API Retail Server suivantes que les applications externes peuvent utiliser pour prendre en charge différents 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.

Note

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 Obligatoire
ChannelId long Obligatoire
CatalogId long Obligatoire
productIds IEnumerable<long> Obligatoire La liste des produits pour lesquels calculer les prix.
activeDate DateTimeOffset Obligatoire La date à laquelle les prix sont calculés.
customerId ficelle En option Numéro du compte client.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> En option Les niveaux d’affiliation et de fidélité
AffiliationId long Obligatoire L’ID d’affiliation.
LoyaltyTierId long En option L’ID du niveau de fidélité.
includeSimpleDiscountsInContextualPrice bool En option 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 En option 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 En option Définissez ce paramètre sur vrai pour obtenir des prix et des remises accessibles. La valeur par défaut est false.
Corps de demande d’échantillon
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Corps de réponse d’échantillon
{
    "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 version commerce 10.0.37 présente la classe PriceLookupContext. Cette classe contient tous les critères de recherche de l’API GetActivePrices. Il remplace les paramètres précédents des 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 pendant la recherche de remise.

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

Paramètres d’entrée

Name Sous-nom Type Obligatoire/facultatif Description
projectDomain ProjectionDomain Obligatoire
ChannelId long Obligatoire
CatalogId long Obligatoire
priceLookupContext PriceLookupContext Obligatoire
HeaderContext PriceLookupHeaderContext Obligatoire Contient CustomerAccountNumber, AffiliationLoyaltyTierLines et SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Obligatoire Contient ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId et SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool En option 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 En option 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 En option 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 les remises sur une seule ligne et les remises multilignes.

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 de panier sont calculés en tant qu’ensemble (par exemple, pour les offres groupées discrètes, les produits liés ou recommandés, ou les produits qui sont déjà dans le panier) peuvent 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. N’incluez aucun autre champ 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 ficelle Obligatoire L'identificateur du document des ventes.
CartLines IList<CartLine> En option 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 ficelle En option L’identificateur de l’article. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre ProductId.
InventoryDimensionId ficelle En option 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 ficelle En option L’unité du produit. Par défaut, si aucune valeur n’est fournie, l’API utilise l’unité de vente du produit.
CustomerId ficelle En option Numéro du compte client.
LoyaltyCardId ficelle En option 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<NiveauDeFidélitéAffiliation> En option 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 ficelle Requis dans l’étendue de AffiliationLoyaltyTier Numéro du compte client.
Coupons IList<Coupon> En option Les coupons qui ne sont pas applicables (inactifs, expirés ou introuvables) ne seront pas pris en compte dans le calcul du prix.
Code ficelle Requis dans l’étendue de Coupon Le code de coupon.
CodeId ficelle En option L’identificateur du code de coupon. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre Code.
DiscountOfferId ficelle En option L’identificateur de la remise. Si une valeur est fournie, elle doit correspondre à la valeur du paramètre Code.
Corps de demande 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, concentrez-vous 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

Deux API GetAvailablePromotions similaires sont disponibles :

  • Carts/GetAvailablePromotions accepte une liste d’identificateurs de ligne de panier en tant que paramètre.
  • GetAvailablePromotions accepte un objet DiscountsSearchCriteria en tant que 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é ficelle Obligatoire L'ID du panier.
cartLineIds IEnumerable<string> En option 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 cas d’usage principal de l’API GetAvailablePromotions est la page Toutes les remises , où les détaillants affichent 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 Obligatoire
ChannelId long Obligatoire
Mot clé ficelle En option
IsDiscountCodeRequired bool En option Indique si le code de coupon est requis ou non. Si la valeur est null, l’API récupère toutes les remises, quelles que soient les exigences du code de coupon.
StartDate DateTimeOffset Obligatoire Date de début (incluse).
EndDate DateTimeOffset Obligatoire Date de fin (incluse).
Corps de demande d’échantillon
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Corps de réponse d’échantillon
{
    "@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é ficelle Obligatoire L'ID du panier.
couponCodes IEnumerable<string> Obligatoire Les codes de coupon à ajouter au panier.
isLegacyDiscountCode bool En option 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é ficelle Obligatoire L'ID du panier.
couponCodes IEnumerable<string> Obligatoire 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és. Il peut également prendre la liste des ID de remise de produits et du contexte de tarification en tant qu’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> Obligatoire Liste des ID de remise de produits pour trouver des produits promotionnels.
priceLookupContext PriceLookupContext Obligatoire Le contexte de la tarification.
activeDate DateTimeOffset En option 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.
Corps de demande 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",
    },
}
Corps de réponse d’échantillon
{
    "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

Utilisez la classe PriceLookupContext pour le modèle de tarification basé sur les propriétés dans les API GetProductPromotions et GetActivePrices .

L’exemple suivant montre la structure de la classe PriceLookupContext.

{
    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>
        },
    ]
}
Corps de demande 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": []
}

Note

  • L’API déduit le groupe de clients à partir du numéro de compte client. Par conséquent, la demande ne spécifie pas de groupe de clients dans le paramètre PriceLookupHeaderContext.
  • Vous pouvez spécifier channelId dans le paramètre PriceLookupHeaderContext. Si vous ne le spécifiez pas, l’API utilise ChannelId à partir du contexte de requête (le canal actuel lors de l’utilisation du Store Commerce).