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

支払い統合クライアント拡張機能の使用

Liferay DXP 2024.Q1+/ポータル 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-oauth-application-user-agent
   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-oauth-application-user-agent:
   .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-oauth-application-user-agent 定義にあります。 serviceAddress パラメータはサービスがローカルで実行される場所を定義し、 serviceScheme パラメータはプロトコルを定義します。 name フィールドは、OAuth アプリケーション ユーザー エージェントの名前を定義します。 スコープ フィールドは、ヘッドレス API に付与されるアクセスを定義します。 このセクションでは、Liferay を認可サーバーとして設定し、次にデプロイする支払い統合がリソース サーバーの安全なエンドポイントを呼び出してペイロードを送信できるようにします。 詳細については、 OAuth ユーザー エージェント YAML 構成リファレンス を参照してください。

支払い統合クライアント拡張機能を展開する

  1. サンプルワークスペースに移動します。

  2. 実行

    ./gradlew initBundle
    

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

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

    ./catalina run
    
  4. サンプルワークスペースs /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-oauth-application-user-agent)][InterpolationConfigurationPlugin:135] Replaced value of configuration property 'homePageURL' for PID com.liferay.oauth2.provider.configuration.OAuth2ProviderApplicationUserAgentConfiguration~liferay-sample-commerce-payment-integration-oauth-application-user-agent
    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-oauth-application-user-agent)][OAuth2ProviderApplicationUserAgentConfigurationFactory:170] OAuth 2 application with external reference code liferay-sample-commerce-payment-integration-oauth-application-user-agent and company ID 93285384307986 has client ID id-5433f036-5672-de77-ea7b-a82110957aca
    
  7. OAuth アプリケーション ユーザー エージェントが Liferay に追加されたことを確認します。 コントロール パネルOAuth2 管理に移動します。

クライアント拡張機能をデプロイすると、Liferay サンプル コマース支払い統合 OAuth アプリケーション ユーザー エージェントが追加されます。

Liferay サンプルコマース支払い統合 OAuth アプリケーションユーザーエージェントは、Liferay が保護されたエンドポイントを介して Spring Boot アプリケーションのデータにアクセスできるようにするために必要な OAuth 2 認証 を提供します。 この場合、Liferay がアプリケーションを承認するために必要なのは、 application-default.propertiesで外部参照コードを宣言することだけです。

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

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

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. Minium Portal を選択し、支払い方法セクションまで下にスクロールします。 ここで、新しい支払い統合の追加を確認します。 デフォルトでは非アクティブです。

    チャネル設定で新しい支払い統合の追加を確認します。

  5. 新しい支払い統合を選択し、 アクティブ トグルを使用してアクティブ化します。

  6. [保存]をクリックします。 支払い統合のために、2 つの新しいタブ 資格構成が表示されます。

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

    「適格性」タブに移動して、支払い統合の対象となる特定の注文タイプまたは支払い条件を選択できます。 デフォルトでは、すべての注文タイプと支払い条件が対象となります。

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

  8. サイトを開き、アカウントセレクターを使用して新しいアカウントを作成します。

  9. いくつかの商品をカートに追加します。

  10. ミニカートを開き、 「送信」をクリックします。 これによりチェックアウトフローが開始されます。

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

支払いの完了を確認します。

コードを調べる

Liferay で支払い統合を作成するには、次の支払いステータスのコントローラーを実装する必要があります。

  • 支払い設定
  • 許可する
  • 捕獲
  • キャンセル
  • 払い戻し

提供されているサンプル クライアント拡張機能には、Liferay で新しい支払い統合を作成するために Spring Boot アプリケーションによって呼び出されるこれらのコントローラーが含まれています。 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 ステータスとともに応答エンティティとして返します。