通貨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が起動したら、
-
Currency API Basicsをダウンロードして解凍します。
curl https://resources.learn.liferay.com/commerce/latest/en/product-management/developer-guide/liferay-e6w7.zip -Ounzip liferay-e6w7.zip -
通貨はインスタンスにスコープされ、各通貨は一意の
コードを指定する必要があります。 通貨を作成するには、名前とレートも指定する必要があります。
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にする必要があります。
maxFractionDigits と minFractionDigits の値はデフォルトで 2 になります。 通貨の小数点精度を指定します。
roundingMode の値は、デフォルトで HALF_EVENになります。 これは、 java.math.RoundingMode 列挙型を使用して、通貨の丸め戦略を提供します。 丸めモードには次の値を使用できます: UP、 DOWN、 CEILING、 FLOOR、 HALF_UP、 HALF_DOWN、 HALF_EVEN、および UNNECESSARY。
| 丸めモード | 正の値 | 丸められた値 | 負の値 | 丸められた値 | 説明 |
|---|---|---|---|---|---|
UP | 3.14 | 4 | -3.14 | -4 | 正の数値の場合は正の無限大の方向に丸めます。 負の数の場合、 UP は 0 から離れる方向に丸めます。 |
DOWN | 3.14 | 3 | -3.14 | -3 | 正の数と負の数をゼロに向かって丸めます。 |
CEILING | 3.14 | 4 | -3.14 | -3 | 正の数値の場合は正の無限大の方向に丸めます。 負の数の場合、 CEILING は 0 から方向に丸めます。 |
FLOOR | 3.14 | 3 | -3.14 | -4 | 正の数値の場合はゼロに丸めます。 負の数の場合、 FLOOR は 0 から始まる方向に丸めます。 |
HALF_UP | 3.5 | 4 | -3.5 | -3 | 最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合は、切り上げられます。 |
HALF_DOWN | 3.5 | 3 | -3.5 | -4 | 最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合は、切り捨てられます。 |
HALF_EVEN | 2.5 | 2 | -2.5 | -2 | 最も近い近傍に向かって丸めます。 数値が 2 つの隣接する数値のちょうど中間にある場合、最も近い偶数隣接数値に丸められます。 |
UNNECESSARY | 3.14 | NA | -3.14 | NA | 丸めが発生しないように、 ArithmeticException をスローします。 |
通貨の追加を確認するには、 グローバル メニュー (
) を開き、 コマース → 通貨に移動します。 新しい通貨が登場します。

あるいは、Java クライアントを使用して REST サービスを呼び出します。
-
javajavac -classpath .:* *.java -
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 サービスとスキーマが表示され、各サービスをテストするためのインターフェースがあります。
関連トピック