Share via


APIs de preços do Commerce

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

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

  • 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 se forem 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 cupons de um carrinho.

Para obter mais informações sobre como consumir APIs do Retail Server em aplicativos externos, consulte Consumir APIs do Retail Server em aplicativos externos.

GetActivePrices

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 com várias linhas e pressupõe que cada produto num pedido de API tem uma quantidade de 1. Esta API também pode tomar uma lista de produtos como entrada e consultar o preço de produtos individuais em massa.

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

O principal caso de uso para a API GetActivePrices é a página de detalhes do produto (PDP), onde os varejistas mostram o melhor preço para um produto, incluindo quaisquer descontos efetivos.

Nota

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

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

Nome Subnome Tipo Obrigatório/Opcional Descrição
projectDomain ProjeçãoDomínio Obrigatório
ChannelId longo Obrigatório
CatalogId longo Obrigatório
productIds [en] IEnumerável<longo> Obrigatório A lista de produtos para calcular preços.
data-ativa DateTimeOffset Obrigatório A data em que os preços são calculados.
customerId [en] cadeia Opcional O número da conta do cliente.
afiliaçãoLoyaltyTiers IEnumerable<AffiliationLoyaltyTier> Opcional Os níveis de afiliação e fidelidade.
AffiliationId longo Obrigatório O ID da afiliação.
LoyaltyTierId longo Opcional O ID do escalão de fidelização.
includeSimpleDiscountsInContextualPrice bool Opcional Defina isto parâmetro como true para incluir descontos simples no cálculo de preços. O valor padrão é false.
includeVariantPriceRange bool Opcional Defina isto parâmetro como true para obter os preços mínimos e máximos entre todas as variantes para um produto principal. O valor padrão é false.
incluemPreçose descontos bool Opcional Defina isto parâmetro como true para obter preços e descontos alcançáveis. O valor padrão é false.
Corpo do pedido de amostra
{
    "projectDomain": 
    {
        "ChannelId": 5637144592,
        "CatalogId": 0
    },
    "productIds": 
    [
        68719489871
    ],
    "activeDate": "2022-06-20T14:40:05.873+08:00",
    "includeSimpleDiscountsInContextualPrice": true,
    "includeVariantPriceRange": false
}
Corpo da resposta da amostra
{
    "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 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 procura de descontos.

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

Parâmetros de entrada

Nome Subnome Tipo Obrigatório/Opcional Descrição
projectDomain ProjeçãoDomínio Obrigatório
ChannelId longo Obrigatório
CatalogId longo Obrigatório
priceLookupContext PriceLookupContext Obrigatório
HeaderContext PriceLookupHeaderContext Obrigatório Contém CustomerAccountNumber, AffiliationLoyaltyTierLines e SalesOrderProperties
LineContexts 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 de preços. O valor padrão é false.
includeVariantPriceRange bool Opcional Defina isto parâmetro como true para obter os preços mínimos e máximos entre todas as variantes para um produto principal. O valor padrão é false.
incluemPreçose descontos bool Opcional Defina isto parâmetro como true para obter preços e descontos alcançá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. Esta API calcula preços e descontos para produtos em determinadas quantidades se forem comprados juntos numa encomenda. O cálculo de preços por trás da API CalculateSalesDocument considera descontos de linha única e descontos de várias linhas.

O principal caso de uso da API CalculateSalesDocument é o cálculo de preços em cenários onde o contexto de carrinho completo não persiste (como cotações de vendas). Os cenários no ponto de venda (POS) e no comércio eletrónico do Commerce 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 associados ou recomendados, ou produtos que já foram adicionados ao carrinho) pode persuadir os clientes a adicionar produtos ao carrinho.

O modelo de dados para a solicitação e a resposta da API CalculateSalesDocument é o Carrinho. No entanto, no contexto dessa API, o modelo de dados é chamado SalesDocument. Como a maioria das propriedades é opcional, e apenas algumas delas afetam o cálculo de preços, apenas os campos relacionados com preços são mostrados na tabela seguinte. Não recomendamos que outros campos estejam envolvidos no pedido da API.

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

