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

注文APIの基本

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

注文を追加する

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

docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts

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

Liferayが起動したら、

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

    curl https://resources.learn.liferay.com/commerce/latest/en/order-management/developer-guide/liferay-w6c8.zip -O
    
    unzip liferay-w6c8.zip
    
  2. 注文を作成するには、アカウント ID、チャネル ID、および使用する通貨の ISO 4217 通貨コード (例: USD) の 3 つのパラメータが必要です。

    アカウント ID を取得するには、 グローバル メニュー (Applications Menu icon) を開き、 コントロール パネルアカウントに移動します。 アカウントを探し、そのIDをコピーします。 または、アカウントを選択し、アカウントIDをコピーします。

    アカウントIDをコピーします。

    チャネル ID を取得するには、 グローバル メニュー (Applications Menu icon) を開き、 コマースチャネルに移動します。 注文を追加するチャンネルを選択し、そのIDをコピーします。

    チャンネルIDをコピーします。

  3. cURLスクリプトを使用して、新しい注文をチャンネルに追加します。 コマンドラインで、curlフォルダに移動します。 アカウント ID、チャネル ID、通貨コードに適切な値を指定して、 Orders_POST_ToChannel.sh スクリプトを実行します。

    ./Orders_POST_ToChannel.sh 1234 5678 USD
    

    JSONレスポンスは、そのアカウントとチャンネルに新しい注文が追加されたことを示します。

    {
       "accountExternalReferenceCode" : "cc-west",
       "accountId" : 1234,
       "actions" : {
          "get" : {
             "method" : "GET",
             "href" : "http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders/{id}"
          },
          "update" : {
             "method" : "PATCH",
             "href" : "http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders/{id}"
          },
          "delete" : {
             "method" : "DELETE",
             "href" : "http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders/{id}"
          }
       },
       "advanceStatus" : "",
       "billingAddressId" : 0,
       "channelExternalReferenceCode" : "c8957c2f-4eb1-ce8f-4a38-5251bf740198",
       "channelId" : 5678,
       "couponCode" : "",
       "createDate" : "2023-01-03T12:25:15Z",
       "currencyCode" : "USD",
       "customFields" : { },
       "deliveryTermDescription" : "",
       "deliveryTermId" : 0,
       "deliveryTermName" : "",
       "externalReferenceCode" : "3ebcbc91-7240-2763-c2ce-f2a592851053",
       "id" : 45955,
       "modifiedDate" : "2023-01-03T12:25:15Z",
       "orderDate" : "2023-01-03T12:25:15Z",
       "orderStatus" : 1,
       "orderStatusInfo" : {
          "code" : 1,
          "label" : "pending",
          "label_i18n" : "Pending"
       },
       "orderTypeId" : 0,
       "paymentMethod" : "",
       "paymentStatus" : 1,
       "paymentStatusInfo" : {
          "code" : 1,
          "label" : "pending",
          "label_i18n" : "Pending"
       },
       "paymentTermDescription" : "",
       "paymentTermId" : 0,
       "paymentTermName" : "",
       "printedNote" : "",
       "purchaseOrderNumber" : "",
       "shippingAddressId" : 0,
       "shippingAmountFormatted" : "$ 0.00",
       "shippingAmountValue" : 0.0,
       "shippingDiscountAmount" : 0,
       "shippingDiscountAmountFormatted" : "$ 0.00",
       "shippingDiscountPercentageLevel1" : 0,
       "shippingDiscountPercentageLevel1WithTaxAmount" : 0,
       "shippingDiscountPercentageLevel2" : 0,
       "shippingDiscountPercentageLevel2WithTaxAmount" : 0,
       "shippingDiscountPercentageLevel3" : 0,
       "shippingDiscountPercentageLevel3WithTaxAmount" : 0,
       "shippingDiscountPercentageLevel4" : 0,
       "shippingDiscountPercentageLevel4WithTaxAmount" : 0,
       "shippingDiscountWithTaxAmount" : 0,
       "shippingDiscountWithTaxAmountFormatted" : "$ 0.00",
       "shippingOption" : "",
       "shippingWithTaxAmountFormatted" : "$ 0.00",
       "shippingWithTaxAmountValue" : 0.0,
       "subtotalAmount" : 0.0,
       "subtotalDiscountAmount" : 0,
       "subtotalDiscountAmountFormatted" : "$ 0.00",
       "subtotalDiscountPercentageLevel1" : 0,
       "subtotalDiscountPercentageLevel1WithTaxAmount" : 0,
       "subtotalDiscountPercentageLevel2" : 0,
       "subtotalDiscountPercentageLevel2WithTaxAmount" : 0,
       "subtotalDiscountPercentageLevel3" : 0,
       "subtotalDiscountPercentageLevel3WithTaxAmount" : 0,
       "subtotalDiscountPercentageLevel4" : 0,
       "subtotalDiscountPercentageLevel4WithTaxAmount" : 0,
       "subtotalDiscountWithTaxAmount" : 0,
       "subtotalDiscountWithTaxAmountFormatted" : "$ 0.00",
       "subtotalFormatted" : "$ 0.00",
       "subtotalWithTaxAmountFormatted" : "$ 0.00",
       "subtotalWithTaxAmountValue" : 0.0,
       "taxAmount" : 0,
       "taxAmountFormatted" : "$ 0.00",
       "taxAmountValue" : 0.0,
       "totalAmount" : 0.0,
       "totalDiscountAmount" : 0,
       "totalDiscountAmountFormatted" : "$ 0.00",
       "totalDiscountPercentageLevel1" : 0,
       "totalDiscountPercentageLevel2" : 0,
       "totalDiscountPercentageLevel3" : 0,
       "totalDiscountPercentageLevel4" : 0,
       "totalDiscountWithTaxAmount" : 0,
       "totalDiscountWithTaxAmountFormatted" : "$ 0.00",
       "totalFormatted" : "$ 0.00",
       "totalWithTaxAmountFormatted" : "$ 0.00",
       "totalWithTaxAmountValue" : 0.0,
       "transactionId" : "",
       "workflowStatusInfo" : {
          "code" : 0,
          "label" : "approved",
          "label_i18n" : "Approved"
       }
    }
    
  4. グローバル メニュー (Applications Menu icon) → コマース注文に移動します。 新しい注文が表示されます。

    新規注文が追加されたことを確認します。

  5. または、Javaクライアントを使用してRESTサービスを呼び出します。 java

    javac -classpath .:* *.java
    
  6. Orders_POST_ToChannel クラスを実行し、 accountIdchannelIdcurrencyCode を適切な値に置き換えます。

    java -classpath .:* -DaccountId=1234 -DchannelId=5678 -DcurrencyCode=Foo Orders_POST_ToChannel
    

