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