Documentation

カスタム清算ステップの実装

このチュートリアルでは、 CommerceCheckoutStep インターフェースを実装して、カスタム清算ステップを追加する方法を紹介します。

清算ステップは、顧客の清算プロセスの1つの画面を表します。 Liferay Commerceには、 支払方法ステップ注文確認ステップ などの基本的なステップを含む、いくつかの清算ステップが標準で組み込まれています。

すぐに使える清算ステップ

サンプルをデプロイする

このセクションでは、清算ステップをLiferay Commerceのインスタンスで実行する例を示します。 次の手順を実行します:

  1. Liferay Commerceを開始します。

    docker run -it -p 8080:8080 liferay/portal:7.4.3.22-ga22
    
  2. Acme Commerce Checkout Step をダウンロードして解凍します。

    curl https://learn.liferay.com/commerce/latest/en/developer-guide/sales/liferay-n8n6.zip -O
    
    unzip liferay-n8n6.zip
    
  3. サンプルをビルドしてデプロイします。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    注釈

    このコマンドは、デプロイされたjarをDockerコンテナの /opt/liferay/osgi/modulesにコピーするのと同じです。

  4. Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.n8n6.web_1.0.0
    
  5. サンプルの清算ステップが追加されたことを確認します。 ブラウザーで https://localhost:8080 を開き、Liferay Commerceサイトのカタログに移動します。 カートにアイテムを追加し、カートを表示して、「チェックアウト」をクリックします。 新しい「N8N6 Commerce Checkout Step」が清算ステップのリストに表示されます。

新しい清算ステップ

これで、CommerceCheckoutStepを実装する新しい清算ステップのビルドとデプロイが完了しました。

次に、詳細をさらに詳しく見ていきましょう。

例の説明

このセクションでは、デプロイした例について確認します。 最初に、OSGi登録用のクラスに注釈を付けます。 次に、 CommerceCheckoutStepインターフェイスを確認します。 最後に、CommerceCheckoutStepの実装を完了します。

注釈

CommerceCheckoutStepの実装を簡略化するために、基本機能の BaseCommerceCheckoutStepを拡張します。

OSGi登録用のクラスに注釈を付ける

@Component(
    property = {
    "commerce.checkout.step.name=n8n6",
    "commerce.checkout.step.order:Integer=21"
    },
    service = CommerceCheckoutStep.class
)
public class N8N6CommerceCheckoutStep extends BaseCommerceCheckoutStep {

Liferay Commerceがこの清算ステップを既存の清算ステップと区別できるように、清算ステップ名は一意の値である必要があります。

commerce.checkout.step.order 値は、清算プロセスでこの清算ステップが表示される範囲を示します。 たとえば、 配送方法清算ステップ の値は20です。 この清算ステップに値21を指定すると、配送方法のステップの直後に表示されます。

CommerceCheckoutStep インターフェイスを確認する

基本クラスを拡張することに加えて、次のメソッドを実装します。

public String getName();

このメソッドは、清算ステップの名前を返します。 この名前は、UIに表示される名前に対応する 言語キー である可能性があります。

public void processAction(
        ActionRequest actionRequest, ActionResponse actionResponse)
    throws Exception;

バックエンド処理が必要な場合は、 processAction メソッドを使用して、 ActionRequest 介して渡された情報でビジネスロジックを実装できます。

public void render(
        HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse)
    throws Exception;

ここで、清算ステップに合わせてカスタマイズされた画面をレンダリングするためのコードを追加します。

清算ステップを完了する

清算ステップは、カスタム画面と入力を処理するバックエンドロジックで構成されます。 以下を行います。

モジュールにServletContextを構成する

バンドルのシンボル名を使用して ServletContext を定義し、モジュールでJSPを見つけられるようにします。

@Reference(target = "(osgi.web.symbolicname=com.acme.n8n6.web)")
private ServletContext _servletContext;

osgi.web.symbolicnameに設定した値は、bnd.bndファイルBundle-SymbolicNameの値と一致します。 これらの値は、JSPを見つけるためにServletContextと一致する必要があります。

また、 ServletContext が正しく生成されるように、bnd.bndファイルで Web-ContextPath 一意の値を宣言する必要があります。 この例では、 Web-ContextPath/ n8n6-web設定されています。 これらの値のリファレンスについては、bnd.bndを参照してください。

renderメソッドを実装する

@Override
public void render(
        HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse)
    throws Exception {

    _jspRenderer.renderJSP(
        _servletContext, httpServletRequest, httpServletResponse,
        "/terms_and_conditions.jsp");
}

@Reference
private JSPRenderer _jspRenderer;

@Reference(target = "(osgi.web.symbolicname=com.acme.n8n6.web)")
private ServletContext _servletContext;

JSPRendererを使用して、チェックアウトステップのJSPをレンダリングします(この場合は、 terms_and_conditions.jsp)。 作成したJSPを見つけるためのパラメーターとしてServletContextを提供します。

ビジネスロジックをprocessActionに追加する 。

今回の例では、カスタム画面にテキストを表示し、 processAction の実装ではバックエンド処理を必要としません。

JSPを追加して、カスタム画面をレンダリングする

この例では、プレースホルダーテキストを追加しています。 terms_and_conditions.jspで実装を確認できます。

言語キーをLanguage.propertiesに追加する

モジュール内のLanguage.propertiesファイルに言語キーとその値を追加します。

n8n6-commerce-checkout-step=N8N6 Commerce Checkout Step

詳細は、 アプリケーションのローカライズ を参照してください。

まとめ

これで、 CommerceCheckoutStepインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい清算ステップを追加しました。