cURLコマンドの検証

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

curl \
	"http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders" \
	--data-raw '
		{
			"accountId": "'"${1}"'",
			"channelId": "'"${2}"'",
			"currencyCode": "'"${3}"'"
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

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

引数説明
-H "Content-Type: application/json"リクエストボディの形式をJSONに設定します。
-X POST指定されたエンドポイントで呼び出す HTTP メソッドを設定します。
"http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders"RESTサービスのエンドポイントを指定します。
-d "{\"accountId\": ${1}, \"channelId\": ${2}, \"currencyCode\": \"${3}\"}"投稿するデータを入力します。
-u "test@liferay.com:learn"基本認証の認証情報を入力します。

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

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

Javaクラスを調べる

Orders_POST_ToChannel.java クラスは、注文関連のサービスを呼び出して注文を追加します。

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

	OrderResource orderResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		orderResource.postOrder(
			new Order() {
				{
					accountId = Long.valueOf(
						System.getProperty("accountId"));
					channelId = Long.valueOf(
						System.getProperty("channelId"));
					currencyCode = String.valueOf(
						System.getProperty("currencyCode"));
				}
			}));
}

このクラスは、わずか3行のコードでRESTサービスを呼び出します。

行(省略形)説明
OrderResource.Builder builder = ...OrderResource サービスインスタンスを生成するための Builderを取得します。
OrderResource orderResource = builder.authentication(...).build();基本認証を使用し、OrderResourceサービスインスタンスを生成します。
orderResource.postOrder(...);orderResource.postOrderメソッドを呼び出し、投稿するデータを渡します。

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

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

他の例のJavaクラスは、異なる OrderResourceメソッドを呼び出します。

