Sales
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

為替レートプロバイダーの実装

ExchangeRateProvider インターフェイスを実装して、カスタム為替レートプロバイダーを追加できます。

為替レートプロバイダーは、データソースを使用して通貨間の為替計算を実行します。 Liferay Commerce は、すぐに使用できる為替レートプロバイダーを 1 つ提供しています ECBExchangeRateProvider

すぐに使える為替レートプロバイダー

概要

  1. サンプルをデプロイする
  2. サンプルの説明

サンプルをデプロイする

このセクションでは、Liferay Commerce のインスタンスでサンプルの為替レートプロバイダーを起動して実行します。

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

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

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

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

  1. Acme Commerce Exchange Rate Providerをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/commerce/latest/en/developer-guide/sales/liferay-f2y1.zip -O
    
    unzip liferay-f2y1.zip
    
  2. liferay-f2y1に移動します。

    cd liferay-f2y1
    
  3. サンプルをビルドしてデプロイします。

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

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

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

    STARTED com.acme.f2y1.impl_1.0.0
    
  5. サンプルの為替レートプロバイダーが追加されたことを確認します。 ブラウザでhttps://localhost:8080を開きます。 次に、アプリケーション メニュー (Applications Menu) をクリックし、 コマース通貨に移動します。 新しい為替レートプロバイダー (「f2y1」) が 為替レートプロバイダー ドロップダウンの下に表示されます。

Liferay Commerce 2.1 以前では、 コントロール パネルコマース設定通貨為替レートに移動して為替レートを確認します。 新しい為替レートプロバイダー (「f2y1」) は、 為替レートプロバイダー ドロップダウンの下に表示されます。

新しい為替レートプロバイダー

これで、ExchangeRateProviderを実装する新しい為替レートプロバイダーを正常に構築およびデプロイできました。

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

サンプルの説明

このセクションでは、デプロイした例を確認します。 まず、OSGi 登録用のクラスにアノテーションを付けます。 次に、 ExchangeRateProvider インターフェースを確認します。 3 番目に、 ExchangeRateProviderの実装を完了します。

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

@Component(
   property = "commerce.exchange.provider.key=f2y1",
   service = ExchangeRateProvider.class
)
public class F2Y1ExchangeRateProvider implements ExchangeRateProvider {

Liferay Commerce が新しい為替レートプロバイダーを 為替レートプロバイダーレジストリ内の他の為替レートプロバイダーと区別できるように、為替レートプロバイダーに固有のキーを提供することが重要です。 すでに使用されているキーを再利用すると、既存の関連付けられている為替レートプロバイダーが上書きされます。

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

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

@Override
public BigDecimal getExchangeRate(
      CommerceCurrency primaryCommerceCurrency,
      CommerceCurrency secondaryCommerceCurrency)
   throws Exception;

このメソッドは、通貨間の為替レートを計算するために呼び出されます。 レートに選択するデータソースは、Liferay Commerceのインスタンスで使用される可能性のある通貨を処理できる必要があります。

為替レートプロバイダーを完成させる

為替レートプロバイダーは、2つの通貨間の為替レートを計算するロジックで構成されています。 以下を行います。

為替レート計算ロジックを実装する

@Override
public BigDecimal getExchangeRate(
      CommerceCurrency primaryCommerceCurrency,
      CommerceCurrency secondaryCommerceCurrency)
   throws Exception {

   return new BigDecimal(
      _getExchangeRate(secondaryCommerceCurrency) /
         _getExchangeRate(primaryCommerceCurrency));
}

private Double _getExchangeRate(CommerceCurrency commerceCurrency) {
   String code = StringUtil.toUpperCase(commerceCurrency.getCode());

   return _exchangeRates.get(code);
}

private Map<String, Double_exchangeRates = new HashMap<String, Double>() {
   {
      put("AUD", 1.9454);
      put("BRL", 5.15262);
      put("CAD", 1.84981);
      put("CHF", 1.36562);
      put("CLP", 947.813);
      put("CNY", 9.49073);
      put("CZK", 31.0599);
      put("DKK", 9.04642);
      put("EUR", 1.21177);
      put("GBP", 1.09733);
      put("HKD", 10.9628);
      put("HUF", 390.23);
      put("IDR", 19698.8);
      put("ILS", 5.12143);
      put("INR", 98.562);
      put("JPY", 150.862);
      put("KRW", 1567.74);
      put("MXN", 26.7972);
      put("MYR", 5.72459);
      put("NOK", 11.8138);
      put("NZD", 2.05827);
      put("PHP", 73.2097);
      put("PKR", 194.073);
      put("PLN", 5.22207);
      put("RUB", 93.4562);
      put("SEK", 12.4178);
      put("SGD", 1.88797);
      put("THB", 44.6128);
      put("USD", 1.39777);
      put("ZAR", 19.3996);
   }
};

この例では、為替レートのマップを使用しています。 より実用的な使用例については、 ECBExchangeRateProvider、および liferay-f2y1.zip/f2y1-impl/src/main/java/com/acme/f2y1/internal/commerce/currency/utilF2Y1ExchangeRateProvider.java クラスの _getStaticExchangeRates メソッドと _getRateForCode メソッドを参照してください。

2つの通貨に対しCommerceCurrencyオブジェクトを使用して、通貨コードなどの必要な情報を取得します。 CommerceCurrency オブジェクトで使用できるその他のメソッドについては、 CommerceCurrency.java および CommerceCurrencyModel.java を参照してください。

さいごに

  ExchangeRateProviderインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい為替レートプロバイダーを追加しました。