Condividi tramite


API dei prezzi di Commerce

Questo articolo descrive varie API per i prezzi fornite dal motore prezzi di Microsoft Dynamics 365 Commerce.

Il motore dei prezzi di Dynamics 365 Commerce fornisce le API server retail seguenti che possono essere usate dalle applicazioni esterne per supportare diversi scenari di prezzi:

  • GetActivePrices: questa API ottiene il prezzo calcolato di un prodotto, inclusi semplici sconti.
  • CalculateSalesDocument: questa API calcola prezzi e sconti per prodotti a determinate quantità se acquistati insieme.
  • GetAvailablePromotions: questa API ottiene sconti applicabili per i prodotti nel carrello.
  • AddCoupons: questa API aggiunge buoni sconto a un carrello.
  • RemoveCoupons: questa API rimuove buoni sconto da un carrello.

Per ulteriori informazioni su come utilizzare le API di Retail Server in applicazioni esterne, vedi Utilizzare le API di Retail Server in applicazioni esterne.

GetActivePrices

L'API GetActivePrices è stata introdotta nella versione 10.0.4 di Commerce. Questa API ottiene il prezzo calcolato di un prodotto, inclusi semplici sconti. Non calcola sconti plurimi e presume che la quantità di ogni prodotto in una richiesta API sia pari a 1. Questa API può anche utilizzare un elenco di prodotti come input ed eseguire query sul prezzo di singoli prodotti in blocco.

L'API GetActivePrices supporta i ruoli Dipendente, Cliente, Anonimo e Applicazione di Commerce.

Il caso d'uso principale per l'API GetActivePrices è la pagina dei dettagli del prodotto (PDP), in cui i rivenditori presentano il miglior prezzo di un prodotto, inclusi eventuali sconti effettivi.

Nota

Se vedi meno prodotti restituiti per una chiamata GetActivePrices, puoi seguire Strumento di convalida configurazione merchandising canale per convalidare le configurazioni del merchandising.

La tabella seguente mostra i parametri di input per l'API GetActivePrices.

Nome Nome secondario Tipo Obbligatorio/Facoltativo Descrizione
projectDomain ProjectionDomain Obbligatorio
ChannelId long Obbligatorio
CatalogId long Obbligatorio
productIds IEnumerable<long> Obbligatorio L'elenco dei prodotti per cui calcolare i prezzi.
activeDate DateTimeOffset Obbligatorio La data in cui vengono calcolati i prezzi.
customerId stringa Facoltativo Numero del conto cliente.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Facoltativo I livelli di rapporto e fedeltà.
AffiliationId long Obbligatorio L'ID rapporto.
LoyaltyTierId long Facoltativo L'ID livello fedeltà.
includeSimpleDiscountsInContextualPrice bool Facoltativo Imposta questo parametro su true per includere semplici sconti nel calcolo del prezzo. Il valore predefinito è false.
includeVariantPriceRange bool Facoltativo Imposta questo parametro su true per ottenere i prezzi minimo e massimo tra tutte le varianti di un prodotto master. Il valore predefinito è false.
includeAttainablePricesAndDiscounts bool Facoltativo Imposta questo parametro su true per ottenere prezzi e sconti raggiungibili. Il valore predefinito è false.
Corpo della richiesta di esempio
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Corpo della richiesta di esempio
{
    "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": [],
        }
    ]
}

Utilizzare PriceLookupContext

La versione Commerce versione 10.0.37 introduce la classe PriceLookupContext. Questa classe contiene tutti i criteri di ricerca per l'API GetActivePrices. Sostituisce i parametri precedenti di productIds, activeDate, customerId e affiliationLoyaltyTiers. La classe include anche proprietà aggiuntive che gli sviluppatori possono usare per filtrare gli sconti durante la ricerca dello sconto.

A seconda delle esigenze dell'organizzazione, l'API GetActivePrices può accettare i parametri precedenti o i nuovi parametri associati alla classe PriceLookupContext.

Parametri di input