重要

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

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

インスタンスから注文を取得する

cURLまたはJavaコマンドで、Liferayインスタンスの全注文を一覧表示することができます。

Orders_GET_FromInstance.sh

コマンド:

./Orders_GET_FromInstance.sh

コード:

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

Orders_GET_FromInstance.java

コマンド:

java -classpath .:* Orders_GET_FromInstance

コード:

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

	OrderResource orderResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		orderResource.getOrdersPage(null, null, Pagination.of(1, 2), null));
}

インスタンスのOrderオブジェクトがJSONに一覧表示されます。

注文の絞り込み、ページ分割、検索、並び替え

このAPIから返される注文は、絞り込み、ページ分割、検索、並べ替えが可能です。 詳細については、 getOrdersPage メソッドを参照してください。 次の Orderフィールドを使用して、結果の絞り込み、検索、並べ替えを行います。

  • accountId
  • channelId
  • orderStatus
  • orderId
  • createDate
  • modifiedDate
  • orderDate
フィルタークエリ説明
orderId eq 45958注文IDは45958と同じでなければなりません。
createDate gt 2022-12-31T12:00:00Z注文作成日は2022年12月31日12:00:00より後である必要があります。
orderStatus/any(x:(x eq 10) or (x eq 1))注文ステータスは、処理中(10)または保留中(1)のいずれかでなければなりません。 anyは、後続の式の少なくとも1つがtrueを返さなければならないことを指定します。
accountId/any(x:(x eq 44170) or (x eq 44178))アカウントIDは、44170または44178と同じである必要があります。 anyは、後続の式の少なくとも1つがtrueを返さなければならないことを指定します。

orderStatusで絞り込むには、その関連する整数値を使用する必要があります。 以下の表は、各注文ステータスをその整数値にマッピングしたものです。

注文ステータス整数値
公開2
処理中6
返答待ち1
処理中10
出荷済み15
完了0
キャンセル済み8
一部発送済み14
申請済み20
ソートクエリ説明
createDate:desccreateDateで降順にソートしてください。
createDate:desc,modifiedDate:desc最初にcreateDateで降順にソートし、次にmodifiedDateで降順にソートします。

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

注文を取得する

cURLとJavagetコマンドで特定の注文を取得します。 1234を注文のIDに置き換えます。

ヒント

すべての注文のリストを取得するには、 Orders_GET_FromInstance.[java|sh] を使用し、必要な注文の ID を書き留めます。

Orders_GET_ById.sh

コマンド:

./Orders_GET_ById.sh 1234

コード:

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

Orders_GET_ById.java

コマンド:

java -classpath .:* -DorderId=1234 Orders_GET_ById

コード:

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

	OrderResource orderResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		orderResource.getOrder(
			Long.valueOf(System.getProperty("orderId"))));
}

OrderフィールドはJSONでフォーマットされています。

注文へのパッチ

cURLとJavapatchコマンドで既存の注文を更新します。 1234を注文のIDに置き換えます。

Orders_PATCH_ById.sh

コマンド:

./Orders_PATCH_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-commerce-admin-order/v1.0/orders/${1}" \
	--data-raw '
		{
			"externalReferenceCode": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "PATCH" \
	--user "test@liferay.com:learn"

Orders_PATCH_ById.java

コマンド:

java -classpath .:* -DorderId=1234 Orders_PATCH_ById

コード:

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

	OrderResource orderResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	orderResource.patchOrder(
		Long.valueOf(System.getProperty("orderId")),
		new Order() {
			{
				externalReferenceCode = "Able";
			}
		});
}

注文を削除する

cURLとJavadeleteコマンドで既存の注文を削除します。 1234を注文のIDに置き換えます。

Orders_DELETE_ById.sh

コマンド:

./Orders_DELETE_ById.sh 1234

コード:

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

Orders_DELETE_ById.java

コマンド

java -classpath .:* -DorderId=1234 Orders_DELETE_ById

コード:

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

	OrderResource orderResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	orderResource.deleteOrder(Long.valueOf(System.getProperty("orderId")));
}

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

Liferay DXP 2024.Q4+/Portal GA129+では、外部参照コードを使用して GET/PUT/PATCH/DELETE 注文を行うことができます。