この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
B2C Commerce API (SCAPI) は、Shopper Baskets、Shopper Customers、および Shopper Orders API ファミリーを通じた注文手続きをサポートしています。
このトピックでは、買い物カゴを作成して送信するためのベストプラクティスの概要を説明し、SCAPI を使用した支払処理へのアプローチ方法に関する全体的なガイダンスを提供します。
支払カードデータを B2C Commerce に渡さないでください。代わりに、プロバイダーの script/iframe を使用して買い物客に支払カードデータを直接決済プロバイダーに提供してもらい、プロバイダーから返されたトークンを API に渡します。トークンを検証し、トークンが有効な場合は注文を受け入れ、それ以外の場合は拒否します。
この記事では、支払いトークンを取得する支払いゲートウェイを操作していることを前提としています。
このページ内のリンクには、既存のお客様のみがアクセスできるものがあります。Commerce Cloud リポジトリにアクセスする方法については Salesforce Commerce Cloud GitHub リポジトリとアクセスを参照してください。
Tip
以下を実装していることを確認します。
買い物カゴを作成するには、次の 2 つの方法があります。
買い物カゴを段階的に作成する場合は、買い物客から提供された情報を入力します。これにより、買い物カゴが B2C Commerce バックエンドに保持され、買い物カゴを簡単に永続化できない場合に便利です。 また、次のコード例に示すように、検証を実行し、API エラーを返すこともできます。コード例に含まれるコメントはわかりやすくするために提供されており、コードを機能させるには削除する必要があることに注意してください。
1#!/bin/bash
2set -euo pipefail
3
4CODE='kv7kzm78'
5ORG='f_ecom_zzrf_001'
6SITE='RefArchGlobal'
7CLIENT=
8SECRET=
9
10BASE="https://$CODE.api.commercecloud.salesforce.com"
11BASE_AUTH="$BASE/shopper/auth/v1/organizations/$ORG"
12BASE_BASKETS="$BASE/checkout/shopper-baskets/v1/organizations/$ORG"
13
14# 1. Get guest token (Note: The following code provides a rough flow using a private client. The commands for getting a token for a public client differ.)
15TOKEN=$(
16 curl "$BASE_AUTH/oauth2/token" \
17 -sS --fail-with-body \
18 -u "$CLIENT:$SECRET" \
19 -d 'grant_type=client_credentials' | jq -r .'access_token'
20)
21
22# 2. Create basket (Note: When you create a basket, you store a reference to the basket, and use the reference in subsequent calls.)
23BASKET=$(
24 curl "$BASE_BASKETS/baskets?siteId=$SITE" \
25 -sS --fail-with-body \
26 -H "Authorization: Bearer $TOKEN" \
27 -H "Content-Type: application/json" \
28 -d '{ "productItems": [{ "quantity": 1, "productId": "682875090845M"}]}' | jq -r '.basketId'
29)
30
31# 3. Set basket customer
32curl "$BASE_BASKETS/baskets/$BASKET/customer?siteId=$SITE" \
33 -sS --fail-with-body -o /dev/null \
34 -X 'PUT' \
35 -H "Authorization: Bearer $TOKEN" \
36 -H "Content-Type: application/json" \
37 -d '{ "email": "shopper@salesforce.com" }'
38
39# 4. Set shipping address. All baskets have a shipment called `me`. For multiple shipments, you must to create those shipments yourself. See [reateShipmentForBasket](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-baskets?meta=createShipmentForBasket).
40curl "$BASE_BASKETS/baskets/$BASKET/shipments/me?siteId=$SITE" \
41 -sS --fail-with-body -o /dev/null \
42 -X 'PATCH' \
43 -H "Authorization: Bearer $TOKEN" \
44 -H "Content-Type: application/json" \
45 -d '{
46 "shippingAddress": {
47 "firstName": "Joe",
48 "lastName": "Shopper",
49 "address1": "415 Mission St.",
50 "city": "San Francisco",
51 "postalCode": "94105",
52 "stateCode": "CA",
53 "countryCode": "US"
54 }
55 }'
56
57# 5. Get applicable shipping methods (Note: This example defaults to the first shipping method that is available.)
58SHIPPING_METHOD=$(
59 curl "$BASE_BASKETS/baskets/$BASKET/shipments/me/shipping-methods?siteId=$SITE" \
60 -sS --fail-with-body \
61 -H "Authorization: Bearer $TOKEN" | jq -r '.applicableShippingMethods[0].id'
62)
63
64# 6. Set shipping method
65curl "$BASE_BASKETS/baskets/$BASKET/shipments/me/shipping-method?siteId=$SITE" \
66 -sS --fail-with-body -o /dev/null \
67 -X 'PUT' \
68 -H "Authorization: Bearer $TOKEN" \
69 -H "Content-Type: application/json" \
70 -d '{"id": "'$SHIPPING_METHOD'"}'
71
72# 7. Set payment instrument (Note: This example uses PayPal.)
73curl "$BASE_BASKETS/baskets/$BASKET/payment-instruments?siteId=$SITE" \
74 -sS --fail-with-body -o /dev/null \
75 -H "Authorization: Bearer $TOKEN" \
76 -H "Content-Type: application/json" \
77 -d '{ "paymentMethodId": "PayPal" }'
78
79# 8. Set billing address
80curl "$BASE_BASKETS/baskets/$BASKET/billing-address?siteId=$SITE&useAsShipping=false" \
81 -sS --fail-with-body -o /dev/null \
82 -X 'PUT' \
83 -H "Authorization: Bearer $TOKEN" \
84 -H "Content-Type: application/json" \
85 -d '{
86 "firstName": "Joe",
87 "lastName": "Shopper",
88 "address1": "415 Mission St",
89 "city": "San Francisco",
90 "postalCode": "94105",
91 "stateCode": "CA",
92 "countryCode": "US"
93 }'
94
95# 9. Submit order
96curl "$BASE/checkout/shopper-orders/v1/organizations/$ORG/orders?siteId=$SITE" \
97 -sS --fail-with-body \
98 -H "Authorization: Bearer $TOKEN" \
99 -H "Content-Type: application/json" \
100 -d '{ "basketId": "'$BASKET'"}' | jqまた、リクエストを 1 回行うだけで買い物カゴを作成し、入力したい関連部分を指定することもできます。 次の例では、買い物カゴ全体とその入れ子になったドキュメントを 1 つのリクエストで作成します。
1#!/bin/bash
2set -euo pipefail
3
4CODE='kv7kzm78'
5ORG='f_ecom_zzrf_001'
6SITE='RefArchGlobal'
7CLIENT=
8SECRET=
9
10BASE="https://$CODE.api.commercecloud.salesforce.com"
11BASE_AUTH="$BASE/shopper/auth/v1/organizations/$ORG"
12BASE_BASKETS="$BASE/checkout/shopper-baskets/v1/organizations/$ORG"
13
14# 1. Get guest token
15TOKEN=$(
16 curl "$BASE_AUTH/oauth2/token" \
17 -sS --fail-with-body \
18 -u "$CLIENT:$SECRET" \
19 -d 'grant_type=client_credentials' | jq -r .'access_token'
20)
21
22# 2. Create a basket
23BASKET=$(
24 curl "$BASE_BASKETS/baskets?siteId=$SITE" \
25 -sS --fail-with-body \
26 -H "Authorization: Bearer $TOKEN" \
27 -H "Content-Type: application/json" \
28 -d '{
29 "productItems": [{ "quantity": 1, "productId": "682875090845M" }],
30 "customerInfo": { "email": "shopper@salesforce.com" },
31 "shipments": [
32 {
33 "shipmentId": "me",
34 "shippingAddress": {
35 "firstName": "Joe",
36 "lastName": "Shopper",
37 "address1": "415 Mission St.",
38 "city": "San Francisco",
39 "postalCode": "94105",
40 "stateCode": "CA",
41 "countryCode": "US"
42 },
43 "shippingMethod": { "id": "GBP001" }
44 }
45 ],
46 "paymentInstruments": [{ "paymentMethodId": "PayPal" }],
47 "billingAddress": {
48 "firstName": "Joe",
49 "lastName": "Shopper",
50 "address1": "415 Mission St",
51 "city": "San Francisco",
52 "postalCode": "94105",
53 "stateCode": "CA",
54 "countryCode": "US"
55 }
56 }' | jq -r '.basketId'
57)
58
59# 3. Submit order
60curl "$BASE/checkout/shopper-orders/v1/organizations/$ORG/orders?siteId=$SITE" \
61 -sS --fail-with-body \
62 -H "Authorization: Bearer $TOKEN" \
63 -H "Content-Type: application/json" \
64 -d '{ "basketId": "'$BASKET'"}'既存の買い物カゴを取得するには、Shopper Customers API getCustomerBaskets エンドポイントを使用します。
次の例では、顧客 ID を使用して顧客の買い物カゴを取得します。
1curl "$BASE/customer/shopper-customers/v1/organizations/$ORG/customers/$CUSTOMERID/baskets?siteId=$SITE' \
2 -sS --fail-with-body \
3 -H "Authorization: Bearer $TOKEN" \
4 -H "Content-Type: application/json" \次の例では、買い物カゴ ID を使用して買い物カゴを取得します。
1curl "$BASE_BASKETS/baskets/$BASKETID?siteId=$SITE' \
2 -sS --fail-with-body \
3 -H "Authorization: Bearer $TOKEN" \
4 -H "Content-Type: application/json" \