Commerce-Preisgestaltungs-APIs

In diesem Artikel werden verschiedene Preis-APIs beschrieben, die vom Microsoft Dynamics 365 Commerce Preismodul bereitgestellt werden.

Das Dynamics 365 Commerce Preismodul stellt die folgenden Einzelhandelsserver-APIs bereit, mit denen externe Anwendungen verschiedene Preisszenarien unterstützen können:

  • GetActivePrices – Diese API erhält den berechneten Preis eines Produkts, einschließlich einfacher Rabatte.
  • CalculateSalesDocument: Diese API berechnet Preise und Rabatte für Produkte in bestimmten Mengen, wenn sie zusammen gekauft werden.
  • GetAvailablePromotions – Diese API erhält anwendbare Rabatte für Produkte im Warenkorb.
  • AddCoupons – Diese API fügt Coupons zu einem Warenkorb hinzu.
  • RemoveCoupons – Diese API entfernt Coupons aus einem Warenkorb.

Weitere Informationen zur Verwendung von Retail Server-APIs in externen Anwendungen finden Sie unter Verwenden Sie Retail-Server-APIs in externen Anwendungen.

GetActivePrices

Die API GetActivePrices wurde in der Commerce-Version 10.0.4 eingeführt. Diese API erhält den berechneten Preis eines Produkts, einschließlich einfacher Rabatte. Sie berechnet keine Rabatte für mehrere Zeilen und geht davon aus, dass jedes Produkt in einer API-Anforderung eine Menge von 1 hat. Diese API kann auch eine Liste von Produkten als Eingabe verwenden und den Preis einzelner Produkte in großen Mengen abfragen.

Die API GetActivePrices unterstützt die Commerce-Rollen Angestellter, Kunde, Anonym und Anwendung.

Der Hauptanwendungsfall für die API GetActivePrices ist die Produktdetailseite (PDP), auf der Einzelhändler den besten Preis für ein Produkt präsentieren, einschließlich gültiger Rabatte.

Hinweis

Wenn weniger Produkte für einen GetActivePrices-Aufruf zurückgegeben werden, können Sie Kanal-Merchandising-Konfiguration überprüfen folgen, um Ihre Merchandising-Konfigurationen zu überprüfen.

Die folgende Tabelle zeigt die Eingabeparameter für die API GetActivePrices.

Name Untername Art Erforderlich/Optional Beschreibung
projectDomain ProjectionDomain Erforderlich
ChannelId long Erforderlich
CatalogId long Erforderlich
productIds IEnumerable<long> Erforderlich Die Liste der Produkte, für die Preise berechnet werden sollen.
activeDate DateTimeOffset Erforderlich Das Datum, an dem die Preise berechnet werden.
customerId Zeichenfolge Optional Die Debitorenkontonummer.
affiliationLoyaltyTiers IEnumerable<ZugehörigkeitLoyalitätsstufe> Optional Die Zugehörigkeit und Treuestufen.
AffiliationId long Erforderlich Die Zugehörigkeitskennung.
LoyaltyTierId long Optional Die Treuestufekennung.
includeSimpleDiscountsInContextualPrice bool Optional Stellen Sie diesen Parameter auf true, um einfache Rabatte in die Preiskalkulation einzubeziehen. Der Standardwert ist false.
includeVariantPriceRange bool Optional Stellen Sie diesen Parameter auf true, um die Mindest- und Höchstpreise aller Varianten für ein Hauptprodukt zu erhalten. Der Standardwert ist false.
includeAttainablePricesAndDiscounts bool Optional Stellen Sie diesen Parameter auf true, um erreichbare Preise und Rabatte zu erhalten. Der Standardwert ist false.
Beispiel für Anforderungstext
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Beispiel für Antworttext
{
    "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": [],
        }
    ]
}

„PriceLookupContext“ verwenden

Die Commerce-Version 10.0.37 führt die PriceLookupContext-Klasse ein. Diese Klasse enthält alle Nachschlagekriterien für die GetActivePrices-API. Er ersetzt die vorherigen Parameter von "productIds", "activeDate", "customerId" und "affiliationLoyaltyTiers". Die Klasse verfügt auch über zusätzliche Eigenschaften, mit denen Entwickler Rabatte während der Rabattsuche filtern können.

Abhängig von den Anforderungen Ihrer Organisation kann die GetActivePrices-API entweder die vorherigen Parameter oder neue Parameter akzeptieren, die der PriceLookupContext-Klasse zugeordnet sind.

Eingabeparameter

