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

決済統合クライアント拡張機能の使用

Liferay DXP 2024.Q1+/Portal GA112+

Liferayに新しい支払い方法を統合するには、クライアント拡張機能を使用できます。サンプルワークスペース のこのクライアント拡張機能は、OAuth 2 を使用して Liferay と通信するスタンドアロンの Spring Boot アプリケーションで構成されています。 Liferay で標準で利用できる支払い方法の詳細については、 支払い方法の設定 を参照してください。

前提条件

  1. サポートされているバージョンの Java をインストールしてください。

    注記

    推奨される JVM 設定については、 JVM 構成 を参照してください。

  2. サンプルワークスペースをダウンロードして解凍してください。

    curl -o com.liferay.sample.workspace-latest.zip https://repository.liferay.com/nexus/service/local/artifact/maven/content\?r\=liferay-public-releases\&g\=com.liferay.workspace\&a\=com.liferay.sample.workspace\&\v\=LATEST\&p\=zip
    
    unzip -d liferay-sample-workspace com.liferay.sample.workspace-latest.zip
    

これで、Liferay にクライアント拡張機能を起動してデプロイするためのツールが揃いました。

決済統合クライアント拡張機能を調べます

client-extensions/liferay-sample-commerce-payment-integration/client-extension.yaml ファイルは、サンプルワークスペース内の支払い統合クライアント拡張機能を定義します。 .yaml ファイルには、理解しておくべき重要なブロックが 3 つあります。

assemble:
    - fromTask: bootJar

assemble ブロックは、スタンドアロンのアプリケーション/マイクロサービスが bootJar コマンドで作成されることを指定しています。これは Spring Boot Gradle プラグイン から入手できます。 Liferay SaaSにデプロイするには、アプリケーションのJARファイルをLUFFAに含める必要があります。

liferay-sample-commerce-payment-integration:
   key: liferay-sample-commerce-payment-integration
   name: Liferay Sample Commerce Payment Integration
   oAuth2ApplicationExternalReferenceCode: liferay-sample-commerce-payment-integration-oaua
   paymentIntegrationType: 3
   paymentIntegrationTypeSettings:
      key1: value1
      key2: value2
      key3: value3
      key4: value4
      key5: value5
   type: commercePaymentIntegration

liferay-sample-commerce-payment-integration ブロックには、決済統合クライアント拡張機能に必要なキー構成が含まれています。各フィールドの詳細については、 支払い統合クライアント拡張機能 YAML リファレンス を参照してください。

liferay-sample-commerce-payment-integration-oaua:
   .serviceAddress: localhost:58081
   .serviceScheme: http
   name: Liferay Sample Commerce Payment Integration OAuth Application User Agent
   scopes:
      - Liferay.Headless.Admin.Workflow.everything
   type: oAuthApplicationUserAgent

client-extension.yaml のもう 1 つの重要な部分は、 liferay-sample-commerce-payment-integration-oaua 定義にあります。 serviceAddress パラメータは、サービスがローカルで実行される場所を定義し、 serviceScheme パラメータはプロトコルを定義します。 name フィールドは、OAuth アプリケーションのユーザー エージェントの名前を定義します。スコープ フィールドは、ヘッドレス API に与えられるアクセスを定義します。このセクションでは、Liferayを認証サーバーとして設定します。これにより、次にデプロイする決済統合機能が、リソースサーバーのセキュアなエンドポイントを呼び出し、ペイロードを送信できるようになります。詳細については、 OAuth ユーザーエージェント YAML 設定リファレンス を参照してください。

