Documentation

新しい支払い方法の実装

このチュートリアルでは、 CommercePaymentMethod インターフェイスを実装して、新しい支払い方法を追加する方法を示します。

支払方法とは、顧客が注文に対して支払う様々な方法を表します。 Liferay Commerceは以下のような支払方法を標準で備えています: Authorize.NetMercanet , Money OrderPayPal

すぐに使える支払方法

サンプルをデプロイする

このセクションでは、支払方法をLiferay Commerceのインスタンスで実行する例を示します。

新しいLiferayインスタンスを実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.22-ga22

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

次に、以下の手順を実行します。

  1. Acme Commerce Payment Method をダウンロードして解凍します。

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

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

    注釈

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

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

    STARTED com.acme.b1c3.impl_1.0.0
    
  4. サンプルの支払方法が追加されたことを確認します。 ブラウザでhttps://localhost:8080を開きます。 次にアプリケーションメニュー (Applications Menu) をクリックし、 Commerceチャネル に移動します。その後、 支払い方法 セクションまでスクロールします。

注釈

Liferay Commerce 2.1以前のバージョンでは、サイト管理Commerce設定支払い方法に移動します。

新しい支払方法

これで、CommercePaymentMethodを実装する新しい支払方法を正常に構築およびデプロイできました。

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

例の説明

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

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

@Component(
    property = "commerce.payment.engine.method.key=b1c3",
    service = CommercePaymentMethod.class
)
public class B1C3CommercePaymentMethod implements CommercePaymentMethod {

Liferay Commerceが 支払方法レジストリ で新しい支払方法を他の支払方法と区別できるように、支払方法に個別のキーを提供することが重要です。 すでに使用されているキーを再利用すると、既存の関連付けられている支払方法が上書きされます。

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

次のメソッドを実装します。

    public String getDescription(Locale locale);

これにより、[Payment Methods] 管理ページの「Description」列にデータが入力されます。 言語キーで説明を取得する際のリファレンスについては、B1C3CommercePaymentMethod.javaの実装を参照してください。

    public String getKey();

これにより、支払方法レジストリ内の支払方法に一意の識別子が提供されます。 このキーを使用して、レジストリから支払方法を取得できます。 すでに使用されているキーを再利用すると、既存の関連付けられている支払方法が上書きされます。

    public String getName(Locale locale);

これにより、[支払い方法]管理ページの「Name」列にデータが入力されます。 このメソッドは、getDescriptionメソッドと同様に動作します。

    public int getPaymentType();

これにより、支払エンジンが特定の支払方法をどのように使用するかが識別されます。

COMMERCE _PAYMENT_ METHOD _TYPE_ OFFLINEを使用して、この支払方法にオンライン処理要件がないことを支払エンジンに通知します。 すぐに使用できる支払いタイプ定数は他に2つあります:COMMERCE _PAYMENT_ METHOD _TYPE_ ONLINE _STANDARDCOMMERCE_ PAYMENT _METHOD_ TYPE _ONLINE_ REDIRECTです。

    public String getServletPath();

オンラインの支払方法では、外部の支払いプロバイダーとの適切なインターフェイスを有効にするために、サーブレットが必要になる場合があります。 オフラインの支払方法にはサーブレットパスは必要ないため、getServletPathnullを返します。

支払い方法を完了する

支払方法は、支払いを処理および完了するためのバックエンドロジックと、さらに多くのオプションのカスタム動作で構成されています。 以下を行います。

支払処理ロジックを実装する

@Override
public boolean isProcessPaymentEnabled() {
    return true;
}

このメソッドは、支払いを処理する支払方法に対してtrueを返す必要があります。 これにより、支払方法でサポートされる機能が支払エンジンに通知されます。

@Override
public CommercePaymentResult processPayment(
        CommercePaymentRequest commercePaymentRequest)
    throws Exception {

    return new CommercePaymentResult(
        null, commercePaymentRequest.getCommerceOrderId(),
        CommerceOrderConstants.PAYMENT_STATUS_AUTHORIZED, false, null, null,
        Collections.emptyList(), true);
}

このメソッドにカスタム支払いロジックを実装します。 CommercePaymentResultには、支払いの処理に関連する情報を格納する必要があります。 詳細は、 CommercePaymentResult.java を参照してください。

支払完了ロジックを実装する

@Override
public boolean isCompleteEnabled() {
    return true;
}

これは、支払いを完了する支払方法に対してtrueを返す必要があります。 これにより、支払方法でサポートされる機能が支払エンジンに通知されます。

@Override
public CommercePaymentResult completePayment(
        CommercePaymentRequest commercePaymentRequest)
    throws Exception {

    return new CommercePaymentResult(
        null, commercePaymentRequest.getCommerceOrderId(),
        CommerceOrderConstants.PAYMENT_STATUS_PAID, false, null, null,
        Collections.emptyList(), true);
}

このメソッドにカスタム支払完了ロジックを実装します。 CommercePaymentResultは、支払いプロセスの完了に関連する情報を格納するコンテナです。 詳細は、 CommercePaymentResult.java を参照してください。

オプションのメソッドを実装する

購読、定期的な支払い、払い戻しなど、追加の機能を提供するために実装できる追加のメソッドがあります。 これらは、 CommercePaymentMethod.java で確認できます。 これらのメソッドはペアで提供されます。1つは有効にするメソッドで、もう1つは特定の機能を実装するメソッドです。

これらのメソッドの多くは、オンラインAPIを使用した支払方法にとって重要です。 オンライン支払方法の例については、 PayPalCommercePaymentMethod を参照してください。

この例では、これらのオプションのメソッドをオーバーライドしていません。

言語キーを Language.propertiesに追加します。

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

b1c3-commerce-payment-method=B1C3 Commerce Payment Method
pay-via-b1c3-commerce-payment-method=Pay via B1C3 commerce payment method.

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

まとめ

CommercePaymentMethodインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい支払方法を追加しました。