Nome Nome secondario Tipo Obbligatorio/Facoltativo Descrizione
projectDomain ProjectionDomain Obbligatorio
ChannelId long Obbligatorio
CatalogId long Obbligatorio
priceLookupContext PriceLookupContext Obbligatorio
HeaderContext PriceLookupHeaderContext Obbligatorio Contiene CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Obbligatorio Contiene ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId e proprietà della riga di vendita.
includeSimpleDiscountsInContextualPrice bool Facoltativo Imposta questo parametro su true per includere semplici sconti nel calcolo del prezzo. Il valore predefinito è false.
includeVariantPriceRange bool Facoltativo Imposta questo parametro su true per ottenere i prezzi minimo e massimo tra tutte le varianti di un prodotto master. Il valore predefinito è false.
includeAttainablePricesAndDiscounts bool Facoltativo Imposta questo parametro su true per ottenere prezzi e sconti raggiungibili. Il valore predefinito è false.

Per ulteriori informazioni, vedi PriceLookupContext.

CalculateSalesDocument

L'API CalculateSalesDocument è stata introdotta nella versione 10.0.25 di Commerce. Questa API calcola i prezzi e gli sconti per i prodotti a determinate quantità se vengono acquistati insieme in un ordine. Il calcolo dei prezzi dietro l'API CalculateSalesDocument considera gli sconti a riga singola e gli sconti su più righe.

Il caso d'uso principale per l'API CalculateSalesDocument è il calcolo dei prezzi in scenari in cui il contesto del carrello completo non persiste (come offerte di vendita). Anche gli scenari nel POS e nell'e-commerce di Commerce possono trarre vantaggio da questo caso d'uso. Un prezzo totale inferiore quando gli articoli del carrello vengono calcolati come set (ad esempio, per bundle discreti, prodotti collegati o consigliati o prodotti che sono già presenti nel carrello) potrebbero convincere i clienti ad aggiungere prodotti al carrello.

Il modello di dati sia per la richiesta che per la risposta dell'API CalculateSalesDocument è Cart. Tuttavia, nel contesto di questa API, il modello di dati è denominato SalesDocument. Poiché la maggior parte delle proprietà è facoltativa e solo alcune di esse influiscono sul calcolo dei prezzi, nella tabella seguente vengono mostrati solo i campi relativi ai prezzi. Non includere altri campi nella richiesta API.

L'ambito dell'API CalculateSalesDocument è solo il calcolo di prezzi e sconti. IVA e spese non sono incluse.

La tabella seguente mostra i parametri di input nell'oggetto denominato salesDocument.