決済統合クライアント拡張機能をデプロイする

  1. サンプルワークスペースに移動してください。

  2. 走る

    ./gradlew initBundle
    

    これにより、ワークスペースの /bundles フォルダー内にバンドルがダウンロードされます。

  3. /bundles/tomcat/bin フォルダに移動します。走る

    ./catalina run
    
  4. サンプルワークスペースの /client-extensions/liferay-sample-commerce-payment-integration フォルダーに戻ります。

  5. 走る

    ../../gradlew clean createClientExtensionConfig deploy
    
  6. Liferayのログで、クライアント拡張機能がデプロイされ、起動したことを確認してください。

    2024-03-05 11:22:48.192 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:212] Processing liferay-sample-commerce-payment-integration.zip
    2024-03-05 11:22:57.527 INFO  [fileinstall-directory-watcher][BundleStartStopLogger:68] STARTED liferaysamplecommercepaymentintegration_7.4.13 [1499]
    

    さらに、OAuthユーザーエージェントに関するメッセージもログに記録されます。

    2024-03-05 11:22:57.679 INFO  [CM Event Dispatcher (Fire ConfigurationEvent: pid=com.liferay.oauth2.provider.configuration.OAuth2ProviderApplicationUserAgentConfiguration~liferay-sample-commerce-payment-integration-oaua)][InterpolationConfigurationPlugin:135] Replaced value of configuration property 'homePageURL' for PID com.liferay.oauth2.provider.configuration.OAuth2ProviderApplicationUserAgentConfiguration~liferay-sample-commerce-payment-integration-oaua
    2024-03-05 11:22:57.712 INFO  [CM Event Dispatcher (Fire ConfigurationEvent: pid=com.liferay.oauth2.provider.configuration.OAuth2ProviderApplicationUserAgentConfiguration~liferay-sample-commerce-payment-integration-oaua)][OAuth2ProviderApplicationUserAgentConfigurationFactory:170] OAuth 2 application with external reference code liferay-sample-commerce-payment-integration-oaua and company ID 93285384307986 has client ID id-5433f036-5672-de77-ea7b-a82110957aca
    
  7. OAuthアプリケーションユーザーエージェントがLiferayに追加されていることを確認してください。コントロール パネル → OAuth2 管理 に移動します。

Liferay Sample Commerce Payment Integration OAuth Application User Agentは、クライアント拡張機能をデプロイする際に自動的に追加されます。

Liferay Sample Commerce Payment Integration OAuth Application User Agent は、Liferay が保護されたエンドポイントを介して Spring Boot アプリケーションのデータにアクセスするために必要な OAuth 2 認証 を提供します。この場合、Liferayがアプリケーションを認証するために必要なのは、 application-default.properties に外部参照コードを宣言することだけです。

liferay.oauth.application.external.reference.codes=liferay-sample-commerce-payment-integration-oaua

マイクロサービスを開始する

client-extensions/liferay-sample-commerce-payment-integration フォルダーから、以下を実行します。

../../gradlew bootRun

Spring Bootアプリケーションが起動し、ログにメッセージを出力します。

...
2024-03-05 11:22:58.893  INFO 3534 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 58081 (http) with context path ''
2024-03-05 11:22:58.900  INFO 3534 --- [           main] c.l.sample.SampleSpringBootApplication   : Started SampleSpringBootApplication in 21.133 seconds (JVM running for 21.397)
<==========---> 80% EXECUTING [7m 43s]
> :client-extensions:liferay-sample-commerce-payment-integration:bootRun

決済統合の追加を確認する

  1. 管理者としてログインし、 グローバルメニュー (Applications Menu icon) を開き、 コントロールパネル → サイト に移動します。

  2. 新しいMiniumサイトを追加します。

  3. グローバルメニュー (Applications Menu icon) を開き、 コマース → チャネル に移動します。

  4. ミニマムポータル を選択し、支払い方法のセクションまでスクロールします。新しい決済連携機能の追加状況は、こちらでご確認ください。デフォルトでは無効になっています。

    チャネル設定で、新しい決済連携機能が追加されていることを確認してください。

  5. 新しい決済連携を選択し、 アクティブ トグルを使用して有効化します。

  6. をクリックして保存します。支払い統合のために、 資格 と 設定という 2 つの新しいタブが表示されます。

    設定タブには入力フィールドがあります。クライアント拡張機能自体に値を直接記述する代わりに、ここにクライアント拡張機能に必要な情報を入力できます。この例には、サンプルとなるキーと値のペアが含まれています。

    支払い連携の対象となる特定の注文タイプまたは支払い条件を選択するには、「資格」タブに移動してください。デフォルトでは、すべての注文タイプと支払い条件に対応しています。

  7. をクリックして保存します。

  8. サイトを開き、アカウント選択機能を使って新しいアカウントを作成してください。

  9. カートに商品をいくつか追加してください。

  10. ミニカートを開いて、 送信 をクリックします。これでチェックアウトの流れが開始されます。

  11. 注文が完了するまで、チェックアウトを続けてください。グローバルメニュー (Applications Menu icon) を開き、 コマース → 支払い に移動して、支払いが完了したことを確認します。

支払いが完了したことを確認してください。

法典の検証

Liferayで決済連携機能を作成するには、以下の決済ステータスに対応するコントローラーを実装する必要があります。

  • 支払い設定
  • 承認する
  • 捕獲
  • キャンセル
  • 返金

