Compartilhar via


APIs de preços do Commerce

TEste artigo descreve várias APIs de preços fornecidas pelo mecanismo de preços do Microsoft Dynamics 365 Commerce.

O mecanismo de preço do Dynamics 365 Commerce fornece as seguintes APIs do Retail Server que aplicativos externos podem consumir para dar suporte a cenários de preço variados:

  • GetActivePrices – Esta API obtém o preço calculado de um produto, incluindo descontos simples.
  • CalculateSalesDocument – esta API calcula preços e descontos para produtos em determinadas quantidades, caso eles sejam comprados juntos.
  • GetAvailablePromotions – Esta API obtém descontos aplicáveis para produtos no carrinho.
  • AddCoupons – Esta API adiciona cupons a um carrinho.
  • RemoveCoupons – Esta API remove os cupons de um carrinho.

Para obter mais informações sobre como consumir APIs do Retail Server em aplicativos externos, consulte Consumir interfaces de programação de aplicativo do Retail Server em aplicativos externos.

GetActivePrices

A API GetActivePrices foi introduzida na versão 10.0.4 do Commerce Version. Essa API obtém o preço calculado de um produto, incluindo descontos simples. Ela não calcula os descontos combinados e supõe que cada produto em uma solicitação de API tem uma quantidade de 1. Essa API também pode usar uma lista de produtos como entrada e consultar o preço de produtos individuais em massa.

A API GetActivePrices oferece suporte às funções Funcionário, Cliente, Anônimo e Aplicativo do Commerce.

O principal caso de uso para a API GetActivePrices é a página de detalhes do produto (PDP), em que os varejistas apresentar o melhor preço para um produto, incluindo qualquer desconto efetivo.

Anotação

Se você vir menos produtos devolvidos por uma chamada GetActivePrices, pode seguir o Validador de configuração de merchandising de canal para validar suas configurações de merchandising.

A tabela a seguir mostra os parâmetros de entrada para a API GetActivePrices.

Organização Subnome Tipo Obrigatório/Opcional Descrição
projectDomain ProjectionDomain Necessário
ChannelId long Obrigatório
CatalogId long Obrigatório
productIds IEnumerable<long> Obrigatório A lista de produtos para os quais serão calculados os preços.
activeDate DateTimeOffset Necessário A data em que os preços serão calculados.
customerId cadeia de caracteres Opcional O número da conta do cliente.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Opcional As camadas de afiliação e do programa de fidelidade.
AffiliationId long Necessário A ID da afiliação.
LoyaltyTierId long Opcional A ID da camada do programa de fidelidade.
includeSimpleDiscountsInContextualPrice bool Opcional Defina este parâmetro como verdadeiro para incluir descontos simples no cálculo de definição de preços. O valor padrão é false.
includeVariantPriceRange bool Opcional Defina este parâmetro como verdadeiro para obter os preços mínimo e máximo entre todas as grades de um produto mestre. O valor padrão é false.
includeAttainablePricesAndDiscounts bool Opcional Defina este parâmetro como verdadeiro para obter preços e descontos mais acessíveis. O valor padrão é false.
Exemplo corpo da solicitação
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Exemplo corpo da resposta
{
    "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": [],
        }
    ]
}

Usar PriceLookupContext

A classe PriceLookupContext foi introduzida no Commerce versão 10.0.37. A classe contém todos os critérios de pesquisa da API GetActivePrices e substitui os parâmetros anteriores de productIds, activeDate, customerId e affiliationLoyaltyTiers. A classe também tem propriedades adicionais que os desenvolvedores podem usar para filtrar descontos durante a pesquisa de desconto.

De acordo com as necessidades da organização, a API GetActivePrices pode aceitar os parâmetros anteriores ou os novos parâmetros associados à classe PriceLookupContext.

Parâmetros de entrada

