カートの行を延長する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore XCは、compositional extensibilityパターンを使用して既存のソリューションを簡単に拡張できます。構成の拡張性により、アップグレードを妨げない方法でソリューションを拡張し、同じCommerceエンティティを拡張しようとする複数のプラグイン間で懸念事項を分離できます。

シナリオ: 獲得したロイヤルティ ポイントをカート明細行に追加して、注文に持ち込むことができるようにします。

品目を注文の一部にする最も簡単な方法は、AddCartLineパイプライン中にSellableItemからカート明細行にコンポーネントをコピーすることです。

カートのラインを延長するには:

  1. 前に参照したのと同じNodeConfigurationファイルを開き、AddCartLineパイプラインを見つけます。

    -----------------------------------------------------------------
    Sitecore.Commerce.Plugin.Carts
    IAddCartLinePipeline (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.Catalog.ValidateSellableItemBlock (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.CartLineArgument)
    ------------------------------------------------------------
    Plugin.Carts.AddCartLineBlock (Sitecore.Commerce.Plugin.Carts.CartLineArgument => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.Carts.ICalculateCartLinesPipeline (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.Carts.ICalculateCartPipeline (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.GiftCards.AddCartLineGiftCardBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.Carts.PersistCartBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)
    ------------------------------------------------------------
    Plugin.Carts.WriteCartTotalsToContextBlock (Sitecore.Commerce.Plugin.Carts.Cart => Sitecore.Commerce.Plugin.Carts.Cart)
    -----------------------------------------------------------------
  2. Cartをパラメータとして受け取り、Cartを返し、AddCartLineBlockの後に実行する別のコンポーネントを作成します。

  3. Cartsプラグインからエンティティにアクセスするには、そのエンティティへの参照を追加します。例えば:

    /// <summary>
            /// The execute.
            /// </summary>
            /// <param name="arg">
            /// The SampleArgument argument.
            /// </param>
            /// <param name="context">
            /// The context.
            /// </param>
            /// <returns>
            /// The <see cref="SampleEntity"/>.
            /// </returns>
            public override Task<Cart> Run(Cart cart, CommercePipelineExecutionContext context)
            {
                Condition.Requires(cart).IsNotNull("The argument can not be null");
                //var result = this._pipeline.Run(arg, context).Result;
                return Task.FromResult(cart);
            }
  4. 次の設定を追加します。

    .ConfigurePipeline<IAddCartLinePipeline>(
                        configure =>
                        {
                            configure.Add<AddCartLineLoyaltyBlock>().After<AddCartLineBlock>();
                        })
  5. 前のシナリオと同様に、ロジックなしでブロックを実行し、必要なオブジェクトがオブジェクト コレクション内にあるかどうかを確認できるようにブレークポイントを追加する必要があります。このピースをテストするには、カートにSellableItemを追加します。Postmanで、CartsAPISamples/Add Cart Line Without Variantに移動して実行します。これにより、カートにアイテムが追加されます。

  6. オブジェクト コレクションを見ると、SellableItemが表示され、CartLineArgumentを取得してLineプロパティを使用して追加された行にアクセスできます。 SellableItemからカートラインにコンポーネントをコピーします。例えば:

    public override Task<Cart> Run(Cart cart, CommercePipelineExecutionContext context)
            {
                Condition.Requires(cart).IsNotNull("The argument can not be null");
                var sellableItem = context.CommerceContext.GetObjects<SellableItem>().First();
                var arg = context.CommerceContext.GetObjects<CartLineArgument>().First();
                var cartLine = arg.Line;
                cartLine.SetComponent(sellableItem.GetComponent<LoyaltyComponent>());
                return Task.FromResult(cart);

    今後は、アイテムがカートに追加されるたびに、アイテムのロイヤルティポイントがカートに追加されます。これは、Commerce Connectコンポーネントを使用してストアフロントにマップして表示できます。

    ソリューションを実行し、アイテムをカートに追加して、Postmanを使用して確認できます。品目はカート明細行のコンポーネントになったため、注文が行われると、カート明細行の他のすべてのコンポーネントと共に注文明細行に自動的にコピーされます。

  7. この例では、Postmanで注文を完了します。

  8. 現物フルフィルメントオプション、フェデレーション支払いオプションを追加して注文を完了し、完了した注文結果からOrderIDをコピーします。

  9. PostmanでGetOrderに移動し、OrderIDを貼り付けて、注文を取得します。完了した順番でLoyaltyComponentを見ることができます。

この記事を改善するための提案がある場合は、 お知らせください!