Interfejsy API wyceny handlowej
W tym artykule opisano różne interfejsy API wyceny udostępniane przez aparat cen Microsoft Dynamics 365 Commerce.
Aparat cen Dynamics 365 Commerce udostępnia następujące interfejsy API usługi Retail Server, które mogą być zużywane przez aplikacje zewnętrzne w celu obsługi różnych scenariuszy cen:
- GetActivePrices — ten interfejs API pobiera obliczoną cenę produktu, w tym proste rabaty.
- CalculateSalesDocument — ten interfejs API oblicza ceny i rabaty na produkty w podanych ilościach, jeśli są kupowane razem.
- GetAvailablePromotions — ten interfejs API otrzymuje odpowiednie rabaty na produkty w koszyku.
- AddCoupons — ten interfejs API dodaje kupony do koszyka.
- RemoveCoupons — ten interfejs API usuwa kupony z koszyka.
Aby uzyskać więcej informacji dotyczących sposobu zużywania interfejsów API usługi Retail Server w aplikacjach zewnętrznych, zobacz Zużycie interfejsów API usługi Retail Server w aplikacjach zewnętrznych.
GetActivePrices
Interfejs API GetActivePrices został wprowadzony w wersji Commerce 10.0.4. Ten interfejs API pobiera obliczoną cenę produktu, w tym proste rabaty. Nie oblicza rabatów multiline i przyjmuje, że każdy produkt w żądaniu API ma ilość 1. Ten interfejs API może także przyjmować listę produktów jako dane wejściowe i kwerendę cen poszczególnych produktów masowo.
Interfejs API GetActivePrices obsługuje role Pracownik, Odbiorca, Anonimowy i Aplikacja Commerce.
Głównym powodem dla interfejsu API GetActivePrices jest strona szczegółów produktu (PDP), na której sprzedawcy detaliczni pokazują najlepszą cenę produktu, uwzględniając wszelkie rabaty efektywne.
Banknot
Jeśli widzisz mniej produktów zwróconych w ramach a GetActivePrices
zadzwoń, możesz śledzić Walidator konfiguracji sprzedaży kanału aby zweryfikować konfiguracje handlowe.
W poniższej tabeli przedstawiono parametry wejściowe interfejsu API GetActivePrices.
Nazwa | Nazwa podrzędna | Typ | Wymagane/opcjonalnie | Opis |
---|---|---|---|---|
projectDomain | ProjectionDomain | Wymagane | ||
ChannelId | długi | Wymagane | ||
CatalogId | długi | Wymagane | ||
productIds | IEnumerable<long> | Wymagane | Lista produktów, dla których mają być obliczone ceny. | |
activeDate | DateTimeOffset | Wymagane | Data obliczania cen. | |
customerId | ciąg | Opcjonalnie | Numer konta klienta. | |
affiliationLoyaltyTiers | IEnumerable<AffiliationLoyaltyTier> | Opcjonalnie | Poziomy przynależności i lojalności. | |
AffiliationId | długi | Wymagane | Identyfikator przynależności. | |
LoyaltyTierId | długi | Opcjonalnie | Identyfikator poziomu lojalności. | |
includeSimpleDiscountsInContextualPrice | bool | Opcjonalnie | Ustaw dla tego parametru wartość Prawda, aby w obliczeniach cen uwzględnić proste rabaty. Domyślna wartość to false. | |
includeVariantPriceRange | bool | Opcjonalnie | Ustaw ten parametr na Prawda, aby uzyskać ceny minimalne i maksymalne wśród wszystkich wariantów produktu głównego. Domyślna wartość to false. | |
includeAttainablePricesAndDiscounts | bool | Opcjonalnie | Ustaw dla tego parametru wartość Prawda, aby uzyskać dostępną cenę i rabaty. Domyślna wartość to false. |
Przykładowa treść żądania
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
Przykładowa treść odpowiedzi
{
"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": [],
}
]
}
Użyj PriceLookupContext
Klasa PriceLookupContext została wprowadzona w wersji Commerce 10.0.37. Klasa zawiera wszystkie kryteria wyszukiwania dla interfejsu API GetActivePrices i zastępuje poprzednie parametry productIds, activeDate, customerId i affiliationLoyaltyTiers. Klasa ma również dodatkowe właściwości, których deweloperzy mogą używać do filtrowania rabatów podczas wyszukiwania rabatów.
Zgodnie z potrzebami organizacji interfejs API GetActivePrices może akceptować poprzednie lub nowe parametry skojarzone z klasą PriceLookupContext.
Wprowadź parametry
Nazwa | Nazwa podrzędna | Typ | Wymagane/opcjonalnie | Opis |
---|---|---|---|---|
projectDomain | ProjectionDomain | Wymagana | ||
ChannelId | długi | Wymagana | ||
CatalogId | długi | Wymagana | ||
priceLookupContext | PriceLookupContext | Wymagana | ||
HeaderContext | PriceLookupHeaderContext | Wymagana | Zawiera CustomerAccountNumber, AffiliationLoyaltyTierLines i SalesOrderProperties | |
LineContexts | IEnumerable<PriceLookupLineContext> | Wymagana | Zawiera ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId i SalesLineProperties. | |
includeSimpleDiscountsInContextualPrice | bool | Opcjonalna | Ustaw dla tego parametru wartość Prawda, aby w obliczeniach cen uwzględnić proste rabaty. Domyślna wartość to false. | |
includeVariantPriceRange | bool | Opcjonalnie | Ustaw ten parametr na Prawda, aby uzyskać ceny minimalne i maksymalne wśród wszystkich wariantów produktu głównego. Domyślna wartość to false. | |
includeAttainablePricesAndDiscounts | bool | Opcjonalnie | Ustaw dla tego parametru wartość Prawda, aby uzyskać dostępną cenę i rabaty. Domyślna wartość to false. |
Aby uzyskać więcej informacji, zobacz PriceLookupContext.
CalculateSalesDocument
Interfejs API CalculateSalesDocument został wprowadzony w wersji Commerce 10.0.25. Ten interfejs API oblicza ceny i rabaty na produkty w określonych ilościach, jeśli są kupowane razem w zamówieniu. W kalkulacji cen za interfejsem API CalculateSalesDocument są rozważane rabaty jedno wierszowe i rabaty wielo wierszy.
Głównym powodem dla interfejsu API CalculateSalesDocument jest obliczanie cen w scenariuszach, w których kontekst pełnego koszyka nie będzie się powtarzał (np. oferty sprzedaży). Scenariusze w punkt sprzedaży (POS) i Commerce e-commerce mogą również korzystać z tego przypadku. Niższa łączna cena, gdy pozycje koszyka są obliczane jako zestaw (na przykład w przypadku oddzielnych pakietów, powiązanych lub polecanych produktów lub produktów, które zostały już dodane do koszyka) może skłonić klientów do dodania produktów do koszyka.
Model danych dla żądania i odpowiedzi interfejsu API CalculateSalesDocument to Koszyk. Jednak w kontekście tego interfejsu API model danych nosi nazwę SalesDocument. Ponieważ większość właściwości jest opcjonalna, a tylko kilka z nich wpływa na kalkulację cen, w poniższej tabeli przedstawiono tylko pola związane z cenami. Nie zalecamy, aby żadne inne pola były zaangażowane w żądanie API.
Zakres interfejsu API CalculateSalesDocument to tylko obliczanie cen i rabatów. Podatki i opłaty nie są związane.
W poniższej tabeli przedstawiono parametry wejściowe wewnątrz obiektu o nazwie salesDocument.
Nazwa | Nazwa podrzędna | Typ | Wymagane/opcjonalnie | Opis |
---|---|---|---|---|
Identyfikator | ciąg | Wymagana | Identyfikator dokumentu sprzedaży. | |
CartLines | IList<CartLine> | Opcjonalnie | Lista wierszy do kalkulacji cen i rabatów. | |
Identyfikator produktu | długi | Wymagane w zakresie CartLine | Identyfikator rekordu produktu. | |
ItemId | ciąg | Opcjonalnie | Identyfikator pozycji. Jeśli zostanie dostarczana wartość, musi być ona zgodne z wartością parametru ProductId. | |
InventoryDimensionId | ciąg | Opcjonalnie | Umożliwia identyfikację wymiaru magazynowego. Jeśli zostanie podano wartość, kombinacja wartości ItemId i InventoryDimensionId musi odpowiadać wartości parametru ProductId. | |
Ilość | dziesiętny | Wymagane w zakresie CartLine | Ilość produktu. | |
UnitOfMeasureSymbol | ciąg | Opcjonalnie | Jednostka produktu. Domyślnie, jeśli nie zostanie włączona wartość, interfejs API używa jednostki sprzedaży tego produktu. | |
CustomerId | ciąg | Opcjonalnie | Numer konta klienta. | |
LoyaltyCardId | ciąg | Opcjonalnie | Identyfikator karty lojalnościowej. Wszystkie konta odbiorców skojarzone z kartą lojalnościową muszą być zgodne z wartością parametru CustomerId (jeśli jest dostarczana). Karta lojalnościowa nie będzie uznawana, jeśli nie znaleziono jej lub jej stan jest Zablokowany. | |
AffiliationLines | IList<AffiliationLoyaltyTier> | Opcjonalnie | Linie poziomu lojalności przynależności. Jeśli zostaną podane wartości CustomerId i/lub LoyaltyCardId, odpowiednie wiersze warstwy lojalnościowej przynależności zostaną scalone z wierszami dostarczonymi w wartości AffiliationLines. | |
AffiliationId | długi | Wymagane w zakresie AffiliationLoyaltyTier | Identyfikator rekordu przynależności. | |
LoyaltyTierId | długi | Wymagane w zakresie AffiliationLoyaltyTier | Identyfikator rekordu poziomu lojalności. | |
AffiliationTypeValue | liczba całkowita | Wymagane w zakresie AffiliationLoyaltyTier | Wartość wskazująca, czy wiersz przynależności jest typu Ogólnego (0) czy Typu lojalności (1). Jeśli ten parametr ma wartość 0, interfejs API przyjmuje wartość AffiliationId jako identyfikator i ignoruje wartość LoyaltyTierId. Jeśli ten parametr ma wartość 1, interfejs API przyjmuje LoyaltyTierId jako identyfikator i ignoruje wartość AffiliationId. | |
ReasonCodeLines | Collection<ReasonCodeLine> | Wymagane w zakresie AffiliationLoyaltyTier | Wiersze kodu przyczyny. Ten parametr nie ma wpływu na kalkulację cen, ale jest wymagany jako część obiektu AffiliationLoyaltyTier. | |
CustomerId | ciąg | Wymagane w zakresie AffiliationLoyaltyTier | Numer konta klienta. | |
Kupony | IList<Coupon> | Opcjonalnie | Kupony, które nie mają zastosowania (nieaktywne, wygasłe lub nie można ich znaleźć), nie będą rozważane w kalkulacji cen. | |
Kod | ciąg | Wymagane w zakresie kuponu | Kod kuponu. | |
CodeId | ciąg | Opcjonalnie | Identyfikator kodu kuponu. Jeśli zostanie dostarczana wartość, musi być ona zgodne z wartością parametru Kod. | |
DiscountOfferId | ciąg | Opcjonalnie | Identyfikator rabatu. Jeśli zostanie dostarczana wartość, musi być ona zgodne z wartością parametru Kod. |
Przykładowa treść żądania
{
"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"
}
]
}
}
Cały obiekt koszyka jest zwracany jako treść odpowiedzi. Aby sprawdzić ceny i rabaty, należy skupić się na polach w poniższej tabeli.
Nazwa | Nazwa podrzędna | Typ | Opis |
---|---|---|---|
NetPrice | dziesiętny | Cena netto całego dokumentu sprzedaży przed zastosowaniem rabatów. | |
DiscountAmount | dziesiętny | Całkowita kwota rabatu dla całego dokumentu sprzedaży. | |
TotalAmount | dziesiętny | Całkowita kwota dla całego dokumentu sprzedaży. | |
CartLines | IList<CartLine> | Wiersze obliczane, które zawierają szczegóły ceny i rabatu. | |
Cena | dziesiętny | Cena jednostkowa produktu. | |
NetPrice | dziesiętny | Cena netto całego dokumentu sprzedaży przed zastosowaniem rabatów (= Cena × Ilość). | |
DiscountAmount | dziesiętny | Kwota rabatu. | |
TotalAmount | dziesiętny | Ostateczny wynik ceny całkowitej dla wiersza. | |
PriceLines | IList<PriceLine> | Szczegóły ceny, w tym źródło ceny (podstawa ceny, korekta ceny lub umowa handlowa) i kwota. | |
DiscountLines | IList<DiscountLine> | Szczegóły rabatu. |
GetAvailablePromotions
Istnieją dwa podobne interfejsy API GetAvailablePromotions:
- Carts/GetAvailablePromotions akceptuje listę identyfikatorów wiersza koszyka jako parametr.
- GetAvailablePromotions akceptuje obiekt DiscountsSearchCriteria jako parametr.
Carts/GetAvailablePromotions
W danym koszyku, który ma kilka wierszy koszyka, interfejs API Carts/GetAvailablePromotions zwraca wszystkie odpowiednie rabaty dla wierszy koszyka.
Głównym powodem dla interfejsu API Carts/GetAvailablePromotions jest strona koszyka, na której sprzedawcy detaliczni pokazują rabaty lub dostępne kupony dla bieżącego koszyka.
W poniższej tabeli wymieniono parametry wejściowe interfejsu API Carts/GetAvailablePromotions.
Imię i nazwisko | Typ | Wymagane/opcjonalnie | opis |
---|---|---|---|
klucz | ciąg | Wymagane | Identyfikator koszyka. |
cartLineIds | IEnumerable<string> | Opcjonalnie | Ustaw ten parametr, aby zwracać rabaty tylko dla wybranych wierszy koszyka. |
Przykładowa treść odpowiedzi
{
"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
Interfejs API GetAvailablePromotions zwraca wszystkie odpowiednie rabaty dla danego kanału.
Głównym powodem użycia interfejsu API GetAvailablePromotions jest strona „Wszystkie rabaty”, na której sprzedawcy detaliczni pokazują wszystkie rabaty dla bieżącego kanału.
W poniższej tabeli wymieniono parametry wejściowe interfejsu API GetAvailablePromotions.
Nazwa | Nazwa podrzędna | Typ | Wymagane/opcjonalnie | Opis |
---|---|---|---|---|
searchCriteria | DiscountsSearchCriteria | Wymagane | ||
ChannelId | długi | Wymagane | ||
Słowo kluczowe | ciąg | Opcjonalnie | ||
IsDiscountCodeRequired | bool | Opcjonalnie | Wskazuje, czy kod kuponu jest wymagany, czy nie. Jeśli przekazano wartość null, wszystkie rabaty są pobierane niezależnie od wymagań dotyczących kodów kuponów. | |
StartDate | DateTimeOffset | Wymagana | Data rozpoczęcia (uwzględniona). | |
EndDate | DateTimeOffset | Wymagana | Data zakończenia (uwzględniona). |
Przykładowa treść żądania
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
Przykładowa treść odpowiedzi
{
"@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
Interfejs API AddCoupons obsługuje dodawanie listy kuponów do koszyka. Zwraca obiekt koszyka po dodaniu kuponów.
W poniższej tabeli przedstawiono parametry wejściowe interfejsu API AddCoupons.
Nazwisko | Typ | Wymagane/Opcjonalne | opis |
---|---|---|---|
klucz | ciąg | Wymagane | Identyfikator koszyka. |
couponCodes | IEnumerable<string> | Wymagane | Kody kuponów do dodania do koszyka. |
isLegacyDiscountCode | bool | Opcjonalnie | Ustaw ten parametr na wartość True, aby wskazać, że kupon jest starszego kodu rabatu. Domyślna wartość to false. |
RemoveCoupons
Interfejs API RemoveCoupons obsługuje usuwanie listy kuponów z koszyka. Zwraca przedmiot koszyka po usunięciu kuponów.
W poniższej tabeli przedstawiono parametry wejściowe interfejsu API RemoveCoupons.
Nazwisko | Typ | Wymagane/Opcjonalne | opis |
---|---|---|---|
klucz | ciąg | Wymagane | Identyfikator koszyka. |
couponCodes | IEnumerable<string> | Wymagana | Kody kuponów do usunięcia z koszyka. |
GetProductPromotions
Interfejs API GetProductPromotions został wprowadzony w wersji Commerce 10.0.38. Ten interfejs API pobiera listę produktów promocyjnych z przy użyciu podanych rabatów na produkty, a także może przyjmować listę identyfikatorów rabatów produktów i kontekstu cen jako dane wejściowe i kwerendę skojarzonych produktów promocyjnych. Głównym powodem dla interfejsu API GetProductPromotions są strony list produktów, na których sprzedawcy detaliczni kodują produkty z rabatami. Ten interfejs API obsługuje zarówno podstawowy model wyceny właściwości, jak i starszych modeli cen.
W poniższej tabeli przedstawiono parametry wejściowe interfejsu API GeProductPromotions.
Nazwa | Nazwa podrzędna | Typ | Wymagane/opcjonalnie | Opis |
---|---|---|---|---|
productDiscountIds | IEnumerable<string> | Wymagana | Lista identyfikatorów rabatów produktów do wyszukiwania produktów promocyjnych. | |
priceLookupContext | PriceLookupContext | Wymagana | Kontekst cen. | |
activeDate | DateTimeOffset | Opcjonalna | Data rozważania promocji. |
Ograniczenia i limity:
- Jako dane wejściowe można wprowadzić maksymalnie pięć identyfikatorów rabatów produktów.
- Obsługiwane są tylko rabaty proste.
Przykładowa treść żądania
{
{
"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",
},
}
Przykładowa treść odpowiedzi
{
"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
}
]
}
]
}
Aby uzyskać więcej informacji, zobacz PriceLookupContext.
PriceLookupContext
Klasa PriceLookupContext jest używana dla podstawowego modelu cen właściwości w interfejsach API GetProductPromotions i GetActivePrices.
W poniższym przykładzie pokazano strukturę klasy 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>
},
]
}
Przykładowa treść żądania
"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": []
}
Uwaga
- Nie określono grupy klientów w paramterze PriceLookupHeaderContext, ponieważ wywnioskował ją numer konta odbiorcy.
- W parametrze PriceLookupHeaderContext można określić ChannelId. Jeśli nie zostanie określony, zostanie użyty ChannelId z kontekstu żądania (bieżący kanał w przypadku korzystania z usług Store Commerce).