Partilhar via


APIs de preços do Commerce

Isto artigo descreve várias APIs de preços que são fornecidas pelo motor de preços Microsoft Dynamics 365 Commerce .

O motor de fixação de preços Dynamics 365 Commerce fornece as seguintes APIs do Retail Server que as aplicações externas podem consumir para suportar vários cenários de fixação de preços:

  • GetActivePrices - Esta API obtém o preço calculado de um produto, incluindo descontos simples.
  • CalculateSalesDocument - Esta API calcula os preços e descontos dos produtos em determinadas quantidades, se forem comprados em conjunto.
  • GetAvailablePromotions - Esta API obtém os descontos aplicáveis aos produtos no carrinho.
  • AddCoupons - Esta API adiciona cupões a um carrinho.
  • RemoveCoupons - Esta API remove cupões de um carrinho.

Para mais informações sobre como consumir APIs do Servidor de Retalho em aplicações externas, ver Consumir APIs do Servidor de Retalho em aplicações externas.

ObterPreçosActivos

A API GetActivePrices foi introduzida na versão 10.0.4 do Commerce. Esta API obtém o preço calculado de um produto, incluindo descontos simples. Não calcula descontos de várias linhas e assume que cada produto num pedido de API tem uma quantidade de 1. Esta API também pode receber uma lista de produtos como entrada e consultar o preço de produtos individuais em massa.

A API GetActivePrices suporta as funções comerciais Employee, Customer, Anonymous, e Application .

O principal caso de utilização da API GetActivePrices é a página de detalhes do produto (PDP), onde os retalhistas mostram o melhor preço para um produto, incluindo quaisquer descontos efectivos.

Nota

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

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

Nome Subnome Tipo Obrigatório/Opcional Descrição
Domínio do projeto Domínio de Projeção Obrigatório
ChannelId longo Obrigatório
CatalogId longo Obrigatório
productIds IEnumerable<long> Obrigatório A lista de produtos para os quais calcular os preços.
activeDate DateTimeOffset Obrigatório A data em que os preços são calculados.
clienteId cadeia Opcional O número da conta do cliente.
affiliationLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Opcional Os níveis de filiação e de fidelização.
AffiliationId longo Obrigatório O ID de afiliação.
LoyaltyTierId longo Opcional A identificação do escalão de fidelização.
includeSimpleDiscountsInContextualPrice bool Opcional Defina isto parâmetro como true para incluir descontos simples no cálculo do preço. O valor predefinido é false.
includeVariantPriceRange bool Opcional Definir isto parâmetro para true para obter os preços mínimo e máximo entre todas as variantes de um produto principal. O valor predefinido é false.
incluirPreçosEDescontosAlcançáveis bool Opcional Definir isto parâmetro para true para obter preços e descontos acessíveis. O valor predefinido é false.
Exemplo de corpo do pedido
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Exemplo de corpo de 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": [],
        }
    ]
}

Utilizar PriceLookupContext

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

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

Parâmetros de entrada

Nome Subnome Tipo Obrigatório/Opcional Descrição
Domínio do projeto Domínio de Projeção Obrigatório
ChannelId longo Obrigatório
CatalogId longo Obrigatório
priceLookupContext PriceLookupContext Obrigatório
HeaderContext PriceLookupHeaderContext Obrigatório Contém CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties
Contextos de linha IEnumerable<PriceLookupLineContext> Obrigatório Contém ProductRecordId, UnitOfMeasureSymbol, InventorySiteId, InventoryLocationId, DeliveryMode, CatalogId e SalesLineProperties.
includeSimpleDiscountsInContextualPrice bool Opcional Defina isto parâmetro como true para incluir descontos simples no cálculo do preço. O valor predefinido é false.
includeVariantPriceRange bool Opcional Definir isto parâmetro para true para obter os preços mínimo e máximo entre todas as variantes de um produto principal. O valor predefinido é false.
incluirPreçosEDescontosAlcançáveis bool Opcional Definir isto parâmetro para true para obter preços e descontos acessíveis. O valor predefinido é false.

Para mais informações, ver PriceLookupContext.

CalcularVendasDocumento

A API CalculateSalesDocument foi introduzida na versão 10.0.25 do Commerce. Esta API calcula preços e descontos para produtos em determinadas quantidades se forem comprados em conjunto numa encomenda. O cálculo de preços subjacente à API CalculateSalesDocument considera tanto os descontos de uma linha como os descontos de várias linhas.

O principal caso de utilização da API CalculateSalesDocument é o cálculo de preços em cenários em que o contexto completo do carrinho de compras não persiste (como as cotações de vendas). Os cenários no ponto de venda (POS) e no comércio eletrónico também podem beneficiar deste caso de utilização. Um preço total mais baixo quando os itens do carrinho são calculados como um conjunto (por exemplo, para pacotes discretos, produtos ligados ou recomendados, ou produtos que já foram adicionados ao carrinho) pode persuadir os clientes a adicionar produtos ao carrinho.

