Commerce 価格 API
この記事では、Microsoft Dynamics 365 Commerce の価格エンジンが提供する様々な価格 API について説明します。
Dynamics 365 Commerce 価格エンジンは、様々な価格設定シナリオをサポートするために、外部アプリケーションから消費可能な以下の Retail Server API を提供します:
- GetActivePrice : このAPIは、簡単な割引を含む製品の計算価格を取得します。
- CalculateSalesDocument : このAPIは、一緒に購入した場合に、特定の数量の製品の価格と割引を計算します。
- GetAvailablePromotions : このAPIは、買い物カゴの製品に適用される割引を受け取ります。
- AddCoupons : このAPIは、カートにクーポンを追加します。
- [Couponsの削除 : このAPIは、カートからクーポンを削除します。
Retail Server API を外部アプリケーションで利用する方法の詳細については、外部アプリケーションで Retail Server API を利用する を参照してください。
GetActivePrices
GetActivePrices API は、Commerce バージョン 10.0.4 のリリースで導入されました。 この API は、簡単な割引を含む製品の算出価格を取得します。 複数行の割引は計算されず、API リクエストの各商品は数量が 1 であると仮定されます。 また、この API は、製品の一覧を入力として受け取り、個々の製品の価格を一括してクエリできます。
GetActivePrices API は、従業員、顧客、匿名、アプリケーション コマースのロールをサポートします。
GetActivePrices API の主なユースケースは、商品詳細ページ (PDP) で、小売業者は有効な割引を含む商品のベスト プライスを示したいと考えます。
ノート
GetActivePrices
呼び出しに対して返される商品が少ない場合は、チャネル販売構成の検証 に従って販売構成を検証できます。
次の表に、GetActivePrices API の入力パラメータを示します。
氏名 | サブ名前 | 型 | 必須/オプション | Description |
---|---|---|---|---|
projectDomain | ProjectionDomain | 必須 | ||
ChannelId | long | 要求済み | ||
CatalogId | long | 要求済み | ||
productIds | IEnumerable<long型> | 要求済み | 価格計算を行う製品のリストです。 | |
activeDate | DateTimeOffset | 必須 | 価格が計算される日付。 | |
customerId | 文字列 | オプション | 顧客 取引先企業番号。 | |
affiliationLoyaltyTiers | IEnumerable<AffiliationLoyaltyTier> | オプション | アフィリエイト層とロイヤリティ層。 | |
AffiliationId | long | 必須 | 系列 ID。 | |
LoyaltyTierId | long | オプション | ロイヤルティ層 ID。 | |
includeSimpleDiscountsInContextualPrice | ブール | オプション | 価格決定の算定に単純な割引を含める場合は、このパラメーターを true に設定します。 既定値は false です。 | |
includeVariantPriceRange | ブール | オプション | マスタ 製品のすべてのバリアント間で最小価格および最大価格を取得するには、このパラメータを true に設定します。 既定値は false です。 | |
includeAttainablePricesAndDiscounts | ブール | オプション | 達成可能な価格と割引を取得するには、このパラメータを true に設定します。 既定値は false です。 |
サンプル要求本文
{
"projectDomain":
{
"ChannelId": 5637144592,
"CatalogId": 0
},
"productIds":
[
68719489871
],
"activeDate": "2022-06-20T14:40:05.873+08:00",
"includeSimpleDiscountsInContextualPrice": true,
"includeVariantPriceRange": false
}
サンプル 応答体
{
"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": [],
}
]
}
PriceLookupContext を使用する
PriceLookupContext クラスは、Commerce バージョン 10.0.37 のリリースで導入されました。 クラスは、GetActivePrices API のすべてのルックアップ基準を含み、productIds、activeDate、customerId、および affiliationLoyaltyTiers 以前のパラメーターを置き換えるクラスです。 このクラスには、開発者が割引のルックアップ時に割引をフィルターするために使用できる追加のプロパティも用意されています。
組織のニーズに応じて、GetActivePrices API は、前のパラメーター、または PriceLookupContext クラスに関連付けられた新しいパラメーターを受け入れることができます。
入力パラメータ
氏名 | サブ名前 | 型 | 必須/オプション | Description |
---|---|---|---|---|
projectDomain | ProjectionDomain | 必須 | ||
ChannelId | long | 必須 | ||
CatalogId | long | 必須 | ||
priceLookupContext | PriceLookupContext | 必須 | ||
HeaderContext | PriceLookupHeaderContext | 必須 | CustomerAccountNumber、AffiliationLoyaltyPropLines および SalesOrderProperties を含みます | |
LineContexts | IEnumerable<PriceLookupLineContext> | 必須 | ProductRecordId、UnitOfMeasureSymbol、InventorySiteId、InventoryLocationId、DeliveryMode、CatalogId および SalesLineProperties を含みます | |
includeSimpleDiscountsInContextualPrice | ブール | オプション | 価格決定の算定に単純な割引を含める場合は、このパラメーターを true に設定します。 既定値は false です。 | |
includeVariantPriceRange | ブール | オプション | マスタ 製品のすべてのバリアント間で最小価格および最大価格を取得するには、このパラメータを true に設定します。 既定値は false です。 | |
includeAttainablePricesAndDiscounts | ブール | オプション | 達成可能な価格と割引を取得するには、このパラメータを true に設定します。 既定値は false です。 |
詳細については、PriceLookupContextを参照してください。
CalculateSalesDocument
CalculateSalesDocument API は、Commerce バージョン 10.0.25 のリリースで導入されました。 この API は、注文で一緒に購入した場合に、指定された数量の製品の価格と割引計算します。 CalculateSalesDocument API の後の価格決定の算定では、単一行割引と複数行割引の両方が考慮されます。
CalculateSalesDocument API の主な使用例は、完全なカート コンテキストが維持されないシナリオ (販売見積など) での価格決定の算定です。 この場合、POS や Commerce e コマースのシナリオにも役立ちます。 カート内の品目がセットで計算される場合 (ばらばらのバンドル、リンク商品、おすすめ商品、既にカートに入れてある商品など)、合計金額が安くなれば、顧客は製品をカートに追加できる可能性があります。
CalculateSalesDocument API のリクエスト、レスポンスともにデータ モデルは Cart です。 ただし、この API のコンテキストでは、データ モデルは SalesDocument となっています。 プロパティのほとんどはオプションであり、価格算定に影響を与えるものはごくわずかであるため、以下の表では価格に関連するフィールドのみが表示されます。 他のフィールドを API リクエストに関連させることは推奨しません。
CalculateSalesDocument API のスコープは、価格と割引の算定のみです。 税金や費用は含まれません。
次の表に、salesDocument という名前のオブジェクト内の入力パラメーターを示します。
氏名 | サブ名前 | 型 | 必須/オプション | Description |
---|---|---|---|---|
ID | 文字列 | 必須 | 営業ドキュメントの識別子。 | |
CartLines | IList<CartLine> | オプション | 価格や割引を計算するラインの一覧です。 | |
製品 ID | long | CartLine のスコープで必須 | 製品レコード ID。 | |
ItemId | 文字列 | オプション | 品目識別子。 値を指定する場合は、ProductId パラメータの値と一致させる必要があります。 | |
InventoryDimensionId | 文字列 | オプション | 在庫分析コードの識別子です。 値が提供される場合、ItemId と InventoryDimensionId の値の組み合わせは ProductId パラメータの値と一致る必要があります。 | |
Quantity | decimal | CartLine のスコープで必須 | 製品の数量。 | |
UnitOfMeasureSymbol | 文字列 | オプション | 製品の単位。 既定では、値が提供されない場合、API は商品の販売単位を使用します。 | |
CustomerId | 文字列 | オプション | 顧客 取引先企業番号。 | |
LoyaltyCardId | 文字列 | オプション | このロイヤルティ カードの識別子です。 ロイヤルティ カードに関連する顧客アカウントは、CustomerId パラメーターの値 (指定されている場合) と一致する必要があります。 ロイヤルティ カードは、ロイヤルティ カードが見つからないか、ステータスが ブロック の場合は考慮されません。 | |
AffiliationLines | IList<AffiliationLoyaltyTier> | オプション | アフィリエイト ロイヤリティの階層ライン。 CustomerId 値および/または LoyaltyCardId 値が指定された場合、対応する所属ロイヤリティ層の行は、AffiliationLines 値で指定された行にマージされます。 | |
AffiliationId | long | AffiliationLoyaltyTier のスコープで必須 | アフィリエイト レコード ID。 | |
LoyaltyTierId | long | AffiliationLoyaltyTier のスコープで必須 | ロイヤルティ層レコード ID。 | |
AffiliationTypeValue | int | AffiliationLoyaltyTier のスコープで必須 | アフィリエイト行が全般タイプ (0) かロイヤルティタイプ (1) かを示す値。 パラメーターが 0 に設定されている場合、API は AffiliationId の値を識別子として受け取り、LoyaltyTierId 値を無視します。 パラメーターが 1 に設定されている場合、API は LoyaltyTierId の値を識別子として受け取り、AffiliationId 値を無視します。 | |
ReasonCodeLines | Collection<ReasonCodeLine> | AffiliationLoyaltyTier のスコープで必須 | 理由コードの行。 このパラメータは価格算定には影響しませんが、AffiliationLoyaltyTier オブジェクトの一部として必要です。 | |
CustomerId | 文字列 | AffiliationLoyaltyTier のスコープで必須 | 顧客 取引先企業番号。 | |
クーポン | IList<Coupon> | オプション | 適用されないクーポン (非アクティブ、期限切れ、見つからない場合) は、価格算定の対象にはなりません。 | |
コード | 文字列 | クーポンのスコープで必須 | クーポン コード。 | |
CodeId | 文字列 | オプション | クーポン コードの識別子。 値を指定する場合は、Code パラメータの値と一致させる必要があります。 | |
DiscountOfferId | 文字列 | オプション | 割引識別子。 値を指定する場合は、Code パラメータの値と一致させる必要があります。 |
サンプル要求本文
{
"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"
}
]
}
}
カートのオブジェクト全体が応答本文として返されます。 価格や割引を確認するには、次のテーブルのフィールドに注目する必要があります。
氏名 | サブ名前 | 型 | Description |
---|---|---|---|
NetPrice | decimal | 任意の割引適用前の売上ドキュメント全体の正味価格。 | |
DiscountAmount | decimal | 売上ドキュメント全体の割引額の合計。 | |
TotalAmount | decimal | 売上ドキュメント全体の合計金額。 | |
CartLines | IList<CartLine> | 価格と割引の詳細を含む計算済の明細行。 | |
価格 | decimal | 製品の単価。 | |
NetPrice | decimal | 任意の割引適用前の明細の正味価格 (= 価格 x 数量)。 | |
DiscountAmount | decimal | 割引金額。 | |
TotalAmount | decimal | 明細行の最終的な価格合計の結果。 | |
PriceLines | IList<PriceLine> | 価格のソース (基準価格、価格調整、取引契約など)、金額などの価格の詳細。 | |
DiscountLines | IList<DiscountLine> | 割引の詳細。 |
GetAvailablePromotions
GetAvailablePromotions API には次の 2 つがあります。
- Carts/GetAvailablePromotions カートの行IDのリストをパラメーターとして受け入れる場合に使用します。
- GetAvailablePromotions accepts a DiscountsSearchCriteria パラメータとして設定されます。
Carts/GetAvailablePromotions
複数のカート明細行を持つカートがある場合、Carts/GetAvailablePromotions API はカート明細行に適用されるすべての割引を返します。
Carts/GetAvailablePromotions API の主な使用例はカートページです。小売業者は現在のカートで適用された割引や利用可能なクーポンを表示します。
次のテーブルに、Carts/GetAvailablePromotions API の入力パラメータを示します。
名前 | 型 | 必須/オプション | Description |
---|---|---|---|
キー | 文字列 | 要求済み | カート ID。 |
cartLineIds | IEnumerable<string型> | オプション | このパラメータは、選択されたカート行の割引のみを返すように設定します。 |
サンプル 応答体
{
"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
GetAvailablePromotions API は、指定されたチャンネルに対して適用される割引を返します。
GetAvailablePromotions API の主な使用例は "すべての割引" です。小売業者は現在のチャンネルに対するすべての割引を示します。
次のテーブルに、GetAvailablePromotions API の入力パラメータを示します。
氏名 | サブ名前 | 型 | 必須/オプション | Description |
---|---|---|---|---|
searchCriteria | DiscountsSearchCriteria | 必須 | ||
ChannelId | long | 必須 | ||
キーワード | 文字列 | オプション | ||
IsDiscountCodeRequired | ブール | オプション | クーポンコードが必要かどうかを示します。 NULL を渡した場合、クーポン コードの要件に関係なく、すべての割引が取得されます。 | |
StartDate | DateTimeOffset | 必須 | 開始日 (含む)。 | |
EndDate | DateTimeOffset | 必須 | 終了日 (含む)。 |
サンプル要求本文
{
"searchCriteria": {
"ChannelId": 5637144592,
"StartDate": "1900-01-01T00:00:00Z",
"EndDate": "2154-12-31T00:00:00Z"
}
}
サンプル 応答体
{
"@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
AddCouponsAPI では、カートにクーポンの一覧を追加できます。 クーポンを追加した後、カートのオブジェクトを返します。
次の表に、AddCoupons API の入力パラメータを示します。
Name | 種類 | 必須/任意 | Description |
---|---|---|---|
キー | 文字列 | 要求済み | カート ID。 |
couponCodes | IEnumerable<string型> | 要求済み | カートに追加するクーポンコード。 |
isLegacyDiscountCode | ブール | オプション | このパラメータを true に設定すると、クーポンがレガシー割引コードであることを示します。 既定値は false です。 |
RemoveCoupons
The RemoveCoupons API は、カートからクーポンのリストを削除することができます。 クーポンを削除した後、カートのオブジェクトを返します。
次の表に、RemoveCoupons API の入力パラメータを示します。
Name | 種類 | 必須/任意 | Description |
---|---|---|---|
キー | 文字列 | 要求済み | カート ID。 |
couponCodes | IEnumerable<string型> | 必須 | カートから削除するクーポンコードです。 |
GetProductPromotions
GetProductPromotions API は、Commerce バージョン 10.0.38 のリリースで導入されました。 この API は、特定の製品割引を適用したプロモーション製品の一覧を取得し、関連するプロモーション製品の入力およびクエリとして製品割引 ID および価格決定コンテキストの一覧を取得することもできます。 GetProductPromotions API の主な使用例は、小売業者が割引の製品を提示する製品のリスト ページです。 この API は、プロパティベースの価格決定モデルとレガシ価格決定モデルの両方をサポートします。
次の表に、GetProductPromotions API の入力パラメーターを示します。
氏名 | サブ名前 | 型 | 必須/オプション | Description |
---|---|---|---|---|
productDiscountIds | IEnumerable<string型> | 必須 | プロモーション製品を探す製品割引 ID のリスト。 | |
priceLookupContext | PriceLookupContext | 必須 | 価格決定のコンテキスト。 | |
activeDate | DateTimeOffset | オプション | 販売促進が考慮される日付。 |
規制と制限:
- 最大で 5 つの製品割引 ID のみを入力として使用できます。
- 簡易割引のみがサポートされます。
サンプル要求本文
{
{
"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",
},
}
サンプル 応答体
{
"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
}
]
}
]
}
詳細については、PriceLookupContextを参照してください。
PriceLookupContext
PriceLookupProduct クラスは、GetProductPromotions および GetActivePrices API のプロパティベースの価格決定モデルに使用されます。
次の例では、PriceLookupContext クラスの構造を示します。
{
HeaderContext: PriceLookupHeaderContext
{
CustomerAccountNumber: string
AffiliationLoyaltyTierLines: IEnumerable<AffiliationLoyaltyTier>
ChannelId: long?
SalesOrderProperties: IEnumerable<AttributeValueBase>
},
LineContexts: IEnumerable<PriceLookupLineContext>
[
{
ProductRecordId: string
UnitOfMeasureSymbol: string
InventorySiteId: string
InventoryLocationId: string
DeliveryMode: string
CatalogId: string
SalesLineProperties: IEnumerable<AttributeValueBase>
},
]
}
サンプル要求本文
"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": []
}
注記
- PriceLookupHeaderContext パラメーターで指定された顧客グループはありません。顧客アカウント番号によって推測されたためです。
- ChannelId は PriceLookupHeaderContext パラメーターで指定できます。 指定されていない場合、要求コンテキスト (Store Commerce を使用する場合の現在のチャンネル) の ChannelId が使用されます。