Organização Subnome Tipo Obrigatório/Opcional Descrição
projectDomain ProjectionDomain Necessário
ChannelId long Necessário
CatalogId long Necessário
priceLookupContext PriceLookupContext Necessário
HeaderContext PriceLookupHeaderContext Necessário Contém CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties
LineContexts IEnumerable<PriceLookupLineContext> Necessário Contém ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId e SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool Opcional Defina este parâmetro como verdadeiro para incluir descontos simples no cálculo de definição de preços. O valor padrão é false.
includeVariantPriceRange bool Opcional Defina este parâmetro como verdadeiro para obter os preços mínimo e máximo entre todas as grades de um produto mestre. O valor padrão é false.
includeAttainablePricesAndDiscounts bool Opcional Defina este parâmetro como verdadeiro para obter preços e descontos mais acessíveis. O valor padrão é false.

Para obter mais informações, consulte PriceLookupContext.

CalculateSalesDocument

A API CalculateSalesDocument foi introduzida na versão 10.0.25 do Commerce. Essa API calcula preços e descontos para produtos em determinadas quantidades, caso eles sejam comprados em um pedido. O cálculo de definição de preços por trás da API CalculateSalesDocument considera descontos de uma única linha e de várias linhas.

O principal caso de uso da API CalculateSalesDocument é o cálculo de definição de preços em cenários nos quais o contexto de carrinho total não é mantido (como cotações de venda). Os cenários no PDV (ponto de venda) e comércio eletrônico do Commerce também podem se beneficiar deste caso de uso. Um preço total menor quando os itens do carrinho são calculados como um conjunto (por exemplo, para pacotes discretos, produtos vinculados ou recomendados ou produtos que já foram adicionados ao carrinho) podem persuadir os clientes a adicionar produtos ao carrinho.

O modelo de dados para a solicitação e a resposta da API CalculateSalesDocument é Carrinho. No entanto, no contexto dessa API, o modelo de dados é denominado SalesDocument. Como a maioria das propriedades é opcional, e apenas algumas delas afetam o cálculo de definição de preços, somente os campos relacionados a preços são mostrados na tabela a seguir. Não é recomendável que outros campos sejam envolvidos na solicitação da API.

O escopo da API CalculateSalesDocument é apenas o cálculo de preços e descontos. Os impostos e os encargos não estão envolvidos.

A tabela a seguir mostra os parâmetros de entrada no objeto chamado salesDocument.