提供されているサンプルクライアント拡張機能には、Spring Bootアプリケーションによって呼び出され、Liferayに新しい支払い統合を作成するためのコントローラーが含まれています。 client-extension.yamlファイル内のkeyおよびnameフィールドは、決済連携のキーと名前を指定します。既存の支払い方法と競合しない、固有のキーを使用する必要があります。

SetUpPaymentRestController.java を検査中

@PostMapping
public ResponseEntity<String> post(
   @AuthenticationPrincipal Jwt jwt, @RequestBody String json) {

   log(jwt, _log, json);

   return new ResponseEntity<>(
      new JSONObject(
      ).put(
         "paymentStatus", 18
      ).toString(),
      HttpStatus.OK);
}

SetUpPaymentRestController には、JSON Web Token (JWT) とリクエストボディの 2 つのパラメータを持つ単一の POST メソッドが含まれています。トークンはHTTP呼び出しを認証し、リクエストボディにはJSON形式の文字列としてデータが含まれます。リクエストボディをログに記録した後、 JSONObject() コンストラクタを使用して支払いステータスを 18 に設定し、HTTP ステータスとともにレスポンス エンティティとして返します。

AuthorizeRestController.java を検査中

@PostMapping
public ResponseEntity<String> post(
   @AuthenticationPrincipal Jwt jwt, @RequestBody String json) {

   log(jwt, _log, json);

   return new ResponseEntity<>(
      new JSONObject(
      ).put(
         "paymentStatus", 2
      ).put(
         "transactionCode", UUID.randomUUID()
      ).toString(),
      HttpStatus.OK);
}

AuthorizeRestController には、JSON Web Token (JWT) とリクエストボディの 2 つのパラメータを持つ単一の POST メソッドが含まれています。トークンはHTTP呼び出しを認証し、リクエストボディにはJSON形式の文字列としてデータが含まれます。リクエストボディをログに記録した後、 JSONObject() コンストラクタを使用して支払いステータスを 2 に設定し、HTTP ステータスとともにレスポンス エンティティとして返します。

CaptureRestController.java を検査しています

@PostMapping
public ResponseEntity<String> post(
   @AuthenticationPrincipal Jwt jwt, @RequestBody String json) {

   log(jwt, _log, json);

   return new ResponseEntity<>(
      new JSONObject(
      ).put(
         "paymentStatus", 0
      ).toString(),
      HttpStatus.OK);
}

CaptureRestController には、JSON Web Token (JWT) とリクエストボディの 2 つのパラメータを持つ単一の POST メソッドが含まれています。トークンはHTTP呼び出しを認証し、リクエストボディにはJSON形式の文字列としてデータが含まれます。リクエストボディをログに記録した後、 JSONObject() コンストラクタを使用して支払いステータスを 0 に設定し、HTTP ステータスとともにレスポンス エンティティとして返します。

CancelRestController.java を検査中

@PostMapping
public ResponseEntity<String> post(
   @AuthenticationPrincipal Jwt jwt, @RequestBody String json) {

   log(jwt, _log, json);

   return new ResponseEntity<>(
      new JSONObject(
      ).put(
         "paymentStatus", 8
      ).toString(),
      HttpStatus.OK);
}

CancelRestController には、JSON Web Token (JWT) とリクエストボディの 2 つのパラメータを持つ単一の POST メソッドが含まれています。トークンはHTTP呼び出しを認証し、リクエストボディにはJSON形式の文字列としてデータが含まれます。リクエストボディをログに記録した後、 JSONObject() コンストラクタを使用して支払いステータスを 8 に設定し、HTTP ステータスとともにレスポンスエンティティとして返します。

RefundRestController.java を検査中

@PostMapping
public ResponseEntity<String> post(
   @AuthenticationPrincipal Jwt jwt, @RequestBody String json) {

   log(jwt, _log, json);

   return new ResponseEntity<>(
      new JSONObject(
      ).put(
         "paymentStatus", 17
      ).toString(),
      HttpStatus.OK);
}

RefundRestController には、JSON Web Token (JWT) とリクエストボディの 2 つのパラメータを持つ単一の POST メソッドが含まれています。トークンはHTTP呼び出しを認証し、リクエストボディにはJSON形式の文字列としてデータが含まれます。リクエストボディをログに記録した後、 JSONObject() コンストラクタを使用して支払いステータスを 17 に設定し、HTTP ステータスとともにレスポンスエンティティとして返します。