この記事では、Microsoft Dynamics 365 Commerce の価格エンジンが提供するさまざまな価格 API について説明します。
Dynamics 365 Commerce の価格エンジンには、外部アプリケーションがさまざまな価格シナリオをサポートするために使用できる次の Retail Server API が用意されています。
- GetActivePrices - この API は、簡単な割引を含む製品の算出価格を取得します。
- CalculateSalesDocument - この API は、一緒に購入した場合に、指定された数量の製品の価格と割引を計算します。
- GetAvailablePromotions - この API は、買い物カゴの製品に適用される割引を受け取ります。
- AddCoupons - この API は、カートにクーポンを追加します。
- RemoveCoupons - この API は、カートからクーポンを削除します。
Retail Server API を外部アプリケーションで利用する方法の詳細については、外部アプリケーションで Retail Server API を利用する を参照してください。
GetActivePrices
GetActivePrices API は、Commerce バージョン 10.0.4 のリリースで導入されました。 この API は、簡単な割引を含む製品の算出価格を取得します。 複数行の割引は計算されず、API リクエストの各商品は数量が 1 であると仮定されます。 また、この API は、製品の一覧を入力として受け取り、個々の製品の価格を一括してクエリできます。
GetActivePrices API は、従業員、顧客、匿名、アプリケーション コマースのロールをサポートします。
GetActivePrices API の主なユースケースは、商品詳細ページ (PDP) で、小売業者は有効な割引を含む商品のベスト プライスを示したいと考えます。
Note
GetActivePrices 呼び出しに対して返される商品が少ない場合は、チャネル販売構成の検証 に従って販売構成を検証できます。
次の表に、GetActivePrices API の入力パラメータを示します。
| Name | サブ名前 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|---|
| projectDomain | ProjectionDomain | 必須 | ||
| ChannelId | long | 必須 | ||
| CatalogId | long | 必須 | ||
| productIds | IEnumerable<long型> | 必須 | 価格計算を行う製品のリストです。 | |
| activeDate | DateTimeOffset | 必須 | 価格が計算される日付。 | |
| customerId | 文字列 | オプション | 顧客 取引先企業番号。 | |
| affiliationLoyaltyTiers | IEnumerable<アフィリエーション忠誠階層> | オプション | アフィリエイト層とロイヤリティ層。 | |
| AffiliationId | long | 必須 | 系列 ID。 | |
| LoyaltyTierId | long | オプション | ロイヤルティ層 ID。 | |
| includeSimpleDiscountsInContextualPrice | bool | オプション | 価格決定の算定に単純な割引を含める場合は、このパラメーターを true に設定します。 既定値は false です。 | |
| includeVariantPriceRange | bool | オプション | マスタ 製品のすべてのバリアント間で最小価格および最大価格を取得するには、このパラメータを true に設定します。 既定値は false です。 | |
| includeAttainablePricesAndDiscounts | bool | オプション | 達成可能な価格と割引を取得するには、このパラメータを 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 を使用する
Commerce バージョン 10.0.37 リリースでは、PriceLookupContext クラスが導入されています。 このクラスには、GetActivePrices API のすべての参照条件が含まれています。 productIds、activeDate、customerId、および affiliationLoyaltyTiers の以前のパラメーターが置き換えられます。 このクラスには、割引検索中に割引をフィルター処理するために開発者が使用できる追加のプロパティもあります。
組織のニーズに応じて、GetActivePrices API は、前のパラメーターまたは PriceLookupContext クラスに関連付けられている新しいパラメーターを受け入れることができます。
入力パラメーター
| Name | サブ名前 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|---|
| projectDomain | ProjectionDomain | 必須 | ||
| ChannelId | long | 必須 | ||
| CatalogId | long | 必須 | ||
| priceLookupContext | PriceLookupContext | 必須 | ||
| HeaderContext | PriceLookupHeaderContext | 必須 | CustomerAccountNumber、AffiliationLoyaltyTierLines、SalesOrderProperties を含みます | |
| LineContexts | IEnumerable<PriceLookupLineContext> | 必須 | ProductRecordId、UnitOfMeasureSymbol、InventorySiteId、InventoryLocationId、DeliveryMode、CatalogId、SalesLineProperties を含んでいます。 | |
| includeSimpleDiscountsInContextualPrice | bool | オプション | 価格決定の算定に単純な割引を含める場合は、このパラメーターを true に設定します。 既定値は false です。 | |
| includeVariantPriceRange | bool | オプション | マスタ 製品のすべてのバリアント間で最小価格および最大価格を取得するには、このパラメータを true に設定します。 既定値は false です。 | |
| includeAttainablePricesAndDiscounts | bool | オプション | 達成可能な価格と割引を取得するには、このパラメータを 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 という名前のオブジェクト内の入力パラメーターを示します。
| Name | サブ名前 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|---|
| ID | 文字列 | 必須 | 営業ドキュメントの識別子。 | |
| CartLines | IList<CartLine> | オプション | 価格や割引を計算するラインの一覧です。 | |
| 製品 ID | long | CartLine のスコープで必須 | 製品レコード ID。 | |
| ItemId | 文字列 | オプション | 品目識別子。 値を指定する場合は、ProductId パラメータの値と一致させる必要があります。 | |
| InventoryDimensionId | 文字列 | オプション | 在庫分析コードの識別子です。 値が提供される場合、ItemId と InventoryDimensionId の値の組み合わせは ProductId パラメータの値と一致る必要があります。 | |
| 件数 | 10 進 | 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 | コレクション<ReasonCodeLine> | AffiliationLoyaltyTier のスコープで必須 | 理由コードの行。 このパラメータは価格算定には影響しませんが、AffiliationLoyaltyTier オブジェクトの一部として必要です。 | |
| CustomerId | 文字列 | AffiliationLoyaltyTier のスコープで必須 | 顧客 取引先企業番号。 | |
| クーポン | IList<クーポン> | オプション | 適用されないクーポン (非アクティブ、期限切れ、見つからない場合) は、価格算定の対象にはなりません。 | |
| Code | 文字列 | クーポンのスコープで必須 | クーポン コード。 | |
| 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"
}
]
}
}
カートのオブジェクト全体が応答本文として返されます。 価格と割引を確認するには、次の表のフィールドに注目してください。
| Name | サブ名前 | タイプ | 説明 |
|---|---|---|---|
| NetPrice | 10 進 | 任意の割引適用前の売上ドキュメント全体の正味価格。 | |
| DiscountAmount | 10 進 | 売上ドキュメント全体の割引額の合計。 | |
| TotalAmount | 10 進 | 売上ドキュメント全体の合計金額。 | |
| CartLines | IList<CartLine> | 価格と割引の詳細を含む計算済の明細行。 | |
| 価格 | 10 進 | 製品の単価。 | |
| NetPrice | 10 進 | 任意の割引適用前の明細の正味価格 (= 価格 x 数量)。 | |
| DiscountAmount | 10 進 | 割引金額。 | |
| TotalAmount | 10 進 | 明細行の最終的な価格合計の結果。 | |
| PriceLines | IList<PriceLine> | 価格のソース (基準価格、価格調整、取引契約など)、金額などの価格の詳細。 | |
| DiscountLines | IList<DiscountLine> | 割引の詳細。 |
GetAvailablePromotions
次の 2 つの同様 の GetAvailablePromotions API を使用できます。
- Carts/GetAvailablePromotions は 、カートライン識別子のリストをパラメーターとして受け入れます。
- GetAvailablePromotions は、 DiscountsSearchCriteria オブジェクトをパラメーターとして受け入れます。
Carts/GetAvailablePromotions
複数のカート明細行を持つカートがある場合、Carts/GetAvailablePromotions API はカート明細行に適用されるすべての割引を返します。
Carts/GetAvailablePromotions API の主な使用例はカートページです。小売業者は現在のカートで適用された割引や利用可能なクーポンを表示します。
次のテーブルに、Carts/GetAvailablePromotions API の入力パラメータを示します。
| Name | タイプ | 必須/オプション | 説明 |
|---|---|---|---|
| キー | 文字列 | 必須 | カート 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 の入力パラメータを示します。
| Name | サブ名前 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|---|
| searchCriteria | DiscountsSearchCriteria | 必須 | ||
| ChannelId | long | 必須 | ||
| キーワード | 文字列 | オプション | ||
| IsDiscountCodeRequired | bool | オプション | クーポンコードが必要かどうかを示します。 null が渡された場合、API はクーポン コードの要件に関係なく、すべての割引を取得します。 | |
| 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 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|
| キー | 文字列 | 必須 | カート ID。 |
| couponCodes | IEnumerable<string型> | 必須 | カートに追加するクーポンコード。 |
| isLegacyDiscountCode | bool | オプション | このパラメータを true に設定すると、クーポンがレガシー割引コードであることを示します。 既定値は false です。 |
RemoveCoupons
The RemoveCoupons API は、カートからクーポンのリストを削除することができます。 クーポンを削除した後、カートのオブジェクトを返します。
次の表に、RemoveCoupons API の入力パラメータを示します。
| Name | タイプ | 必須/オプション | 説明 |
|---|---|---|---|
| キー | 文字列 | 必須 | カート ID。 |
| couponCodes | IEnumerable<string型> | 必須 | カートから削除するクーポンコードです。 |
GetProductPromotions
GetProductPromotions API は、Commerce バージョン 10.0.38 のリリースで導入されました。 この API は、特定の製品割引を含むプロモーション製品の一覧を取得します。 また、製品割引 ID と価格コンテキストの一覧を入力として取得し、関連するプロモーション製品にクエリを実行することもできます。 GetProductPromotions API の主な使用例は、小売業者が割引の製品を提示する製品のリスト ページです。 この API は、プロパティベースの価格決定モデルとレガシ価格決定モデルの両方をサポートします。
次の表に、GetProductPromotions API の入力パラメーターを示します。
| Name | サブ名前 | タイプ | 必須/オプション | 説明 |
|---|---|---|---|---|
| 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
GetProductPromotions API と GetActivePrices API のプロパティ ベースの価格モデルには PriceLookupContext クラスを使用します。
次の例は、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": []
}
Note
- API は顧客アカウント番号から顧客グループを推論するため、要求では PriceLookupHeaderContext パラメーターに顧客グループが指定されません。
- ChannelId は PriceLookupHeaderContext パラメーターで指定できます。 指定しない場合、API は要求コンテキスト (Store Commerce を使用する場合は現在のチャネル) から ChannelId を使用します。