O modelo de dados para o pedido e a resposta da API CalculateSalesDocument é Cart. No entanto, no contexto desta API, o modelo de dados tem o nome de SalesDocument. Como a maioria das propriedades é opcional e apenas algumas delas afetam o cálculo do preço, apenas os campos relacionados ao preço são mostrados na tabela a seguir. Não recomendamos a inclusão de outros campos no pedido de API.

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

A tabela seguinte mostra os parâmetros de entrada dentro do objeto que se chama salesDocument.

Nome Subnome Tipo Obrigatório/Opcional Descrição
ID cadeia Obrigatório O identificador do documento de venda.
CartLines IList<CartLine> Opcional A lista de linhas para as quais calcular preços e descontos.
ID do Produto longo Necessário no âmbito da CartLine O ID do registo do produto.
ItemId cadeia Opcional O identificador do item. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro ProductId .
InventoryDimensionId cadeia Opcional O identificador da dimensão do inventário. Se for fornecido um valor, a combinação dos valores ItemId e InventoryDimensionId deve corresponder ao valor do parâmetro ProductId .
Quantidade decimal Necessário no âmbito da CartLine A quantidade do produto.
UnitOfMeasureSymbol cadeia Opcional A unidade do produto. Por defeito, se não for fornecido um valor, a API utiliza a unidade de venda do produto.
CustomerId cadeia Opcional O número da conta do cliente.
LoyaltyCardId cadeia Opcional O identificador do cartão de fidelidade. Qualquer conta de cliente associada ao cartão de fidelização deve corresponder ao valor do parâmetro CustomerId (se fornecido). O cartão de fidelização não é considerado se não for encontrado ou se o seu estado for Bloqueado.
Linhas de filiação IList<AffiliationLoyaltyTier> Opcional Linhas de escalão de fidelidade à filiação. Se forem fornecidos os valores CustomerId e/ou LoyaltyCardId , as linhas do nível de fidelização de filiação correspondentes são fundidas com as linhas fornecidas no valor AffiliationLines .
AffiliationId longo Necessário no âmbito de AffiliationLoyaltyTier O ID do registo de afiliação.
LoyaltyTierId longo Necessário no âmbito de AffiliationLoyaltyTier O ID do registo do nível de fidelização.
AffiliationTypeValue parâm. Necessário no âmbito de AffiliationLoyaltyTier Um valor que indica se a linha de filiação é do tipo Geral (0) ou do tipo Lealdade (1). Se o parâmetro for definido como 0, a API considera o valor AffiliationId como identificador e ignora o valor LoyaltyTierId . Se o parâmetro for definido como 1, a API considera o valor LoyaltyTierId como identificador e ignora o valor AffiliationId .
ReasonCodeLines Coleção<ReasonCodeLine> Necessário no âmbito de AffiliationLoyaltyTier Linhas de código do motivo. Isto parâmetro não tem qualquer efeito no cálculo do preço, mas é necessário como parte do objeto AffiliationLoyaltyTier .
CustomerId cadeia Necessário no âmbito de AffiliationLoyaltyTier O número da conta do cliente.
Cupões IList<Cupão> Opcional Os cupões que não são aplicáveis (inactivos, expirados ou não encontrados) não são considerados no cálculo do preço.
Código cadeia Necessário no âmbito do Cupão O código do cupão.
CodeId cadeia Opcional O identificador do código do cupão. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro Code .
DiscountOfferId cadeia Opcional O identificador de desconto. Se for fornecido um valor, isto deve corresponder ao valor do parâmetro Code .
Exemplo de corpo do pedido
{
    "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 carrinho completo é devolvido como corpo da resposta. Para verificar os preços e descontos, deve concentrar-se nos campos do quadro seguinte.

Nome Subnome Tipo Descrição
Preço líquido decimal O preço líquido de todo o documento de venda antes da aplicação de quaisquer descontos.
DiscountAmount decimal O valor total do desconto de todo o documento de vendas.
TotalMontante decimal O montante total de todo o documento de venda.
CartLines IList<CartLine> Linhas calculadas que incluem detalhes de preços e descontos.
Preço decimal O preço unitário do produto.
Preço líquido decimal O preço líquido da linha antes da aplicação de quaisquer descontos (= Preço × Quantidade).
DiscountAmount decimal O montante do desconto.
TotalMontante decimal O resultado final do preço total da linha.
Linhas de preço IList<PriceLine> Detalhes do preço, incluindo a fonte do preço (preço de base, ajustamento de preço ou acordo comercial) e o montante.
DiscountLines IList<DiscountLine> Detalhes do desconto.

ObterPromoçõesDisponíveis

Existem duas APIs semelhantes em GetAvailablePromotions :

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

Carrinhos/GetAvailablePromotions

Dado um carrinho que tem várias linhas de carrinho, a API Carts/GetAvailablePromotions devolve todos os descontos aplicáveis às linhas de carrinho.

O principal caso de utilização da API Carts/GetAvailablePromotions é a página do carrinho, onde os retalhistas mostram os descontos aplicados ou os cupões disponíveis para o carrinho atual.

A tabela seguinte apresenta os parâmetros de entrada para a API Carts/GetAvailablePromotions .

Nome Tipo Obrigatório/Opcional Descrição
chave cadeia Obrigatório O ID do carrinho.
cartLineIds IEnumerable<string> Opcional Defina isto parâmetro para devolver descontos apenas para as linhas de carrinho seleccionadas.
Exemplo de corpo de 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
            }
        }
    ]
}

