Udostępnij za pośrednictwem


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).