Name Untername Art Erforderlich/Optional Beschreibung
projectDomain ProjectionDomain Erforderlich
ChannelId long Erforderlich
CatalogId long Erforderlich
priceLookupContext PriceLookupContext Erforderlich
HeaderContext PriceLookupHeaderContext Erforderlich Enthält Kundennummer, Mitgliedschaftsloyalitätsebene und Bestelleigenschaften
LineContexts IEnumerable<PriceLookupLineContext> Erforderlich Enthält ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId und SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool Optional Stellen Sie diesen Parameter auf true, um einfache Rabatte in die Preiskalkulation einzubeziehen. Der Standardwert ist false.
includeVariantPriceRange bool Optional Stellen Sie diesen Parameter auf true, um die Mindest- und Höchstpreise aller Varianten für ein Hauptprodukt zu erhalten. Der Standardwert ist false.
includeAttainablePricesAndDiscounts bool Optional Stellen Sie diesen Parameter auf true, um erreichbare Preise und Rabatte zu erhalten. Der Standardwert ist false.

Weitere Informationen finden Sie unter PriceLookupContext.

CalculateSalesDocument

Die API CalculateSalesDocument wurde in der Commerce-Version 10.0.25 eingeführt. Diese API berechnet Preise und Rabatte für Produkte in bestimmten Mengen, wenn sie zusammen in einer Bestellung gekauft werden. Die Preisberechnung hinter der CalculateSalesDocument-API berücksichtigt sowohl Einzelzeilenrabatte als auch mehrzeilige Rabatte.

Der Hauptanwendungsfall für die CalculateSalesDocument API ist die Preisberechnung in Szenarien, in denen der vollständige Warenkorbkontext nicht bestehen bleibt (z. B. Verkaufsangebote). Auch Szenarien im Point of Sale (POS) und Commerce E-Commerce können von diesem Anwendungsfall profitieren. Ein niedrigerer Gesamtpreis, wenn Einkaufswagenartikel als Satz berechnet werden (z. B. für diskrete Bündel, verknüpfte oder empfohlene Produkte oder Produkte, die sich bereits im Warenkorb befinden), könnten Kunden davon überzeugen, dem Warenkorb Produkte hinzuzufügen.

Das Datenmodell sowohl für die Anfrage als auch für die Antwort der CalculateSalesDocument API ist Einkaufskorb. Im Kontext dieser API wird jedoch das Datenmodell SalesDocument benannt. Da die meisten Eigenschaften optional sind und nur wenige die Preisberechnung beeinflussen, werden in der folgenden Tabelle nur preisbezogene Felder angezeigt. Fügen Sie keine anderen Felder in die API-Anforderung ein.

Der Geltungsbereich der CalculateSalesDocument API ist nur die Berechnung von Preisen und Rabatten. Steuern und Abgaben werden nicht inkludiert.

Die folgende Tabelle zeigt die Eingabeparameter innerhalb des benannten Objekts salesDocument.

