3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce B2B/D2C Commerce のチェックアウトインテグレーションを利用する

Posted at

※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。

今回は B2B/D2C Commerce (LWR) でのチェックアウト内の処理の実装方法を紹介したいと思います。
B2B/D2C Commerce (LWR) ではチェックアウト時にストアフロントから REST API が呼ばれ、その際にサービスとして登録された Apex で書いた処理が行われます。アーキテクチャの詳細はヘルプをご覧ください。
サービスで処理される内容は下記の通りです。

  • 在庫チェック
  • 配送料計算
  • 税金計算
  • 価格チェック
  • 決済

ここでは、どのようにサービスを作成するかのサンプルとどのように登録をするを紹介したいと思います。
決済以外のサービスと決済サービスでは方法が違うので分けて紹介したいと思います。設定方法はヘルプをご覧ください。

決済以外のサービス

実装サンプル

在庫チェック、配送料計算、税金計算、価格チェックのサンプルは Github に公開されています。それぞれの処理が書かれた Apex はこれらのインターフェースを実装する必要があります。

サービス登録方法

サービスを登録するためには RegisteredExternalService オブジェクトのレコードを作成します。作成する際に必要となるフィールドは下記の通りです。

ExternalServiceProviderId ExternalServiceProviderType DeveloperName
在庫チェックのための処理が書かれた Apex の ID Inventory 管理画面で表示される任意のAPI名(アンダースコアと英数字のみ)
配送料計算処理が書かれた Apex の ID Shipment 同上
税金計算処理が書かれた Apex の ID Tax 同上
価格チェック処理が書かれた Apex の ID Price 同上

レコードは Workbench や開発者コンソールで作成してもいいですし、ヘルプ内の Apex のスクリプトを真似してもいいかと思います。もし sfdxjq コマンドが入っていればこちらのシェルを参照していただいても構いません。

決済サービス

決済サービスでは大きくわけて2つの実装方法があります。仮にここでは「サーバ型」「クライアント型」とさせてください

  1. カード情報を Salesforce のサーバーを介して決済会社へ渡す方法(サーバー型)
    1. このヘルプにあるように「commercepayments.PaymentGatewayAdapter」を Apex に実装している必要がある
  2. カード情報を Salesforce のサーバーを介さずに決済会社へ渡す方法(クライアント型)
    1. このヘルプにあるように「commercepayments.PaymentGatewayAdapter」と「commerce.ClientSidePaymentAdapter」が Apex に実装されている必要があり、さらにクライアントに表示するための LWC を作成する必要がある

実装サンプル

Stripe の実装の2つの型のサンプルを紹介します。

サービス登録方法

サービスを登録するためには、決済会社のAPI を呼ぶ際に利用する指定ログイン情報を作成した後、PaymentGatewayProvider と PaymentGateway オブジェクトのレコードを作成します。(ヘルプ
作成する際に必要となるフィールドは下記の通りです。

PaymentGatewayProvider

DeveloperName ApexAdapterId MasterLabel IdempotencySupported
このレコードの名前 支払い処理が書かれた Apex の ID 管理画面に表示されるラベル名 Yes or No

PaymentGateway

MerchantCredentialId PaymentGatewayName paymentGatewayProviderId Status
作成した指定ログイン情報(Named Credential レコード)のID このゲートウェイの名前 作成した PaymentGatewayProvider レコードの ID Active

レコードは Workbench や開発者コンソールで作成してもいいですし、もし sfdxjq コマンドが入っていればこちらのシェルを参照していただいても構いません。
PaymentGateway(支払いゲートウェイ)に関しては画面上からレコードを新規作成することもできます。

サービスをストアに紐付ける

サービスを登録するためには StoreIntegratedService オブジェクトのレコードを作成します。

Integration ServiceProviderType StoreId
Inventory__{在庫チェックのために作成した RegisteredExternalService の DeveloperName} Inventory 紐付けたいストア(WebStore)レコードの ID
Shipment__{配送料計算のために作成した RegisteredExternalService の DeveloperName} Shipment 紐付けたいストア(WebStore)レコードの ID
Tax__{税金計算のために作成した RegisteredExternalService の DeveloperName} Tax 紐付けたいストア(WebStore)レコードの ID
Price__{価格チェックのために作成した RegisteredExternalService の DeveloperName} Price 紐付けたいストア(WebStore)レコードの ID
作成した PaymentGateway レコードの ID Payment 紐付けたいストア(WebStore)レコードの ID

レコードは Workbench や開発者コンソールで作成してもいいですし、ヘルプ内の「Map to Your Store」内の Apex を真似てもいいかと思います。

画面からの紐付け

画面からも可能ですので、下に方法を紹介します。

ストアの詳細画面から [管理] タイルとクリックします。
スクリーンショット 2023-10-18 13.45.27.png

管理画面で在庫チェック、配送料計算、税金計算、価格チェック、決済はそれぞれ「ストア在庫」「送料の計算」「税金の計算」「価格チェック」「支払」タブに対応しており、クリックすると紐づけるためのボタンが表示されています。
スクリーンショット 2023-10-18 13.46.20.png

ボタンを押すと作成したサービスを選択できるようになっています。
image (5).png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?