Documentation

カスタムチェックアウトステップの実装

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

チェックアウトステップは、お客様のチェックアウトプロセスを1つの画面で示します。 Liferay Commerceは、 支払方法ステップ注文確認ステップ などの重要なステップを含むいくつかのチェックアウトステップをすぐに利用できるように提供しています。

すぐに使えるチェックアウトステップ

サンプルをデプロイする

このセクションでは、チェックアウトステップをLiferay Commerceのインスタンスで実行する例を示します。

新しいLiferay インスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.29-ga29。

http://localhost:8080でLiferayへのサインインします。 メールアドレス test@liferay.com とパスワード test を使用してください。 プロンプトが表示されたら、パスワードを learn に変更します。

次に、以下の手順に従います。

  1. Acme Commerce Checkout Step をダウンロードし、解凍してください。

    curl https://learn.liferay.com/commerce/latest/ja/developer-guide/sales/liferay-n8n6.zip -O
    
    liferay-n8n6.zipを解凍してください。
    
  2. サンプルをビルドしてデプロイします。

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

    注釈

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

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

    STARTED com.acme.n8n6.web_1.0.0
    
  4. サンプルのチェックアウトステップが追加されたことを確認します。 ブラウザーで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に新しいチェックアウトステップを追加しました。