Name Untername Art Erforderlich/Optional Beschreibung
ID Zeichenfolge Erforderlich Die Kennung des Verkaufsbelegs.
CartLines IList<CartLine> Optional Die Liste der Positionen, für die Preise und Rabatte berechnet werden sollen.
Produktkennung long Erforderlich im Rahmen von CartLine Die Produktdatensatzkennung.
ItemId Zeichenfolge Optional Der Artikelbezeichner. Wenn ein Wert angegeben wird, muss er mit dem Wert von ProductId Parameter übereinstimmen.
InventoryDimensionId Zeichenfolge Optional Der Bestandsdimensionsbezeichner. Wenn ein Wert angegeben wird, muss die Kombination der Werte ItemId und InventoryDimensionId mit dem Wert von ProductId übereinstimmen.
Menge dezimal Erforderlich im Rahmen von CartLine Die Menge des Produkts.
UnitOfMeasureSymbol Zeichenfolge Optional Die Einheit des Produkts. Wenn kein Wert angegeben wird, verwendet die API standardmäßig die Verkaufseinheit des Produkts.
CustomerId Zeichenfolge Optional Die Debitorenkontonummer.
LoyaltyCardId Zeichenfolge Optional Die Treuekartenkennung. Jedes Kundenkonto, das mit der Treuekarte verknüpft ist, muss dem Wert des CustomerId-Parameters (sofern vorhanden) entsprechen. Die Treuekarte wird nicht berücksichtigt, wenn sie nicht gefunden wird oder ihr Status Gesperrt ist.
AffiliationLines IList<AffiliationLoyaltyTier> Optional Zugehörigkeits- und Treuestufenpositionen. Wenn CustomerId und/oder LoyaltyCardId bereitgestellt werden, werden die entsprechenden Positionen der Zugehörigkeits-Treuestufe mit den Positionen zusammengeführt, die in AffiliationLines bereitgestellt werden.
AffiliationId long Erforderlich im Rahmen von AffiliationLoyaltyTier Die Zugehörigkeitsdatensatzkennung.
LoyaltyTierId long Erforderlich im Rahmen von AffiliationLoyaltyTier Die Treuestufedatensatzkennung.
AffiliationTypeValue int Erforderlich im Rahmen von AffiliationLoyaltyTier Ein Wert, der angibt, ob die Zugehörigkeitsposition vom Typ Allgemein (0) oder Zugehörigkeit (1) ist. Wenn der Parameter auf 0 eingestellt ist, übernimmt die API den Wert AffiliationId als Bezeichner und ignoriert den Wert LoyaltyTierId. Wenn der Parameter auf 1 eingestellt ist, übernimmt die API den Wert LoyaltyTierId als Bezeichner und ignoriert den Wert AffiliationId.
ReasonCodeLines Collection<ReasonCodeLine> Erforderlich im Rahmen von AffiliationLoyaltyTier Ursachencodepositionen. Dieser Parameter hat keinen Einfluss auf die Preiskalkulation, wird aber als Teil des Elements AffiliationLoyaltyTier benötigt.
CustomerId Zeichenfolge Erforderlich im Rahmen von AffiliationLoyaltyTier Die Debitorenkontonummer.
Gutscheine IList<Gutschein> Optional Gutscheine, die nicht anwendbar sind (inaktiv, abgelaufen oder nicht gefunden), werden bei der Preisberechnung nicht berücksichtigt.
Code Zeichenfolge Erforderlich im Rahmen von Coupon Der Couponcode.
CodeId Zeichenfolge Optional Der Couponcodebezeichner. Wenn ein Wert angegeben wird, muss er mit dem Wert des Code Parameters übereinstimmen.
DiscountOfferId Zeichenfolge Optional Der Rabattbezeichner. Wenn ein Wert angegeben wird, muss er mit dem Wert des Code Parameters übereinstimmen.
Beispiel für Anforderungstext
{
    "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"
            }
        ]
    }
}

Das gesamte Warenkorbobjekt wird als Antworttext zurückgegeben. Um Preise und Rabatte zu überprüfen, konzentrieren Sie sich auf die Felder in der folgenden Tabelle.

Name Untername Art Beschreibung
NetPrice dezimal Der Nettopreis des gesamten Verkaufsbelegs vor Abzug von Rabatten.
DiscountAmount dezimal Der Gesamtrabattbetrag des gesamten Verkaufsbelegs.
TotalAmount dezimal Der Gesamtbetrag des gesamten Verkaufsbelegs.
CartLines IList<CartLine> Berechnete Zeilen, die Preis- und Rabattdetails enthalten.
Preis dezimal Der Einheitspreis des Produkts.
NetPrice dezimal Der Nettopreis für die Position vor Abzug von Rabatten (= Preis x Menge).
DiscountAmount dezimal Der Rabattbetrag.
TotalAmount dezimal Das endgültige Gesamtpreisergebnis der Position.
PriceLines IList<PriceLine> Preisdetails, einschließlich der Quelle des Preises (Basispreis, Preisanpassung oder Handelsvereinbarung) und des Betrags.
DiscountLines IList<Rabattzeile> Rabattdetails.

GetAvailablePromotions

Zwei ähnliche GetAvailablePromotions-APIs sind verfügbar:

  • Carts/GetAvailablePromotions akzeptiert eine Liste der Warenkorbzeilen-IDs als Parameter.
  • GetAvailablePromotions akzeptiert ein DiscountsSearchCriteria-Objekt als Parameter.

Carts/GetAvailablePromotions

Bei einem Einkaufskorb mit mehreren Positionen gibt die API Carts/GetAvailablePromotions alle anwendbaren Rabatte für die Warenkorbpositionen zurück.

Der Hauptanwendungsfall für die Carts/GetAvailablePromotions-API ist die Warenkorbseite, auf der Einzelhändler angewendete Rabatte oder verfügbare Coupons für den aktuellen Warenkorb präsentieren.

Die folgende Tabelle führt die Eingabeparameter für die API Carts/GetAvailablePromotions.