Organização Subnome Tipo Obrigatório/Opcional Descrição
Id cadeia de caracteres Necessário O identificador do documento de venda.
CartLines IList<CartLine> Opcional A lista de linhas para as quais serão calculados os preços e descontos.
ID do Produto long Necessário no escopo da CartLine A ID de registro do produto.
ItemId cadeia de caracteres Opcional O identificador do item. Se um valor for fornecido, ele deve corresponder ao valor do parâmetro ProductID.
InventoryDimensionId cadeia de caracteres Opcional O identificador de dimensão do estoque. Se um valor for fornecido, a combinação dos valores de ItemId e InventoryDimensionId deverá corresponder ao valor do parâmetro ProductId.
Quantidade decimal Necessário no escopo da CartLine A quantidade do produto.
UnitOfMeasureSymbol cadeia de caracteres Opcional A unidade do produto. Por padrão, se um valor não for fornecido, a API usará a unidade de venda do produto.
CustomerId cadeia de caracteres Opcional O número da conta do cliente.
LoyaltyCardId cadeia de caracteres Opcional O identificador do cartão-fidelidade. Qualquer conta de cliente associada ao cartão-fidelidade deve corresponder ao valor do parâmetro CustomerId (se fornecido). O cartão-fidelidade não será levado em consideração se não for encontrado ou o status for Bloqueado.
AffiliationLines IList<AffiliationLoyaltyTier> Opcional Linhas da camada de fidelidade da afiliação. Se os valores CustomerId e/ou LoyaltyCardId forem fornecidos, as linhas do nível de fidelidade da afiliação correspondentes serão mescladas com linhas fornecidas no valor AffiliationLines.
AffiliationId long Necessário no escopo de AffiliationLoyaltyTier A ID de registro da afiliação.
LoyaltyTierId long Necessário no escopo de AffiliationLoyaltyTier A ID do registro da camada de fidelidade.
AffiliationTypeValue int Necessário no escopo de AffiliationLoyaltyTier Um valor que indica se a linha de afiliação é do tipo Geral (0) ou do tipo Fidelidade (1). Se o parâmetro for definido como 0, a API vai usar o valor AffiliationId como o identificador e ignorar o valor LoyaltyTierId. Se o parâmetro for definido como 1, a API vai usar o valor LoyaltyTierId como o identificador e ignorar o valor AffiliationId.
ReasonCodeLines Collection<ReasonCodeLine> Necessário no escopo de AffiliationLoyaltyTier Linhas do código do motivo. Esse parâmetro não tem efeito sobre o cálculo de preços, mas é necessário como parte do objeto AffiliationLoyaltyTier.
CustomerId cadeia de caracteres Necessário no escopo de AffiliationLoyaltyTier O número da conta do cliente.
Cupons IList<Coupon> Opcional Os cupons não aplicáveis (inativos, expirados ou não encontrados) não são levados em consideração no cálculo de preço.
Código cadeia de caracteres Necessário no escopo de Coupon O código do cupom.
CodeId cadeia de caracteres Opcional O identificador do código do cupom. Se um valor for fornecido, ele deverá corresponder ao valor do parâmetro Code.
DiscountOfferId cadeia de caracteres Opcional O identificador do desconto. Se um valor for fornecido, ele deverá corresponder ao valor do parâmetro Code.
Exemplo corpo da solicitação
{
    "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"
            }
        ]
    }
}

O objeto do carrinho inteiro é devolvido como o corpo da resposta. Para verificar preços e descontos, você deve focar nos campos na tabela a seguir.

Organização Subnome Tipo Descrição
NetPrice decimal O preço líquido de todo o documento de vendas antes da aplicação de eventuais descontos.
DiscountAmount decimal O valor total do desconto do documento de vendas inteiro.
TotalAmount decimal O valor total do documento de vendas inteiro.
CartLines IList<CartLine> Linhas calculadas que incluem detalhes de preço e desconto.
Preço decimal O preço unitário do produto.
NetPrice decimal O preço líquido da linha antes da aplicação de eventuais descontos (= Preço × Quantidade).
DiscountAmount decimal O valor do desconto.
TotalAmount decimal O resultado do preço total final da linha.
PriceLines IList<PriceLine> Detalhes de preço, incluindo a origem do preço (preço base, ajuste de preço ou contrato comercial) e o valor.
DiscountLines IList<DiscountLine> Detalhes do desconto.

GetAvailablePromotions

Há duas APIs GetAvailablePromotions semelhantes:

  • Carts/GetAvailablePromotions aceita uma lista de identificadores de linha do carrinho como parâmetro.
  • GetAvailablePromotions aceita um objeto DiscountsSearchCriteria como parâmetro.

Carrinhos/GetAvailablePromotions

Dado um carrinho com várias linhas de carrinho, a API Carrinhos/GetAvailablePromotions retorna todos os descontos aplicáveis para as linhas do carrinho.

O principal caso de uso para a API Carrinhos/GetAvailablePromotions é a página do carrinho, em que os varejistas exibem descontos aplicados ou cupons disponíveis para o carrinho atual.

A tabela a seguir lista os parâmetros de entrada para a API Carrinhos/GetAvailablePromotions.