Nome Nome secondario Tipo Obbligatorio/Facoltativo Descrizione
ID stringa Obbligatorio L'identificatore del documento di vendita.
CartLines IList<CartLine> Facoltativo L'elenco delle righe per cui calcolare prezzi e sconti.
ID prodotto long Richiesto nell'ambito di CartLine L'ID record prodotto.
ItemId stringa Facoltativo L'Identificatore dell'articolo. Se viene fornito un valore, deve corrispondere al valore del parametro ProductId.
InventoryDimensionId stringa Facoltativo L'identificatore della dimensione inventariale. Se viene fornito un valore, la combinazione dei valori ItemId e InventoryDimensionId deve corrispondere al valore del parametro ProductId.
Quantity decimale Richiesto nell'ambito di CartLine La quantità del prodotto.
UnitOfMeasureSymbol stringa Facoltativo L'unità del prodotto. Per impostazione predefinita, se non viene fornito un valore, l'API utilizza l'unità di vendita del prodotto.
CustomerId stringa Facoltativo Numero del conto cliente.
LoyaltyCardId stringa Facoltativo L'identificatore della carta fedeltà. Qualsiasi conto cliente associato alla carta fedeltà deve corrispondere al valore del parametro CustomerId (se fornito). La carta fedeltà non viene presa in considerazione se non viene trovata o se lo stato è Bloccata.
AffiliationLines IList<AffiliationLoyaltyTier> Facoltativo Le righe del livello di fedeltà del rapporto. Se vengono specificati i valori CustomerId e/o LoyaltyCardId, le righe del livello di fedeltà del rapporto corrispondenti vengono unite alle righe nel valore AffiliationLines.
AffiliationId long Richiesto nell'ambito di AffiliationLoyaltyTier L'ID record rapporto.
LoyaltyTierId long Richiesto nell'ambito di AffiliationLoyaltyTier L'ID record livello di fedeltà.
AffiliationTypeValue int Richiesto nell'ambito di AffiliationLoyaltyTier Un valore che indica se il tipo della riga del rapporto è Generale (0) o Fedeltà (1). Se questo parametro è impostato su 0, l'API usa il valore AffiliationId come identificatore e ignora il valore LoyaltyTierId. Se questo parametro è impostato su 1, l'API usa il valore LoyaltyTierId come identificatore e ignora il valore AffiliationId.
ReasonCodeLines Collection<ReasonCodeLine> Richiesto nell'ambito di AffiliationLoyaltyTier Le righe del codice motivo. Questo parametro non ha effetto sul calcolo del prezzo ma è obbligatorio come parte dell'oggetto AffiliationLoyaltyTier.
CustomerId stringa Richiesto nell'ambito di AffiliationLoyaltyTier Numero del conto cliente.
Buoni sconto IList<Coupon> Facoltativo I buoni sconto non applicabili (inattivi, scaduti o non trovati) non vengono presi in considerazione nel calcolo del prezzo.
Codice stringa Richiesto nell'ambito di Coupon Il codice buono sconto.
CodeId stringa Facoltativo L'identificatore del codice buono sconto. Se viene fornito un valore, deve corrispondere al valore del parametro Code.
DiscountOfferId stringa Facoltativo L'Identificatore dello sconto. Se viene fornito un valore, deve corrispondere al valore del parametro Code.
Corpo della richiesta di esempio
{
    "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'intero oggetto carrello viene restituito come corpo della risposta. Per controllare i prezzi e gli sconti, concentrarsi sui campi nella tabella seguente.

Nome Nome secondario Tipo Descrizione
NetPrice decimale Il prezzo netto dell'intero documento di vendita prima che vengano applicati gli sconti.
DiscountAmount decimale L'importo totale delle sconto dell'intero documento di vendita.
TotalAmount decimale L'importo totale dell'intero documento di vendita.
CartLines IList<CartLine> Le righe calcolate che includono dettagli su prezzo e sconti.
Prezzo decimale Il prezzo unitario del prodotto.
NetPrice decimale Il prezzo netto della riga prima che vengano applicati gli sconti (= Prezzo × Quantità).
DiscountAmount decimale L'importo dello sconto.
TotalAmount decimale Il risultato finale del prezzo totale della riga.
PriceLines IList<PriceLine> I dettagli sul prezzo, inclusa l'origine del prezzo (prezzo base, rettifica prezzo o accordo commerciale) e l'importo.
DiscountLines IList<LineaSconto> I dettagli dello sconto.

GetAvailablePromotions

Sono disponibili due API GetAvailablePromotions simili:

  • Carts/GetAvailablePromotions accetta un elenco di identificatori di riga del carrello come parametro.
  • GetAvailablePromotions accetta un oggetto DiscountSearchCriteria come parametro.

Carts/GetAvailablePromotions

Dato un carrello che ha diverse righe di carrello, l'API Carts/GetAvailablePromotions restituisce tutti gli sconti applicabili per le righe del carrello.

Il caso d'uso principale per l'API Carts/GetAvailablePromotions è la pagina del carrello, in cui i rivenditori presentano gli sconti applicati o i buoni sconto disponibili per il carrello corrente.

La tabella seguente elenca i parametri di input per l'API Carts/GetAvailablePromotions.

Nome Tipo Obbligatorio/Facoltativo Descrizione
chiave stringa Obbligatorio L'ID carrello.
cartLineIds IEnumerable<string> Facoltativo Imposta questo parametro per restituire sconti solo per le righe del carrello selezionate.
Corpo della richiesta di esempio
{
    "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 restituisce tutti gli sconti applicabili per il canale in questione.

Il caso d'uso principale per l'API GetAvailablePromotions è la pagina Tutti gli sconti , in cui i rivenditori mostrano tutti gli sconti per il canale corrente.

La tabella seguente elenca i parametri di input per l'API GetAvailablePromotions.

Nome Nome secondario Tipo Obbligatorio/Facoltativo Descrizione
searchCriteria DiscountsSearchCriteria Obbligatorio
ChannelId long Obbligatorio
Parola chiave stringa Facoltativo
IsDiscountCodeRequired bool Facoltativo Indica se il codice buono sconto è richiesto o meno. Se viene passato null, l'API recupera tutti gli sconti, indipendentemente dai requisiti del codice coupon.
StartDate DateTimeOffset Obbligatorio La data di inizio (inclusiva).
EndDate DateTimeOffset Obbligatorio La data di fine (inclusiva).
Corpo della richiesta di esempio
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Corpo della richiesta di esempio
{
    "@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 supporta l'aggiunta di un elenco di buoni sconto a un carrello. Restituisce l'oggetto carrello dopo l'aggiunta di buoni sconto.

La tabella seguente mostra i parametri di input per l'API AddCoupons.

Nome Tipo Obbligatorio/Facoltativo Descrizione
chiave stringa Obbligatorio L'ID carrello.
couponCodes IEnumerable<string> Obbligatorio I codici buoni sconto da aggiungere al carrello.
isLegacyDiscountCode bool Facoltativo Imposta questo parametro su true per indicare che il buono sconto è un codice sconto legacy. Il valore predefinito è false.

RemoveCoupons

L'API RemoveCoupons supporta la rimozione di un elenco di buoni sconto da un carrello. Restituisce l'oggetto carrello dopo la rimozione di buoni sconto.

La tabella seguente mostra i parametri di input per l'API RemoveCoupons.

Nome Tipo Obbligatorio/Facoltativo Descrizione
chiave stringa Obbligatorio L'ID carrello.
couponCodes IEnumerable<string> Obbligatorio I codici buoni sconto da rimuovere dal carrello.

GetProductPromotions

L'API GetProductPromotions è stata introdotta nella versione 10.0.38 di Commerce. Questa API ottiene un elenco di prodotti promozionali con sconti per i prodotti specificati. Può anche prendere come input un elenco di ID sconto prodotto e contesto di prezzo ed eseguire query sui prodotti promozionali corrispondenti. Il caso d'uso principale dell'API GetProductPromotions è nelle pagine di elenco dei prodotti, dove i rivenditori mostrano i prodotti con sconti. Questa API supporta sia il modello di prezzo basato sulla struttura sia il modello di prezzo legacy.

La tabella seguente mostra i parametri di input per l'API GetProductPromotions.

Nome Nome secondario Tipo Obbligatorio/Facoltativo Descrizione
productDiscountIds IEnumerable<string> Obbligatorio L'elenco degli ID dei prodotti scontati da utilizzare per identificare i prodotti promozionali.
priceLookupContext PriceLookupContext Obbligatorio Il contesto per i prezzi.
activeDate DateTimeOffset Facoltativo Data in cui la promozione viene considerata.

Restrizioni e limitazioni:

  • Può accettare solo un massimo di cinque ID sconto prodotti come input.
  • Sono supportati solo gli sconti semplici.
Corpo della richiesta di esempio
{
    {
    "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",
    },
}
Corpo della richiesta di esempio
{
    "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
                }
            ]   
        }
    ]
}

Per ulteriori informazioni, vedi PriceLookupContext.

PriceLookupContext

Usare la classe PriceLookupContext per il modello tariffario basato su proprietà nelle API GetProductPromotions e GetActivePrices .

Nell'esempio seguente viene illustrata la struttura della 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>
        },
    ]
}
Corpo della richiesta di esempio
"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": []
}

Nota

  • L'API deduce il gruppo di clienti dal numero di account del cliente, quindi la richiesta non specifica un gruppo di clienti nel parametro PriceLookupHeaderContext.
  • È possibile specificare ChannelId nel parametro PriceLookupHeaderContext. Se non lo specifichi, l'API usa il ChannelId dal contesto della richiesta (il canale corrente quando si usa Store Commerce).