A tabela a seguir mostra os parâmetros de entrada dentro do objeto chamado 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 calcular preços e descontos.
ID do Produto longo Obrigatório no âmbito do CartLine O ID de registo do produto.
ItemId cadeia Opcional O identificador do item. Se um valor for fornecido, ele deverá corresponder ao valor do parâmetro ProductId .
InventoryDimensionId cadeia Opcional O identificador de dimensão de inventário. Se for fornecido um valor, a combinação dos valores ItemId e InventoryDimensionId tem de corresponder ao valor do parâmetro ProductId .
Quantidade decimal Obrigatório no âmbito do CartLine A quantidade do produto.
UnitOfMeasureSymbol cadeia Opcional A unidade do produto. Por predefinição, 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 fidelidade deve corresponder ao valor do parâmetro CustomerId (se fornecido). O cartão de fidelidade não será considerado se não for encontrado ou se seu status for Bloqueado.
AfiliationLines IList<AffiliationLoyaltyTier> Opcional Linhas de nível de fidelização de afiliação. Se forem fornecidos valores CustomerId e/ou LoyaltyCardId , as linhas do nível de fidelização de afiliação correspondentes são unidas com linhas fornecidas no valor AffiliationLines .
AffiliationId longo Obrigatório no âmbito de AffiliationLoyaltyTier O ID do registo de afiliação.
LoyaltyTierId longo Obrigatório no âmbito de AffiliationLoyaltyTier O ID do registo do nível de fidelização.
AffiliationTypeValue parâm. Obrigatório no âmbito de AffiliationLoyaltyTier Um valor que indica se a linha de afiliação é do tipo Geral (0) ou dotipo Fidelização (1). Se o parâmetro for definido como 0, a API usará o valor AffiliationId como identificador e ignorará ovalor LoyaltyTierId . Se o parâmetro for definido como 1, a API usará o valor LoyaltyTierId como identificador e ignorará o valor AffiliationId .
ReasonCodeLines Coleção<ReasonCodeLine> Obrigatório no âmbito de AffiliationLoyaltyTier Linhas de código de razão. Esse parâmetro não tem efeito sobre o cálculo de preços, mas é necessário como parte do objeto AffiliationLoyaltyTier .
CustomerId cadeia Obrigatório no âmbito de AffiliationLoyaltyTier O número da conta do cliente.
Cupões Cupom IList<> Opcional Os cupons que não são aplicáveis (inativos, expirados ou não encontrados) não são considerados no cálculo de preços.
Código cadeia Obrigatório no âmbito do Cupão O código do cupom.
CodeId cadeia Opcional O identificador do código do cupão. Se um valor for fornecido, ele deve corresponder ao valor do parâmetro Code .
DiscountOfferId cadeia Opcional O identificador de desconto. Se um valor for fornecido, ele deve corresponder ao valor do parâmetro Code .
Corpo do pedido de amostra
{
    "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"
            }
        ]
    }
}

Todo o objeto do carrinho é retornado como o corpo da resposta. Para verificar preços e descontos, deve concentrar-se nos campos da tabela seguinte.

Nome Subnome Tipo Descrição
Preço Líquido decimal O preço líquido de todo o documento de vendas antes da aplicação de quaisquer descontos.
DiscountAmount decimal O montante total do desconto de todo o documento de vendas.
TotalAmount decimal O montante total de todo o documento de vendas.
CartLines IList<CartLine> Linhas calculadas que incluem detalhes de preço e desconto.
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.
TotalAmount decimal O resultado final do preço total da linha.
PriceLines IList<PriceLine> Detalhes do preço, incluindo a origem do preço (preço base, ajuste de preço ou acordo comercial) e o montante.
Linhas de Desconto IList<DiscountLine> Detalhes do desconto.

GetAvailablePromotions

Existem duas APIs GetAvailablePromotions semelhantes :

  • 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 com várias linhas de carrinho, a API Carts/GetAvailablePromotions devolve todos os descontos aplicáveis para as linhas do carrinho.

O principal caso de uso da API Carts/GetAvailablePromotions é a página do carrinho, onde os varejistas mostram descontos aplicados ou cupons disponíveis para o carrinho atual.

A tabela a seguir lista 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 linhas de carrinho selecionadas.
Corpo da resposta da amostra
{
    "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 da API GetAvailablePromotions é a página "Todos os descontos", onde os varejistas mostram todos os descontos para o canal atual.

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

Nome Subnome Tipo Obrigatório/Opcional Descrição
searchCriteria DescontosPesquisarCritérios Obrigatório
ChannelId longo Obrigatório
Keyword cadeia Opcional
IsDiscountCodeRequired bool Opcional Indica se o código do cupom é obrigatório ou não. Se null for aprovado, todos os descontos serão recuperados, independentemente dos requisitos do código de cupom.
Data de Início DateTimeOffset Obrigatório A data de início (inclusive).
Data de Fim DateTimeOffset Obrigatório A data de fim (inclusive).
Corpo do pedido de amostra
{
    "searchCriteria": {
        "ChannelId": 5637144592,
        "StartDate": "1900-01-01T00:00:00Z",
        "EndDate": "2154-12-31T00:00:00Z"
    }
}
Corpo da resposta da amostra
{
    "@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 AddCoupons suporta a adição de uma lista de cupons a um carrinho. Ele 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 Obrigatório O ID do carrinho.
cupomCodes IEnumerable<string> Obrigatório Os códigos de cupom para adicionar ao carrinho.
isLegacyDiscountCode bool Opcional Defina isto parâmetro como true para indicar que o cupom é um código de desconto legado. O valor padrão é false.

RemoveCoupons

A API RemoveCoupons suporta a remoção de uma lista de cupons de um carrinho. Ele 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 Obrigatório O ID do carrinho.
cupomCodes IEnumerable<string> Obrigatório Os códigos de cupom para 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 produtos e também pode obter uma lista de IDs de desconto de produtos e contexto de preços como entrada e consultar os produtos promocionais associados. O principal caso de uso da API GetProductPromotions está nas páginas de listagem de produtos, onde os varejistas exibem produtos com descontos . Esta API suporta tanto o modelo de preços base de propriedade como o modelo de preços legado.

A tabela a seguir 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 para os preços.
data-ativa DateTimeOffset Opcional A data em que a promoção é considerada.

Restrições e limitações:

  • Só pode obter um máximo de cinco IDs de desconto do produto como entrada.
  • Apenas descontos simples são suportados.
Corpo do pedido de amostra
{
    {
    "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",
    },
}
Corpo da resposta da amostra
{
    "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 para o modelo de preços base de 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>
        },
    ]
}
Corpo do pedido de amostra
"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 foi inferido pelo número da 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 utiliza o Store Commerce).