ObterPromoçõesDisponíveis

A API GetAvailablePromotions devolve todos os descontos aplicáveis ao canal em causa.

O principal caso de utilização da API GetAvailablePromotions é a página "Todos os descontos", onde os retalhistas mostram todos os descontos para o canal atual.

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

Nome Subnome Tipo Obrigatório/Opcional Descrição
searchCriteria DescontosCritérios de pesquisa Obrigatório
ChannelId longo Obrigatório
Keyword cadeia Opcional
IsDiscountCodeRequired bool Opcional Indica se o código do cupão é obrigatório ou não. Se for passado null, todos os descontos são recuperados, independentemente dos requisitos do código de cupão.
Data de início DateTimeOffset Obrigatório A data de início (inclusive).
Data de fim DateTimeOffset Obrigatório A data final (inclusive).
Exemplo de corpo do pedido
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Exemplo de corpo de 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
                    }
                }
            ]
        }
    ]
}

AdicionarCupons

A API AddCoupons suporta a adição de uma lista de cupões a um carrinho. Devolve o objeto carrinho depois de os cupões terem sido adicionados.

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

Nome Tipo Obrigatório/Opcional Descrição
chave cadeia Obrigatório O ID do carrinho.
Códigos de cupão IEnumerable<string> Obrigatório Os códigos de cupão a adicionar ao carrinho.
isLegacyDiscountCode bool Opcional Defina isto parâmetro como true para indicar que o cupão é um código de desconto antigo. O valor predefinido é false.

RemoverCupons

A API RemoveCoupons suporta a remoção de uma lista de cupões de um carrinho. Devolve o objeto carrinho depois de os cupões terem sido retirados.

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

Nome Tipo Obrigatório/Opcional Descrição
chave cadeia Obrigatório O ID do carrinho.
Códigos de cupão IEnumerable<string> Obrigatório Os códigos de cupão a remover do carrinho.

GetProductPromotions

A API GetProductPromotions foi introduzida na versão 10.0.38 do Commerce. Esta API obtém uma lista de produtos promocionais com determinados descontos de produto e também pode receber uma lista de IDs de desconto de produto e contexto de preços como entrada e consultar os produtos promocionais associados. O principal caso de utilização da API GetProductPromotions é nas páginas de listagem de produtos, onde os retalhistas apresentam produtos com descontos. Esta API suporta tanto o modelo de fixação de preços com base na propriedade como o modelo de fixação de preços antigo.

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

Nome Subnome Tipo Obrigatório/Opcional Descrição
productDiscountIds IEnumerable<string> Obrigatório A lista de IDs de desconto de produtos para procurar produtos promocionais.
priceLookupContext PriceLookupContext Obrigatório O contexto da fixação de preços.
activeDate DateTimeOffset Opcional A data em que a promoção é considerada.

Restrições e limitações:

  • Só pode aceitar um máximo de cinco IDs de desconto de produto como entrada.
  • Apenas são suportados descontos simples.
Exemplo de corpo do pedido
{
    {
    "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 de corpo de 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 mais informações, ver PriceLookupContext.

PriceLookupContext

A classe PriceLookupContext é utilizada para o modelo de preços baseado em propriedades nas APIs GetProductPromotions e GetActivePrices .

A estrutura da classe PriceLookupContext é apresentada no exemplo seguinte.

{
    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 de corpo do pedido
"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": []
}

Nota

  • Não existe um grupo de clientes especificado no parâmetro PriceLookupHeaderContext porque isto foi inferido pelo número de conta do cliente.
  • O ChannelId pode ser especificado no parâmetro PriceLookupHeaderContext. Se não for especificado, é utilizado o ChannelId do contexto do pedido (o canal atual quando se utiliza o Store Commerce).