Commerce-Preis-APIs
In diesem Artikel werden verschiedene Preis-APIs beschrieben, die von Microsoft Dynamics 365 Commerce Preis-Engine bereitgestellt werden.
Die Dynamics 365 Commerce Pricing Engine bietet die folgenden Retail Server-APIs, die von externen Anwendungen genutzt werden können, um verschiedene Preisszenarien zu unterstützen:
- GetActivePrices – Diese API ruft den berechneten Preis eines Produkts einschließlich einfacher Rabatte ab.
- CalculateSalesDocument – Diese API berechnet Preise und Rabatte für Produkte bei bestimmten Mengen, wenn sie zusammen gekauft werden.
- GetAvailablePromotions – Diese API ruft anwendbare Rabatte für Produkte im Warenkorb ab.
- AddCoupons – Diese API fügt einem Einkaufswagen Coupons hinzu.
- RemoveCoupons – Diese API entfernt Coupons aus einem Einkaufswagen.
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.
Schein
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 | Typ | Erforderlich/Optional | Beschreibung |
---|---|---|---|---|
projectDomain | ProjectionDomain | Erforderlich | ||
ChannelId | lang | Erforderlich | ||
CatalogId | lang | 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<AffiliationLoyaltyTier> | Optional | Die Zugehörigkeit und Treuestufen. | |
AffiliationId | lang | Erforderlich | Die Zugehörigkeitskennung. | |
LoyaltyTierId | lang | Optional | Die Treuestufekennung. | |
includeSimpleDiscountsInContextualPrice | bool | Optional | Stellen Sie diesen Parameter auf true, um einfache Rabatte in die Preiskalkulation einzubeziehen. Der Standardwert ist Falsch. | |
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 Falsch. | |
includeAttainablePricesAndDiscounts | bool | Optional | Stellen Sie diesen Parameter auf true, um erreichbare Preise und Rabatte zu erhalten. Der Standardwert ist Falsch. |
Beispielanforderungstext
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
Beispieltext Antwort
{
"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 „PriceLookupContext“-Klasse wurde in der Commerce-Version 10.0.37 eingeführt. Die Klasse enthält alle Suchkriterien für die „GetActivePrices“-API und ersetzt die vorherigen Parameter von „productIds“, „activeDate“, „customerId“ und „affiliationLoyaltyTiers“. Die Klasse verfügt außerdem über zusätzliche Eigenschaften, mit denen Entwickler Rabatte während der Rabattsuche filtern können.
Je nach 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 | Typ | Erforderlich/Optional | Beschreibung |
---|---|---|---|---|
projectDomain | ProjectionDomain | Erforderlich | ||
ChannelId | lang | Erforderlich | ||
CatalogId | lang | Erforderlich | ||
priceLookupContext | PriceLookupContext | Erforderlich | ||
HeaderContext | PriceLookupHeaderContext | Erforderlich | Enthält „CustomerAccountNumber“, „AffiliationLoyaltyTierLines“ und „SalesOrderProperties“ | |
LineContexts | IEnumerable<PriceLookupLineContext> | Erforderlich | Enthält „ProductRecordId“, „UnitOfMeasureSymbol“, „InventorySiteId“, „InventoryLocationId“, „DeliveryMode“, „CatalogId“ und „SalesLineProperties“. | |
includeSimpleDiscountsInContextualPrice | bool | Fakultativ | Stellen Sie diesen Parameter auf true, um einfache Rabatte in die Preiskalkulation einzubeziehen. Der Standardwert ist Falsch. | |
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 Falsch. | |
includeAttainablePricesAndDiscounts | bool | Optional | Stellen Sie diesen Parameter auf true, um erreichbare Preise und Rabatte zu erhalten. Der Standardwert ist Falsch. |
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 Preiskalkulation der CalculateSalesDocument-API berücksichtigt sowohl Rabatte für einzelne Zeilen als auch Rabatte für mehrere Zeilen.
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 Artikel im Warenkorb als Set berechnet werden (z. B. bei Einzelpaketen, verknüpften oder empfohlenen Produkten oder Produkten, die bereits in den Warenkorb gelegt wurden) kann Kunden davon überzeugen, Produkte in den Warenkorb zu legen.
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. Wir empfehlen, keine anderen Felder in die API-Anforderung einzubeziehen.
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 | Typ | 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 | lang | 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 | decimal | 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 | lang | Erforderlich im Rahmen von AffiliationLoyaltyTier | Die Zugehörigkeitsdatensatzkennung. | |
LoyaltyTierId | lang | 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<Coupon> | 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. |
Beispielanforderungstext
{
"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, sollten Sie sich auf die Felder in der folgenden Tabelle konzentrieren.
Name | Untername | Typ | Beschreibung |
---|---|---|---|
NetPrice | dezimal | Der Nettopreis des gesamten Verkaufsbelegs vor Abzug von Rabatten. | |
DiscountAmount | dezimal | Der Gesamtrabattbetrag des gesamten Verkaufsbelegs. | |
Gesamtbetrag | decimal | Der Gesamtbetrag des gesamten Verkaufsbelegs. | |
CartLines | IList<CartLine> | Berechnete Zeilen, die Preis- und Rabattdetails enthalten. | |
Preis | decimal | Der Einheitspreis des Produkts. | |
NetPrice | dezimal | Der Nettopreis für die Position vor Abzug von Rabatten (= Preis x Menge). | |
DiscountAmount | dezimal | Der Rabattbetrag. | |
Gesamtbetrag | decimal | 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<DiscountLine> | Rabattdetails. |
GetAvailablePromotions
Es gibt zwei ähnliche GetAvailablePromotions-APIs:
- Carts/GetAvailablePromotions akzeptiert eine Liste von Einkaufswagenzeilenkennungen 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 | Typ | 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. |
Beispieltext Antwort
{
"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 | Typ | Erforderlich/Optional | Beschreibung |
---|---|---|---|---|
searchCriteria | DiscountsSearchCriteria | Erforderlich | ||
ChannelId | lang | Erforderlich | ||
Schlüsselwort | Zeichenfolge | Optional | ||
IsDiscountCodeRequired | bool | Optional | Gibt an, ob der Gutscheincode erforderlich ist oder nicht. Wenn null übergeben wird, werden unabhängig von den Gutscheincodeanforderungen alle Rabatte abgerufen. | |
StartDate | DateTimeOffset | Erforderlich | Das Anfangsdatum (inklusive). | |
EndDate | DateTimeOffset | Erforderlich | Das Enddatum (inklusive). |
Beispielanforderungstext
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
Beispieltext Antwort
{
"@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 | Typ | 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 Falsch. |
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 | Typ | 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 ruft eine Liste von Werbeartikeln mit bestimmten Produktrabatten ab und kann auch eine Liste von Produktrabatt-IDs und Preiskontext als Eingabe verwenden und die zugehörigen Werbeartikel abfragen. 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 | Typ | Erforderlich/Optional | Beschreibung |
---|---|---|---|---|
productDiscountIds | IEnumerable<string> | Erforderlich | Die Liste der Produktrabatt-IDs, um nach Werbeprodukten zu suchen. | |
priceLookupContext | PriceLookupContext | Erforderlich | Der Kontext für die Preise. | |
activeDate | DateTimeOffset | Fakultativ | 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.
Beispielanforderungstext
{
{
"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",
},
}
Beispieltext Antwort
{
"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
Die PriceLookupContext-Klasse wird für das eigenschaftsbasierte Preismodell in den APIs GetProductPromotions und GetActivePrices verwendet.
Die Struktur der PriceLookupContext-Klasse wird im folgenden Beispiel gezeigt.
{
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>
},
]
}
Beispielanforderungstext
"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
- Im Parameter „PriceLookupHeaderContext“ ist keine Kundengruppe angegeben, da diese anhand der Kundenkontonummer abgeleitet wurde.
- Die „ChannelId“ kann im Parameter „PriceLookupHeaderContext“ angegeben werden. Wenn sie nicht angegeben ist, wird die „ChannelId“ aus dem Anforderungskontext (der aktuelle Kanal bei Verwendung von Store Commerce) verwendet.