Nome Tipo Obrigatório/Opcional descrição
chave cadeia de caracteres Obrigatório A ID do carrinho.
cartLineIds IEnumerable<string> Opcional Defina este parâmetro para retornar descontos somente para as linhas do carrinho selecionado.
Exemplo corpo da resposta
{
    "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

A API GetAvailablePromotions retorna todos os descontos aplicáveis para determinado canal.

O principal caso de uso para a API GetAvailablePromotions é a página "Todos os descontos", em que os varejistas exibem todos os descontos aplicados para o canal atual.

A tabela a seguir lista os parâmetros de entrada para a API GetAvailablePromotions.

Organização Subnome Tipo Obrigatório/Opcional Descrição
searchCriteria DiscountsSearchCriteria Necessário
ChannelId long Necessário
Palavra-chave cadeia de caracteres Opcional
IsDiscountCodeRequired bool Opcional Indica se o código do cupom é ou não necessário. Se for exibido Nulo, todos os descontos serão recuperados, independentemente dos requisitos de código de cupom.
StartDate DateTimeOffset Necessário A data de início (incluída).
EndDate DateTimeOffset Necessário A data final (incluída).
Exemplo corpo da solicitação
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Exemplo corpo da resposta
{
    "@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

A API de Addcupons oferece suporte à adição de uma lista de cupons a um carrinho. Ela retorna o objeto do carrinho depois que os cupons são adicionados.

A tabela a seguir mostra os parâmetros de entrada para a API AddCoupons.

Nome Tipo Obrigatório/Opcional descrição
chave cadeia de caracteres Obrigatório A ID do carrinho.
couponCodes IEnumerable<string> Obrigatório Os códigos de cupom a serem adicionados ao carrinho.
isLegacyDiscountCode bool Opcional Defina este parâmetro como verdadeiro para indicar que o cupom é um código de desconto herdado. O valor padrão é false.

RemoveCoupons

A API RemoveCoupons oferece suporte à remoção de uma lista de cupons de um carrinho. Ela retorna o objeto do carrinho depois que os cupons são removidos.

A tabela a seguir mostra os parâmetros de entrada para a API RemoveCoupons.

Nome Tipo Obrigatório/Opcional descrição
chave cadeia de caracteres Obrigatório A ID do carrinho.
couponCodes IEnumerable<string> Necessário Os códigos de cupom a serem removidos do carrinho.

GetProductPromotions

A API GetProductPromotions foi introduzida no Commerce versão 10.0.38. Esta API obtém uma lista de produtos promocionais com determinados descontos de produto e também pode usar uma lista de IDs de desconto de produto e contexto de preço como entrada e consultar os produtos promocionais associados. O caso de uso principal da API GetProductPromotions está em páginas de listagem de produtos, nas quais os varejistas demonstram produtos com descontos. Essa API dá suporte ao modelo de preço com base em propriedades e ao modelo de preço herdado.

A tabela a seguir mostra os parâmetros de entrada para a API GetProductPromotions.

Organização Subnome Tipo Obrigatório/Opcional Descrição
productDiscountIds IEnumerable<string> Necessário A lista de IDs de desconto do produto para procurar produtos promocionais.
priceLookupContext PriceLookupContext Necessário O contexto de preço.
activeDate DateTimeOffset Opcional A data quando a promoção é levada em consideração.

Restrições e limitações:

  • Só pode ter, no máximo, cinco IDs de desconto do produto como entrada.
  • Somente descontos simples são compatíveis.
Exemplo corpo da solicitação
{
    {
    "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",
    },
}
Exemplo corpo da resposta
{
    "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
                }
            ]   
        }
    ]
}

Para obter mais informações, consulte PriceLookupContext.

PriceLookupContext

A classe PriceLookupContext é usada no modelo de preço base da propriedade nas APIs GetProductPromotions e GetActivePrices.

A estrutura da classe PriceLookupContext é mostrada no exemplo a seguir.

{
    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>
        },
    ]
}
Exemplo corpo da solicitação
"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": []
}

Observação

  • Não há um grupo de clientes especificado no parâmetro PriceLookupHeaderContext porque ele foi inferido pelo número da conta do cliente.
  • O ChannelId pode ser especificado no parâmetro PriceLookupHeaderContext. Se não for especificado, o ChannelId do contexto da solicitação (o canal atual durante o uso do Store Commerce) vai ser usado.