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

通貨APIの基礎

Liferay DXP 2024.Q1+/ポータル GA112+

アプリケーション メニューまたは REST API を使用して、 通貨 を管理できます。 通貨を作成および管理するには、 headless-commerce-admin-catalog サービスを呼び出します。

重要

通貨 API は、Liferay DXP 2024.Q1/Portal GA112 の リリース機能フラグ の背後でリリースされました。 2024.Q2/Portal GA120 に一般公開 (GA) されました。

通貨の追加

新しい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に変更します。

Liferayが起動したら、

  1. Currency API Basicsをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/commerce/latest/en/product-management/developer-guide/liferay-e6w7.zip -O
    
    unzip liferay-e6w7.zip
    
  2. 通貨はインスタンスにスコープされ、各通貨は一意の コードを指定する必要があります。 通貨を作成するには、 名前レート も指定する必要があります。

cURL スクリプトを使用して新しい通貨を追加します。 コマンドラインで、curlフォルダに移動します。 Currencies_POST_ToInstance.sh スクリプトを実行します。

./Currencies_POST_ToInstance.sh

JSON 応答には、新しい通貨が追加されたことが示されています。

{
   "active": false,
   "code": "AED",
   "externalReferenceCode": "AED",
   "formatPattern": {
      "en_US": "###,##0.00"
   },
   "id": 37006,
   "maxFractionDigits": 2,
   "minFractionDigits": 2,
   "name": {
      "en_US": "UAE Dirham"
   },
   "primary": false,
   "priority": 0,
   "rate": 3.67,
   "roundingMode": "HALF_EVEN",
   "symbol": ""
}

externalReferenceCode は、Liferay DXP 2025.Q1/Portal GA132 で追加されました。 カタログ、チャネル、支払いエントリとリンクするために使用できます。 注文と価格表は、 IDを使用して通貨にリンクされていましたが、現在は コードを使用します。

レート フィールドでは、主要通貨に対する変換レートを指定します。 たとえば、主要通貨が米ドル (USD) で、UAE ディルハム (AED) を作成する場合、レートによって 1 ドルを構成するディルハムの数が決定されます。 通貨を主要通貨として設定する場合、レートは 1.00にする必要があります。

maxFractionDigitsminFractionDigits の値はデフォルトで 2 になります。 通貨の小数点精度を指定します。

roundingMode の値は、デフォルトで HALF_EVENになります。 これは、 java.math.RoundingMode 列挙型を使用して、通貨の丸め戦略を提供します。 丸めモードには次の値を使用できます: UPDOWNCEILINGFLOORHALF_UPHALF_DOWNHALF_EVEN、および UNNECESSARY

丸めモード正の値丸められた値負の値丸められた値説明
UP3.144-3.14-4正の数値の場合は正の無限大の方向に丸めます。 負の数の場合、 UP は 0 から離れる方向に丸めます。
DOWN3.143-3.14-3正の数と負の数をゼロに向かって丸めます。
CEILING3.144-3.14-3正の数値の場合は正の無限大の方向に丸めます。 負の数の場合、 CEILING は 0 から方向に丸めます。
FLOOR3.143-3.14-4正の数値の場合はゼロに丸めます。 負の数の場合、 FLOOR は 0 から始まる方向に丸めます。
HALF_UP3.54-3.5-3最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合は、切り上げられます。
HALF_DOWN3.53-3.5-4最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合は、切り捨てられます。
HALF_EVEN2.52-2.5-2最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合、最も近い偶数隣接数値に丸められます。
UNNECESSARY3.14NA-3.14NA丸めが発生しないように、 ArithmeticException をスローします。

通貨の追加を確認するには、 グローバル メニュー (Applications Menu icon) を開き、 コマース通貨に移動します。 新しい通貨が登場します。

新しい通貨が追加されたことを確認します。

あるいは、Java クライアントを使用して REST サービスを呼び出します。

  1. java

    javac -classpath .:* *.java
    
  2. Currencies_POST_ToInstance クラスを実行します。

    java -classpath .:* Currencies_POST_ToInstance
    

cURLコマンドの検証

Currencies_POST_ToInstance.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。

curl \
	"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies" \
	--data-raw '
		{
			"code": "AED",
			"name": {
				"en_US": "UAE Dirham"
			},
		   "rate": 3.67
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

ここでは、コマンドの引数を紹介します。

引数説明
"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies"RESTサービスのエンドポイントを指定します。
--data-raw "{ "code": "AED", "name": { "en_US": "UAE Dirham" }, "rate": 3.67 }"投稿するデータを入力します。
--header "Content-Type: application/json"リクエストボディの形式をJSONに設定します。
--request POST指定されたエンドポイントで呼び出す HTTP メソッドを設定します。
--user "test@liferay.com:learn"基本認証の認証情報を入力します。

ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2経由でユーザーを認証する必要があります。 OAuth2 を使用したサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。

他のcURLコマンドも同様のJSON引数を使用しています。

Javaクラスを調べる

Currencies_POST_ToInstance.java クラスは、 CurrencyResource サービスを呼び出して通貨を追加します。

public static void main(String[] args) throws Exception {
	CurrencyResource.Builder builder = CurrencyResource.builder();

	CurrencyResource currencyResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		currencyResource.postCurrency(
			new Currency() {
				{
					code = "AED";
					name = new HashMap<String, String>() {
						{
							put("en_US", "UAE Dirham");
						}
					};
					rate = new BigDecimal(3.67);
				}
			}));
}

このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。

行(省略形)説明
CurrencyResource.Builder builder = ...Builder を取得して、 CurrencyResource サービス インスタンスを生成します。
CurrencyResource currencyResource = builder.authentication(...).build();基本認証を使用して、 CurrencyResource サービス インスタンスを生成します。
currencyResource.postCurrency(...);currencyResource.postCurrency メソッドを呼び出して、データを post に渡します。

このプロジェクトには、依存関係としてcom.liferay.headless.commerce.admin.catalog.client.jar ファイルが含まれています。 すべての REST アプリケーションのクライアント JAR 依存関係情報は、インストールの API エクスプローラーの /o/api (例: http://localhost:8080/o/api) で確認できます。

メイン メソッドのコメントは、クラスの実行を示しています。

残りのサンプル Java クラスは、異なる CurrencyResource メソッドを呼び出します。

重要

サービスの詳細については、 CurrencyResource を参照してください。

以下は、cURL と Java を使用して他の Currency REST サービスを呼び出す例です。

インスタンスから通貨を取得する

cURL または Java コマンドを使用して、Liferay インスタンス内のすべての通貨を一覧表示します。

Currencies_GET_FromInstance.sh

コマンド:

./Currencies_GET_FromInstance.sh

コード:

curl \
	"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies" \
	--user "test@liferay.com:learn"

Currencies_GET_FromInstance.java

コマンド:

java -classpath .:* Currencies_GET_FromInstance

コード:

public static void main(String[] args) throws Exception {
	CurrencyResource.Builder builder = CurrencyResource.builder();

	CurrencyResource currencyResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		currencyResource.getCurrenciesPage(
			null, null, Pagination.of(1, 2), null));
}

インスタンスの Currency オブジェクトは JSON 形式でフォーマットされます。

通貨のフィルタリング、ページ付け、検索、並べ替え

この API は、通貨のフィルタリング、ページ区切り、検索、並べ替えを行うパラメータも受け入れます。 詳細については、 getCurrenciesPage メソッドを参照してください。 クエリで次の 通貨 フィールドを使用して、結果をフィルタリングおよび検索できます。

  • active
  • メインにする
  • コード
  • name
フィルタークエリ説明
name eq 'UAE Dirham'通貨名は UAE ディルハムと一致する必要があります。
code eq 'AED'通貨コードは AED である必要があります。
active eq false通貨はアクティブではありません

クエリで name フィールドを使用して結果を並べ替えることができます。

ソートクエリ説明
name:desc通貨名で降順に並べ替えます。

詳細については、 API クエリ パラメータ を参照してください。

通貨を取得する

cURL または Java get コマンドを使用して特定の通貨を取得します。 1234 を通貨のIDに置き換えます。

ヒント

Currencies_GET_ById.[java|sh] を使用してすべての通貨のリストを取得し、必要な通貨の id をメモします。

Currencies_GET_ById.sh

コマンド:

./Currencies_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies/${1}" \
	--user "test@liferay.com:learn"

Currencies_GET_ById.java

コマンド:

java -classpath .:* -DcurrencyId=1234 Currencies_GET_ById

コード:

public static void main(String[] args) throws Exception {
	CurrencyResource.Builder builder = CurrencyResource.builder();

	CurrencyResource currencyResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		currencyResource.getCurrency(
			Long.valueOf(System.getProperty("currencyId"))));
}

通貨 フィールドは JSON でリストされます。

通貨をパッチする

cURL と Java patch コマンドを使用して既存の通貨を更新します。 1234 を通貨のIDに置き換えます。

通貨_PATCH_ById.sh

コマンド:

./Currencies_PATCH_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies/${1}" \
	--data-raw '
		{
			"name": {
				"en_US": "United Arab Emirates Dirham"
			}
		}' \
	--header "Content-Type: application/json" \
	--request "PATCH" \
	--user "test@liferay.com:learn"

Currencies_PATCH_ById.java

コマンド:

java -classpath .:* -DcurrencyId=1234 Currencies_PATCH_ById

コード:

public static void main(String[] args) throws Exception {
	CurrencyResource.Builder builder = CurrencyResource.builder();

	CurrencyResource currencyResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	currencyResource.patchCurrency(
		Long.valueOf(System.getProperty("currencyId")),
		new Currency() {
			{
				name = new HashMap<String, String>() {
					{
						put("en_US", "United Arab Emirates Dirham");
					}
				};
			}
		});
}

通貨を削除する

cURL と Java delete コマンドを使用して既存の通貨を削除します。 1234 を通貨のIDに置き換えます。

通貨_DELETE_ById.sh

コマンド:

./Currencies_DELETE_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-commerce-admin-catalog/v1.0/currencies/${1}" \
	--request "DELETE" \
	--user "test@liferay.com:learn"

Currencies_DELETE_ById.java

コマンド

java -classpath .:* -DcurrencyId=1234 Currencies_DELETE_ById

コード:

public static void main(String[] args) throws Exception {
	CurrencyResource.Builder builder = CurrencyResource.builder();

	CurrencyResource currencyResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	currencyResource.deleteCurrency(
		Long.valueOf(System.getProperty("currencyId")));
}

API エクスプローラー には、 Currency サービスとスキーマが表示され、各サービスをテストするためのインターフェースがあります。