Name Art Erforderlich/Optional Beschreibung
Schlüssel Zeichenfolge Erforderlich Die Einkaufskorbkennung.
cartLineIds IEnumerable<string> Optional Legen Sie diesen Parameter fest, um Rabatte nur für ausgewählte Warenkorbpositionen zurückzugeben.
Beispiel für Antworttext
{
    "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

Die GetAvailablePromotions-API gibt alle anwendbaren Rabatte für den jeweiligen Kanal zurück.

Der Hauptanwendungsfall für die GetAvailablePromotions-API ist die Seite "Alle Rabatte ", auf der Einzelhändler alle Rabatte für den aktuellen Kanal anzeigen.

Auf der folgenden Tabelle sind die Eingabeparameter für die API GetAvailablePromotions aufgeführt.

Name Untername Art Erforderlich/Optional Beschreibung
searchCriteria DiscountsSearchCriteria Erforderlich
ChannelId long Erforderlich
Schlüsselwort Zeichenfolge Optional
IsDiscountCodeRequired bool Optional Gibt an, ob der Gutscheincode erforderlich ist oder nicht. Wenn NULL übergeben wird, ruft die API alle Rabatte ab, unabhängig von den Couponcodeanforderungen.
StartDate DateTimeOffset Erforderlich Das Anfangsdatum (inklusive).
EndDate DateTimeOffset Erforderlich Das Enddatum (inklusive).
Beispiel für Anforderungstext
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Beispiel für Antworttext
{
    "@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

Die API AddCoupons unterstützt das Hinzufügen einer Liste von Gutscheinen zu einem Einkaufskorb. Es gibt das Einkaufskorbelement zurück, nachdem die Gutscheine hinzugefügt wurden.

Die folgende Tabelle zeigt die Eingabeparameter für die API AddCoupons.

Name Art Erforderlich/Optional Beschreibung
Schlüssel Zeichenfolge Erforderlich Die Einkaufskorbkennung.
couponCodes IEnumerable<string> Erforderlich Die Gutscheincodes, die dem Warenkorb hinzugefügt werden sollen.
isLegacyDiscountCode bool Optional Stellen Sie diesen Parameter auf true um anzuzeigen, dass es sich bei dem Gutschein um einen alten Rabattcode handelt. Der Standardwert ist false.

RemoveCoupons

Die API RemoveCoupons unterstützt das Entfernen einer Liste von Gutscheinen aus einem Einkaufskorb. Es gibt das Einkaufskorbelement zurück, nachdem die Gutscheine entfernt wurden.

Die folgende Tabelle zeigt die Eingabeparameter für die API RemoveCoupons.

Name Art Erforderlich/Optional Beschreibung
Schlüssel Zeichenfolge Erforderlich Die Einkaufskorbkennung.
couponCodes IEnumerable<string> Erforderlich Die Gutscheincodes, die aus dem Warenkorb entfernt werden sollen.

GetProductPromotions

Die API GetProductPromotions wurde in der Commerce-Version 10.0.38 eingeführt. Diese API erhält eine Liste von Werbeprodukten mit bestimmten Produktrabatten. Es kann auch eine Liste von Produktrabatt-IDs und Preiskontext als Eingabe und Abfrage der zugehörigen Werbeprodukte verwenden. Der Hauptanwendungsfall für die API GetProductPromotions sind Produktlistenseiten, auf denen Einzelhändler Produkte mit Rabatten präsentieren. Diese API unterstützt sowohl das eigenschaftsbasierte Preismodell als auch das Legacy-Preismodell.

Die folgende Tabelle zeigt die Eingabeparameter für die API GetProductPromotions.

Name Untername Art Erforderlich/Optional Beschreibung
productDiscountIds IEnumerable<string> Erforderlich Die Liste der Produktrabatt-IDs zur Suche nach Werbeprodukten.
priceLookupContext PriceLookupContext Erforderlich Der Kontext für die Preise.
activeDate DateTimeOffset Optional Das Berücksichtigungsdatum der Promotion.

Beschränkungen und Einschränkungen:

  • Es können maximal fünf Produktrabatt-IDs als Eingabe verwendet werden.
  • Es werden nur einfache Rabatte unterstützt.
Beispiel für Anforderungstext
{
    {
    "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",
    },
}
Beispiel für Antworttext
{
    "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
                }
            ]   
        }
    ]
}

Weitere Informationen finden Sie unter PriceLookupContext.

PriceLookupContext

Verwenden Sie die PriceLookupContext-Klasse für das eigenschaftenbasierte Preismodell in den GetProductPromotions - und GetActivePrices-APIs .

Das folgende Beispiel zeigt die Struktur der PriceLookupContext-Klasse.

{
    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>
        },
    ]
}
Beispiel für Anforderungstext
"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": []
}

Hinweis

  • Die API leitet die Kundengruppe von der Kundenkontonummer ab, sodass die Anforderung keine Kundengruppe im PriceLookupHeaderContext-Parameter angibt.
  • Sie können die ChannelId im PriceLookupHeaderContext-Parameter angeben. Wenn Sie sie nicht angeben, verwendet die API die ChannelId aus dem Anforderungskontext (dem aktuellen Kanal bei Verwendung von Store Commerce).