フルフィルメント操作スキーマ

このページでは、Order with Google Built-in Action API を利用する場合のフルフィルメント ウェブサービス(Order with Google API)のペイロードについて説明します。 この情報の機械で読み取り可能なバージョンについては、JSON スキーマをダウンロードできます。

基本型

カート

注文の詳細と、受け取りまたは受け取りに関するリクエストが含まれます。カートには、配達の詳細、無料、配達先住所も含まれています。 Cart オブジェクトは Checkout AppRequest で定義されます。f.Checkout AppResponse にカートのコピーを含める。

次の表に、Cart タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

このオブジェクトのタイプ。親の Cart オブジェクトが ProposedOrder の一部である場合は、このフィールドを省略します。

値: type.googleapis.com/google.actions.v2.orders.Cart

id 文字列

カートの ID(省略可)。

merchant Merchant

このカートと提携している販売者です。

lineItems リスト&LineItem>

必須。

ユーザーが注文している商品やサービスのリスト。

1 個以上の項目が必要です。

promotions リスト&Promotion>

このカートに適用されるプロモーション。現在サポートされているプロモーションは 1 つのみです。

notes 文字列

注文または配送の手順に関する注意事項。

extension FoodCartExtension

フルフィルメント設定など、ユーザーの詳細を定義します。

次の例は、Cart 要素を示しています。

例 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Cucina Venti"
  },
  "lineItems": [
    {
      "name": "Sizzling Prawns Dinner",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "16",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

例 2

{
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Falafel Bite"
  },
  "lineItems": [
    {
      "name": "Pita Chips",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "2",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    },
    {
      "name": "Chicken Shwarma Wrap",
      "type": "REGULAR",
      "id": "sample_item_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "8"
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Greek Salad",
      "type": "REGULAR",
      "id": "sample_item_offer_id_3",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "9",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Prawns Biryani",
      "type": "REGULAR",
      "id": "sample_item_offer_id_4",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "15",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P90M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

Contact

注文を受けたユーザーの詳細を指定します。AppResponse でのみ使用できます。

次の表に、Contact タイプのプロパティを示します。

プロパティ タイプ 説明
displayName 文字列

注文を受け取る側の人の名前。firstName と lastName が指定されていない場合は、このフィールドを使用します。

例: Lovefood Ordering

email 文字列

注文を受け取ったユーザーのメールアドレス。

例: ilovefood@example.com

firstName 文字列

注文を受け取ったユーザーの名。

例: Lovefood

lastName 文字列

注文を受けた人物の姓。

例: Ordering

phoneNumber 文字列

注文を受けた人の電話番号(国コードを含む)。

例: +16501234567

emailVerified Boolean

注文した相手が Google アカウントでログインしているかどうかを示します。

次の例は、Contact 要素を示しています。

{
  "displayName": "Lovefood Ordering",
  "email": "ilovefood@example.com",
  "phoneNumber": "+16501234567"
}

CustomPushMessage

リクエストの OrderUpdate が含まれます。

次の表に、CustomPushMessage タイプのプロパティを示します。

プロパティ タイプ 説明
orderUpdate OrderUpdate

必須。

注文の情報を更新しました。

次の例は、CustomPushMessage 要素を示しています。

{
  "orderUpdate": {
    "actionOrderId": "sample_action_order_id",
    "orderState": {
      "state": "IN_TRANSIT",
      "label": "Order is on the way"
    },
    "inTransitInfo": {
      "updatedTime": "2017-07-17T12:00:00Z"
    },
    "updateTime": "2017-07-17T12:00:00Z",
    "orderManagementActions": [
      {
        "type": "CUSTOMER_SERVICE",
        "button": {
          "title": "Contact customer service",
          "openUrlAction": {
            "url": "mailto:support@example.com"
          }
        }
      },
      {
        "type": "EMAIL",
        "button": {
          "title": "Email restaurant",
          "openUrlAction": {
            "url": "mailto:person@example.com"
          }
        }
      },
      {
        "type": "CALL_RESTAURANT",
        "button": {
          "title": "Call restaurant",
          "openUrlAction": {
            "url": "tel:+16505554679"
          }
        }
      }
    ],
    "receipt": {
      "userVisibleOrderId": "userVisibleId1234"
    },
    "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
    }
  }
}

配信情報

次の表に、DeliveryInfo タイプのプロパティを示します。

プロパティ タイプ 説明
deliveryTimeIso8601 文字列

目安のお届け日数(ISO 8601 タイムスタンプ形式): {year}~{month}~{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" または期間の形式: "P(n)Y(n)M(n)DT(n)H(n)M(n)S"たとえば、PT90M は 90 分の期間を表します。デフォルト値の PT0M は、希望する配送時間が最短であることを示します。参照: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations購入手続きのレスポンスの際に目安のお届け日数を更新します。

例: PT90M

次の例は、DeliveryInfo 要素を示しています。

{
  "deliveryTimeIso8601": "PT90M"
}

免責条項

次の表に、Disclaimer タイプのプロパティを示します。

プロパティ タイプ 説明
predefinedMessage PredefinedMessage

必須。

ご購入手続きの際に、事前定義された免責条項のメッセージを表示する。

feeAmount Money

パートナーは、この注文について N 通りの料金を販売者に請求します。

feeAmountRange FeeAmountRange

パートナーは、注文ごとに N ~ M の料金をレストランに請求します。

feePercent Number

パートナーは、この注文について N% の手数料を販売者に請求します。

feePercentRange FeePercentRange

パートナーは、注文ごとに N% ~ M% の手数料を販売者に請求する。

次の例は、Disclaimer 要素を示しています。

例 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

例 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

例 3

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercent": 25
}

例 4

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercentRange": {
    "minFeePercent": 20,
    "maxFeePercent": 30
  }
}

例 5

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmount": {
    "currencyCode": "AUD",
    "units": 2,
    "nanos": 500000000
  }
}

例 6

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmountRange": {
    "minFeeAmount": {
      "currencyCode": "AUD",
      "units": 2,
      "nanos": 500000000
    },
    "maxFeeAmount": {
      "currencyCode": "AUD",
      "units": 10,
      "nanos": 0
    }
  }
}

誤差

Error 型には次の値があります。

  • CLOSED: レストランは注文時に営業していません。
  • NO_CAPACITY: 利用可能なサービス容量がない(ピークタイムによる一時的な停止など)。
  • NO_COURIER_AVAILABLE: 配達員が限られているため、注文を処理できません。
  • REQUIREMENTS_NOT_MET: 注文を受け入れるための制約(最小カートサイズなど)を満たしていません。
  • UNAVAILABLE_SLOT: DeliveryInfo または PickupInfo で指定されている注文では、注文を完了できません。
  • OUT_OF_SERVICE_AREA: ユーザーの住所に注文を配送できません。
  • PROMO_EXPIRED: プロモーションの有効期限が切れているため、適用できませんでした。
  • PROMO_NOT_APPLICABLE: 他のプロモーション コードのいずれのエラーも当てはまらない場合に、プロモーション コードを適用できなかったすべてのケースを検出するための汎用エラーコード。
  • PROMO_NOT_RECOGNIZED: クーポンコードを認識できませんでした。
  • PROMO_ORDER_INELIGIBLE: 現在の注文はこのクーポンの対象ではありません。
  • PROMO_USER_INELIGIBLE: 現在のユーザーはこのクーポンの利用資格がありません。
  • AVAILABILITY_CHANGED: アイテムを利用できなくなったか、リクエストに対応できる十分なアイテムがありません。
  • INCORRECT_PRICE: 料金または合計でのエラー。
  • INVALID: 広告申込情報、FulfillmentOption、プロモーションに無効なデータが含まれています。
  • NOT_FOUND: 広告申込情報タイプ、FulfillmentOption、またはプロモーションが見つかりません。
  • PRICE_CHANGED: 商品アイテムの価格が変更されました。

料金範囲

次の表に、FeeAmountRange タイプのプロパティを示します。

プロパティ タイプ 説明
minFeeAmount Money

請求される料金の下限。

maxFeeAmount Money

請求される料金の上限。

料金の割合の範囲

次の表に、FeePercentRange タイプのプロパティを示します。

プロパティ タイプ 説明
minFeePercent Number

課金率の下限。

maxFeePercent Number

請求可能な割合の上限。

食品カートの拡張機能

フルフィルメントの設定など、ユーザーに関する詳細情報が含まれます。

次の表に、FoodCartExtension タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

この広告表示オプションのタイプ。このフィールドは常に "type.googleapis.com/google.actions.v2.orders.FoodCartExtension" に設定されます。

値: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

注文を受けた側の連絡先情報。詳細には、ユーザーの名前、電話番号、メールアドレスが含まれます。

fulfillmentPreference FulfillmentOption

必須。

ユーザーのフルフィルメント設定。

location Location

CheckoutRequestMessage のこのフィールドには配送先住所を指定します。注文を配送用に作成する場合は必須です。テイクアウトまたはテイクアウトの注文の場合、このフィールドはメッセージに含まれません。

次の例は、FoodCartExtension 要素を示しています。

例 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "delivery": {
        "deliveryTimeIso8601": "P0M"
      }
    }
  },
  "location": {
    "coordinates": {
      "latitude": 37.788783,
      "longitude": -122.41384
    },
    "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
    "zipCode": "94043",
    "city": "Mountain View",
    "postalAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "1350 Charleston Road"
      ]
    },
    "notes": "Gate code is #111"
  }
}

例 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "pickup": {
        "pickupTimeIso8601": "P0M"
      }
    }
  },
  "contact": {
    "displayName": "Lovefood Ordering",
    "email": "ilovefood@example.com",
    "phoneNumber": "+16501234567"
  }
}

食品エラーの拡張機能

リクエストの処理中に発生した 1 つ以上のエラーを示します。 次の表に、FoodErrorExtension タイプのフィールドを示します。エラーは CheckoutResponse で送信できます。

次の表に、FoodErrorExtension タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

必須。

この広告表示オプションのタイプ。

値: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors リスト&FoodOrderError>

必須。

発生したエラーを説明する FoodOrderError オブジェクトの配列。カートごと、または商品アイテムごとに 1 件のエラーを推奨します。

1 個以上の項目が必要です。

correctedProposedOrder ProposedOrder

foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED" の場合は必須です。

修正された新しい ProposedOrder です。元の ProposedOrder に復元可能なエラーがある場合は、このオブジェクトを返します。たとえば、カート内の 1 つ以上の広告申込情報の価格を変更した場合は、回復可能なエラーとなります。有効な ProposedOrder を使用した回復可能なエラーは、ユーザーにカートの確認を求める代わりに、確認ステージに進みます。

paymentOptions PaymentOptions

foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED" の場合は必須です。

ユーザーに対して選択されたデフォルトの支払い方法。

additionalPaymentOptions リスト&PaymentOptions>

ユーザーが利用できる代わりの支払い方法。

次の例は、FoodErrorExtension 要素を示しています。

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
  "foodOrderErrors": [
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_1",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 750000000
      }
    },
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_2",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "8"
      }
    }
  ],
  "correctedProposedOrder": {
    "id": "sample_corrected_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "tokenizationParameters": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:publishableKey": "pk_live_stripe_client_key",
          "stripe:version": "2017-04-06"
        }
      },
      "supportedCardNetworks": [
        "AMEX",
        "DISCOVER",
        "MASTERCARD",
        "JCB",
        "VISA"
      ],
      "prepaidCardDisallowed": true
    }
  }
}

食品アイテムの拡張

食品のアドオンを定義します。

次の表に、FoodItemExtension タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

必須。

この広告表示オプションのタイプ。このフィールドは常に "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" に設定されます。

値: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options リスト&FoodItemOption>

オプションには、アドオン アイテムまたはアドオンのセットを含むアドオン グループがあります。

次の例は、FoodItemExtension 要素を示しています。

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
  "options": [
    {
      "id": "sample_addon_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
      "name": "Honey Mustard",
      "price": {
        "currencyCode": "USD"
      },
      "quantity": 1
    },
    {
      "id": "sample_addon_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
      "name": "BBQ Sauce",
      "price": {
        "currencyCode": "USD",
        "nanos": 500000000
      },
      "quantity": 1,
      "subOptions": [
        {
          "id": "10239138",
          "offerId": "912391723",
          "name": "Fries",
          "price": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 230000000
          },
          "quantity": 1
        }
      ]
    }
  ]
}

食品オプション

次の表に、FoodItemOption タイプのプロパティを示します。

プロパティ タイプ 説明
id 文字列

Google が割り当てた一意の ID。FoodOrderError または AsyncOrderUpdateRequest を送信するときに、このフィールドを使用して、同じ特典 ID を持つ商品がカートに複数含まれているかを確認します。

例: 39231093

offerId 文字列

商品アイテムの特典 ID。

例: 912835081

name 文字列

オプション名。

例: Honey Mustard

price Money
note 文字列

オプションに関する注意事項。

quantity Number

項目のオプションの場合は、項目の数。

例: 3

subOptions リスト&FoodItemOption>

オプションのサブオプション(ある場合)。

例: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

次の例は、FoodItemOption 要素を示しています。

例 1

{
  "id": "10293231",
  "offerId": "1918491",
  "name": "Honey Mustard",
  "price": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  },
  "quantity": 5
}

例 2

{
  "id": "123166552",
  "offerId": "912849184",
  "name": "Make It A Meal",
  "price": {
    "currencyCode": "USD",
    "units": "3",
    "nanos": 730000000
  },
  "quantity": 1,
  "subOptions": [
    {
      "id": "10239138",
      "offerId": "912391723",
      "name": "Fries",
      "price": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 230000000
      },
      "quantity": 1
    },
    {
      "id": "57159183",
      "offerId": "81837123",
      "name": "Drink",
      "price": {
        "currencyCode": "USD",
        "units": "3",
        "nanos": 130000000
      },
      "quantity": 1
    }
  ]
}

食品注文エラー

CheckoutResponse のエラーの詳細が含まれます。

次の表に、FoodOrderError タイプのプロパティを示します。

プロパティ タイプ 説明
error Error

必須。

id 文字列

error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND" の場合は必須です。

商品アイテムレベルのエラーの場合、このフィールドは必須です。これは、Google によって割り当てられた、メニュー アイテム用の ADB.id またはアドオン用の FoodItemOption.id です。

description 文字列

エラーの説明。この説明は内部ロギング用で、ユーザーには表示されません。

updatedPrice Money

error = "PRICE_CHANGED" の場合は必須です。

エラーを引き起こしたアイテムの新しい価格。エラーが &PRICE_CHANGED" の場合にのみ必要です。

availableQuantity 整数

error = "INVALID", or "NOT_FOUND" の場合は必須です。

エラーを引き起こした商品アイテムの新しい在庫数。これは、エラーが「INVALID"」または「NOT_FOUND"」の場合にのみ必要です。「INVALID"」と「NOT_FOUND"」は 0 にします。

次の例は、FoodOrderError 要素を示しています。

例 1

{
  "error": "CLOSED",
  "description": "This store is currently reachable. Please try again later."
}

例 2

{
  "error": "PRICE_CHANGED",
  "id": "french_fries",
  "description": "The price has changed.",
  "updatedPrice": {
    "currencyCode": "USD",
    "units": "2",
    "nanos": 750000000
  }
}

FoodOrderExtension

注文に関するフルフィルメント情報が含まれます。

次の表に、FoodOrderExtension タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

この広告表示オプションのタイプ。このフィールドは常に "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" に設定されます。

値: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions リスト&FulfillmentOption>

注文で利用できるフルフィルメント オプションを表します。

optinForRemarketing Boolean

お客様のマーケティング チャネルへのオプトイン リクエスト。デフォルトでは、ユーザーの同意を得ずにマーケティング コンテンツを送信することはできません。optinFor リマーケティングが true の場合、ユーザーを登録できます。optinFor リマーケティングが false であるか存在しない場合、システム上でサブスクリプション ステータスをそのまま保持する必要があります。ユーザーは、Google からオプトアウトできません。マーケティング チャネルで提供される登録解除機能が必要です。このフラグは、SubmitOrderRequestMessage にのみ存在します。

次の例は、FoodOrderExtension 要素を示しています。

例 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2017-07-17T12:30:00Z"
    }
  ]
}

例 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "pickup": {
          "pickupTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2020-08-20T11:41:00Z"
    }
  ],
  "optinForRemarketing": true
}

フルフィルメントオプション

FulfillmentOption オブジェクトは、次の方法で使用できます。
  • Checkout AppRequestSubmit AppRequest では、Cart.extension.fulfillmentPreference はユーザー設定(配送または受け取り)を保存します。購入手続きリクエストが送信される際、価格は常に 0 になります。
  • Checkout AppResponseProposedOrder.extension.availableFulfillmentOptions: 1 つ以上の配信オプションを定義します(現在サポートされているオプションは 1 つだけです)。デフォルトのオプションは、ProposedOrder.otherItemsLineItem として指定します。FulfillmentOptionofferId は、ProposedOrder.otherItems で指定された LineItem の ID と一致する必要があります。

次の表に、FulfillmentOption タイプのプロパティを示します。

プロパティ タイプ 説明
offerId 文字列

このフルフィルメント オプションの一意の識別子(ある場合)。

fulfillmentInfo FulfillmentOptionInfo

必須。

expiresAt ISO タイムスタンプ

このフルフィルメント オプションの有効期限が切れる日時。

price Money

このオプションの費用。

次の例は、FulfillmentOption 要素を示しています。

{
  "offerId": "offer5",
  "fulfillmentInfo": {
    "pickup": {
      "pickupTimeIso8601": "P0M"
    }
  },
  "expiresAt": "2019-05-02T00:00:00-07:00",
  "price": {
    "currencyCode": "USD",
    "units": "5",
    "nanos": 230000000
  }
}

フルフィルメントオプション情報

FulfillmentInfo に関連する情報を定義します。

次の表に、FulfillmentOptionInfo タイプのプロパティを示します。

プロパティ タイプ 説明
次のプロパティ グループのいずれか 1 つは必須です。
delivery グループ 1 DeliveryInfo

存在する場合は、配達注文を示します。

pickup グループ 2 PickupInfo

存在する場合は、テイクアウトの注文を示します。

画像

次の表に、Image タイプのプロパティを示します。

プロパティ タイプ 説明
sourceUrl 文字列

必須。

画像の URL。画像は 72×72 ピクセル以上にする必要があります。216×216 ピクセル以上の画像を使用してください。画像は 6 MB 未満、64 メガピクセル未満である必要があります。

LineItem

カートのコンテンツ(Cart.lineItems)または注文に対する追加料金(ProposedOrder.otherItems)を定義します。

次の表に、LineItem タイプのプロパティを示します。

プロパティ タイプ 説明
id 文字列

type = "REGULAR" の場合は必須です。

カート内の広告申込情報(ProposedOrder.cart.lineItems[0].id)は、注文作成時に Google が作成する一意の ID です。配送料金や税金などのアイテムの追加に使用される ProposedOrder の 広告申込情報(ProposedOrder.otherItems[0].id)の場合、id の値はプロバイダによって定義されます。たとえば、カートには、準備手順が異なる同じものが 2 つ入っています(トッピングが異なる中味のピザを 2 種類など)。この場合、両方のアイテムに同じ base OfferId があります。注文が不承認となったことを示す注文の更新リクエストを送信する場合は、この ID を曖昧さ回避の値として使用してください。つまり、特定のトッピングがなくピザの 1 つが拒否された場合、この ID は参照される商品の順番を Google が決定するのを支援します。otherItems を除き、このフィールドは必須です。

name 文字列

必須。

項目の名前。これはユーザーに表示される文字列であり、可能な限りセンテンス ケースにする必要があります(「配送料」「サービス手数料」など)。このフィールドは、ユーザーの場合 100 文字で切り捨てられます。

type LineItemType

必須。

quantity 整数

type = "REGULAR" の場合は必須です。

含まれているアイテムの数。ProposedOrder.otherItems には適用されません。

description 文字列

項目の説明。

price Price

必須。

商品アイテムの価格。この値は、この広告申込情報のすべての商品またはサービスの合計価格を表します(つまり、アドオンにかかる費用を加算し、数量を掛けます)。たとえば、10 ドルのアイテムの数量が 3 の場合、価格は 30 ドルになります。基本料金が 5 ドルでアドオンが 1 ドルの場合、価格は 6 ドルになります。基本価格が $5 のピザ 2 本(数量 = 2)、それぞれ $1 のアドオンを追加した場合、価格は $12 になります。各 広告申込情報では、価格が「0」であっても価格を指定する必要があります。タイプが DISCOUNT の場合は、値を負の値で指定します(例: "-2")。

subLines リスト&SublineNote>

省略可能で、タイプが「REGULAR」の場合にのみ有効です。ユーザーからの商品に関するメモは、決済リクエストや注文送信リクエストのこのフィールドに送信できます。メモが届いたら販売者が受け取れるようにします。リクエスト内で subLines[0].note として使用されます。これは、このフィールドがリクエストに存在する場合に、このフィールドで提供される唯一の値です。

1 項目以下でなければなりません。

offerId 文字列

type = "REGULAR" の場合は必須です。

アイテムの MenuItem のオファー ID。ProposedOrder.otherItems には適用されません。

extension FoodItemExtension

食品のアドオンを定義します。

次の例は、LineItem 要素を示しています。

例 1

{
  "name": "New customer discount",
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "-5",
      "nanos": -500000000
    }
  },
  "type": "DISCOUNT"
}

例 2

{
  "name": "Pita Chips",
  "type": "REGULAR",
  "id": "sample_item_offer_id_1",
  "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
  "quantity": 1,
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "2",
      "nanos": 750000000
    }
  },
  "subLines": [
    {
      "note": "Notes for this item."
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
    "options": [
      {
        "id": "sample_addon_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
        "name": "Honey Mustard",
        "price": {
          "currencyCode": "USD"
        },
        "quantity": 1
      },
      {
        "id": "sample_addon_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
        "name": "BBQ Sauce",
        "price": {
          "currencyCode": "USD",
          "nanos": 500000000
        },
        "quantity": 1
      }
    ]
  }
}

LineItemType

LineItemType 型には次の値があります。

  • REGULAR: 商品広告申込情報。Cart.lineItems に適用されます。
  • TAX: 税金明細。ProposedOrder.otherItems に適用されます。
  • DISCOUNT: 割引の広告申込情報。価格は負の値にする必要があります。ProposedOrder.otherItems に適用されます。
  • GRATUITY: 謝礼の項目。通常は、ユーザーが選択したヒントについて、SubmitOrderRequestMessage 用に予約されています。ProposedOrder.otherItems に適用されます。
  • DELIVERY: 配信広告申込情報。ProposedOrder.otherItems に適用されます。
  • SUBTOTAL: 小計広告申込情報。ProposedOrder.otherItems に適用されます。
  • FEE: 他のタイプに含まれない広告申込情報。ProposedOrder.otherItems に適用されます。

場所

料理を注文する住所を指定します。Location タイプは Cart で使用され、配達先のみが示されます。ユーザーが注文を確定した場合、確定した店舗は TransactionDecisionValue にも表示されます。受け取りを指定する注文の場合、場所はまったく含まれません(空の場所も含む)。

次の表に、Location タイプのプロパティを示します。

プロパティ タイプ 説明
coordinates Coordinates
formattedAddress 文字列

店舗の住所。

例: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode 文字列

例: 90210

city 文字列

市区町村の名前です。

例: Los Angeles

notes 文字列

ゲートコードなど、場所に関するメモ。500 文字以内で指定してください。

例: Gate code is #111

次の例は、Location 要素を示しています。

{
  "coordinates": {
    "latitude": 37.788783,
    "longitude": -122.41384
  },
  "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
  "zipCode": "94043",
  "city": "Mountain View",
  "postalAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  },
  "notes": "Gate code is #111"
}

販売者

次の表に、Merchant タイプのプロパティを示します。

プロパティ タイプ 説明
id 文字列

販売者の ID。指定すると、レストラン フィードの レストラン.@id と一致します。

例: https://www.exampleprovider.com/merchant/id1

name 文字列

必須。

ユーザーに表示される販売者の表示名。

例: Falafel Bite

次の例は、Merchant 要素を示しています。

{
  "id": "https://www.exampleprovider.com/merchant/id1",
  "name": "Falafel Bite"
}

金額

次の表に、Money タイプのプロパティを示します。

プロパティ タイプ 説明
currencyCode 文字列

必須。

ISO 4217 形式の 3 文字の通貨コード。

例: USD

units 文字列

金額の整数部分の単位です。たとえば、currencyCode が "USD" の場合、"1" 単位は 1 米ドルです。

例: 36

nanos 整数

金額のナノ(10^-9)単位。この値は -999,999,999 ~+999,999,999 の範囲で指定します。次のルールを使用します。単位が正の場合、ナノは正またはゼロでなければなりません。単位がゼロの場合、ナノは正、0、または負にできます。単位が負の場合、ナノは負またはゼロでなければなりません。たとえば、$-1.75 は単位 = -1、ナノ = -750,000,000 と表されます。

例: 730000000

次の例は、Money 要素を示しています。

例 1

{
  "currencyCode": "USD",
  "units": "36",
  "nanos": 730000000
}

例 2

{
  "currencyCode": "EUR",
  "units": "10"
}

注文

最終注文(税金、手数料、配送料、最終的な支払い内容を含む)が含まれます。このオブジェクトは、Submit AppRequest 内のアクションによって受信されます。

次の表に、Order タイプのプロパティを示します。

プロパティ タイプ 説明
finalOrder ProposedOrder

必須。

注文を引き起こした注文の提案。

googleOrderId 文字列

必須。

Google が割り当てた注文 ID。この ID は、注文のライフサイクル全体で変更できません。この ID はエンドユーザーには表示されません。

orderDate ISO タイムスタンプ

必須。

この注文が作成された日時。

paymentInfo PaymentInfo

必須。

この注文の支払いに対応する支払い情報。

次の例は、Order 要素を示しています。

{
  "finalOrder": {
    "cart": {
      "notes": "Guest prefers their food to be hot when it is delivered.",
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Cucina Venti"
      },
      "lineItems": [
        {
          "name": "Sizzling Prawns Dinner",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "16",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          }
        },
        "contact": {
          "displayName": "Lovefood Ordering",
          "email": "ilovefood@example.com",
          "phoneNumber": "+16501234567"
        }
      }
    },
    "otherItems": [
      {
        "name": "Service fee",
        "type": "FEE",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        }
      },
      {
        "name": "Tax",
        "type": "TAX",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 370000000
          }
        }
      },
      {
        "name": "Tip",
        "type": "GRATUITY",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 590000000
          }
        }
      }
    ],
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "23",
        "nanos": 710000000
      }
    },
    "id": "sample_final_order_id",
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ],
      "optinForRemarketing": true
    }
  },
  "googleOrderId": "sample_google_order_id",
  "orderDate": "2017-07-17T12:00:00Z",
  "paymentInfo": {
    "displayName": "Visa\u2006****\u20061111",
    "googleProvidedPaymentInstrument": {
      "instrumentToken": "abcd"
    },
    "paymentType": "PAYMENT_CARD"
  }
}

OrderUpdate

次の表に、AppResponse に含まれる OrderUpdate タイプのフィールドを示します。

次の表に、OrderUpdate タイプのプロパティを示します。

プロパティ タイプ 説明
actionOrderId 文字列

必須。

インテグレーターのシステムで注文の一意の ID です。この更新が送信された注文の識別に使用されます。OrderUpdate で「CREATED」の注文の領収書.user_visible_order_id が 1 回以上指定されていない場合、この ID は Google 注文カードに表示される入力済みユーザーに表示される ID になります。

orderState OrderState

必須。

注文の新しい状態。

lineItemUpdates Map<StringLineItemUpdate>
updateTime ISO タイムスタンプ

必須。

注文が更新された時刻。

orderManagementActions リスト&OrderManagementAction>

注文後のサポートへの問い合わせや注文詳細の表示などのアクション。

アイテム数は 16 にする必要があります。

rejectionInfo RejectionInfo

orderState.state = "REJECTED" の場合は必須です。

cancellationInfo CancellationInfo

orderState.state = "CANCELLED" の場合は必須です。

inTransitInfo InTransitInfo

このフィールドは非推奨になりました。

fulfillmentInfo FulfillmentInfo

このフィールドは非推奨になりました。

receipt Receipt

orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP" の場合は必須です。

領収書にユーザーに表示される注文 ID を入力します。

totalPrice Price

注文の合計金額。

infoExtension FoodOrderUpdateExtension

配達予定日や受け取り予定日など、注文の更新に関する詳細情報を定義します。

次の例は、OrderUpdate 要素を示しています。

{
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "41",
      "nanos": 600000000
    }
  },
  "lineItemUpdates": {
    "sample_item_id_1": {
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "reason": "This item has an updated price."
    }
  },
  "receipt": {
    "userVisibleOrderId": "userVisibleId1234"
  },
  "updateTime": "2017-07-17T12:00:00Z",
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+16505554679"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
  }
}

PickupInfo

次の表に、PickupInfo タイプのプロパティを示します。

プロパティ タイプ 説明
pickupTimeIso8601 文字列

受け取り時間の目安(ISO 8601 タイムスタンプ形式): {year}~{month}~{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" または期間の形式: "P(n)Y(n)M(n)DT(n)H(n)M.n(S)S&quotたとえば、PT90M は 90 分の期間を表します。デフォルト値の「PT0M」は、任意の受け取り時間が最も早いことを示します。参照: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations購入手続きのレスポンスの際に予想受け取り時間を更新する場合に使用します。

例: PT90M

次の例は、PickupInfo 要素を示しています。

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

次の表に、PostalAddress タイプのプロパティを示します。

プロパティ タイプ 説明
regionCode 文字列

必須。

2 文字の国コード。

例: US

postalCode 文字列

郵便番号です。

例: 94043

administrativeArea 文字列

その国 / 地域の郵便住所に使用される最上位の行政区域。州、省、都道府県などが該当します。

例: CA

locality 文字列

このビジネスの市区町村。地域区分が明確に定義されていない地域や、この体系が当てはまらない地域では、このフィールドではなく、addressLines フィールドを使用します。

例: Mountain View

addressLines リスト&文字列>

番地を指定するための 1 行以上の行です。地域が不明確になる可能性があるため、このフィールドを変更しないでください。

例: [ "1350 Charleston Road" ]

recipients リスト&文字列>

注文の受取人のリスト。このフィールドは、billingAddress でのみ使用できます。

次の例は、PostalAddress 要素を示しています。

{
  "regionCode": "US",
  "postalCode": "94043",
  "administrativeArea": "CA",
  "locality": "Mountain View",
  "addressLines": [
    "1350 Charleston Road"
  ]
}

Price

次の表に、Price タイプのプロパティを示します。

プロパティ タイプ 説明
type Enum [ "ESTIMATE", "ACTUAL" ]

必須。

プロモーション クーポンコード。

amount Money

必須。

プロモーション

次の表に、Promotion タイプのプロパティを示します。

プロパティ タイプ 説明
coupon 文字列

必須。

プロモーション クーポンコード。

ProposedOrder

次の表に、ProposedOrder タイプのプロパティを示します。

プロパティ タイプ 説明
id 文字列

注文注文の任意の ID。

cart Cart

必須。

ユーザーの項目。

otherItems リスト&LineItem>

プロバイダが追加した商品(配送料、その他の手数料、税金など)。otherItem には、ユーザーが追加した謝礼や割引が含まれる場合もあります。

10 アイテム以下でなければなりません。

image Image

提案された注文に関連付けられている画像。

totalPrice Price

必須。

提案された注文の合計金額。

extension FoodOrderExtension

必須。

料理の注文のフルフィルメント情報を定義します。

disclaimers リスト&Disclaimer>

注文前に UI に表示される免責条項メッセージに対応します。

次の例は、ProposedOrder 要素を示しています。

{
  "id": "sample_proposed_order_id_1",
  "otherItems": [
    {
      "name": "New customer discount",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "-5",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT"
    },
    {
      "name": "Delivery fee",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "type": "DELIVERY"
    },
    {
      "name": "Tax",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 500000000
        }
      },
      "type": "TAX"
    }
  ],
  "cart": {
    "merchant": {
      "id": "https://www.exampleprovider.com/merchant/id1",
      "name": "Falafel Bite"
    },
    "lineItems": [
      {
        "name": "Pita Chips",
        "type": "REGULAR",
        "id": "sample_item_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 750000000
          }
        },
        "subLines": [
          {
            "note": "Notes for this item."
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
          "options": [
            {
              "id": "sample_addon_offer_id_1",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
              "name": "Honey Mustard",
              "price": {
                "currencyCode": "USD"
              },
              "quantity": 1
            },
            {
              "id": "sample_addon_offer_id_2",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
              "name": "BBQ Sauce",
              "price": {
                "currencyCode": "USD",
                "nanos": 500000000
              },
              "quantity": 1
            }
          ]
        }
      },
      {
        "name": "Chicken Shwarma Wrap",
        "type": "REGULAR",
        "id": "sample_item_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "8"
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Greek Salad",
        "type": "REGULAR",
        "id": "sample_item_offer_id_3",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "9",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Prawns Biryani",
        "type": "REGULAR",
        "id": "sample_item_offer_id_4",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "15",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      }
    ],
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
      "fulfillmentPreference": {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P90M"
          }
        }
      },
      "location": {
        "coordinates": {
          "latitude": 37.788783,
          "longitude": -122.41384
        },
        "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1350 Charleston Road"
          ]
        },
        "notes": "Gate code is #111"
      }
    }
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "36",
      "nanos": 730000000
    }
  },
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
    "availableFulfillmentOptions": [
      {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P0M"
          }
        },
        "expiresAt": "2017-07-17T12:30:00Z"
      }
    ]
  }
}

サブライン メモ

次の表に、SublineNote タイプのプロパティを示します。

プロパティ タイプ 説明
note 文字列

必須。

タイムスタンプ

日付と時刻。次の形式で指定します。 "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Order が含まれます。

次の表に、TransactionDecisionValue タイプのプロパティを示します。

プロパティ タイプ 説明
order Order

必須。

注文され、支払いの詳細が記載されている。

次の例は、TransactionDecisionValue 要素を示しています。

{
  "order": {
    "finalOrder": {
      "cart": {
        "notes": "Guest prefers their food to be hot when it is delivered.",
        "merchant": {
          "id": "https://www.exampleprovider.com/merchant/id1",
          "name": "Cucina Venti"
        },
        "lineItems": [
          {
            "name": "Sizzling Prawns Dinner",
            "type": "REGULAR",
            "id": "sample_item_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
            "quantity": 1,
            "price": {
              "type": "ESTIMATE",
              "amount": {
                "currencyCode": "USD",
                "units": "16",
                "nanos": 750000000
              }
            },
            "subLines": [
              {
                "note": "Notes for this item."
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
              "options": [
                {
                  "id": "sample_addon_offer_id_1",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                  "name": "Honey Mustard",
                  "price": {
                    "currencyCode": "USD"
                  },
                  "quantity": 1
                },
                {
                  "id": "sample_addon_offer_id_2",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                  "name": "BBQ Sauce",
                  "price": {
                    "currencyCode": "USD",
                    "nanos": 500000000
                  },
                  "quantity": 1
                }
              ]
            }
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
          "fulfillmentPreference": {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            }
          },
          "contact": {
            "displayName": "Lovefood Ordering",
            "email": "ilovefood@example.com",
            "phoneNumber": "+16501234567"
          }
        }
      },
      "otherItems": [
        {
          "name": "Service fee",
          "type": "FEE",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 500000000
            }
          }
        },
        {
          "name": "Tax",
          "type": "TAX",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "1",
              "nanos": 370000000
            }
          }
        },
        {
          "name": "Tip",
          "type": "GRATUITY",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 590000000
            }
          }
        }
      ],
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "23",
          "nanos": 710000000
        }
      },
      "id": "sample_final_order_id",
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
        "availableFulfillmentOptions": [
          {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            },
            "expiresAt": "2017-07-17T12:30:00Z"
          }
        ],
        "optinForRemarketing": true
      }
    },
    "googleOrderId": "sample_google_order_id",
    "orderDate": "2017-07-17T12:00:00Z",
    "paymentInfo": {
      "displayName": "Visa\u2006****\u20061111",
      "googleProvidedPaymentInstrument": {
        "instrumentToken": "abcd"
      },
      "paymentType": "PAYMENT_CARD"
    }
  }
}

フルフィルメント リクエスト

AppRequest

次の表に、AppRequest タイプのプロパティを示します。

プロパティ タイプ 説明
isInSandbox Boolean

以降のトランザクションがサンドボックス環境で実行されるかどうかを示します。

conversation Conversation
inputs リスト&Input>

必須。

カートの購入手続きで予想される引数が含まれています。

1 つの商品アイテムが必要です。

次の例は、AppRequest 要素を示しています。

例 1

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "subLines": [
                  {
                    "note": "Notes for this item."
                  }
                ],
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                  "options": [
                    {
                      "id": "sample_addon_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "name": "Honey Mustard",
                      "price": {
                        "currencyCode": "USD"
                      },
                      "quantity": 1
                    },
                    {
                      "id": "sample_addon_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                      "name": "BBQ Sauce",
                      "price": {
                        "currencyCode": "USD",
                        "nanos": 500000000
                      },
                      "quantity": 1
                    }
                  ]
                }
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    "deliveryTimeIso8601": "P0M"
                  }
                }
              },
              "location": {
                "coordinates": {
                  "latitude": 37.788783,
                  "longitude": -122.41384
                },
                "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                "zipCode": "94043",
                "city": "Mountain View",
                "postalAddress": {
                  "regionCode": "US",
                  "postalCode": "94043",
                  "administrativeArea": "CA",
                  "locality": "Mountain View",
                  "addressLines": [
                    "1350 Charleston Road"
                  ]
                },
                "notes": "Gate code is #111"
              }
            }
          }
        }
      ]
    }
  ]
}

例 2

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Lovefood Ordering",
                      "email": "ilovefood@example.com",
                      "phoneNumber": "+16501234567"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Service fee",
                    "type": "FEE",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "2",
                        "nanos": 590000000
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "23",
                    "nanos": 710000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ],
                  "optinForRemarketing": true
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                "displayName": "Visa\u2006****\u20061111",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "abcd"
                },
                "paymentType": "PAYMENT_CARD"
              }
            }
          }
        }
      ]
    }
  ]
}

CheckoutRequestMessage

CheckoutRequestMessage は、actions.foodordering.intent.CHECKOUT インテントを持つ AppRequest です。

SendOrderRequestMessage

SubmitOrderRequestMessage は、actions.foodordering.intent.TRANSACTION_DECISION インテントを持つ AppRequest です。

会話

Conversation は 1 つのセッションにのみ一意です。必要に応じて、これを使用して複数の Checkout アクションと SubmitOrder アクションをリンクできます。

次の表に、Conversation タイプのプロパティを示します。

プロパティ タイプ 説明
conversationId 文字列

必須。

会話の一意の ID。

次の例は、Conversation 要素を示しています。

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Input

カートの購入手続きで予想される引数。

次の表に、Input タイプのプロパティを示します。

プロパティ タイプ 説明
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

必須。

決済リクエスト メッセージの場合は &actions.foodordering.intent.CHECKOUT"、注文リクエスト メッセージの送信の場合は &actions.intent.TRANSACTION_DECISION" に設定します。

arguments リスト&Argument>

必須。

購入手続きを行うカート、または注文するカートが含まれます。

1 つの商品アイテムが必要です。

引数

ユーザーがチェックアウトしようとしている食品についての詳細を示します。購入手続きには期間延長のみが適用されます。注文の送信では、transactionDecisionValue のみが適用されます。

次の表に、Argument タイプのプロパティを示します。

プロパティ タイプ 説明
次のプロパティ グループのいずれか 1 つは必須です。
extension グループ 1 Cart

ユーザーがチェックアウトしようとしている食品の詳細。

transactionDecisionValue グループ 2 TransactionDecisionValue

発注される注文と支払いの詳細が含まれます。

フルフィルメントの応答

AppResponse

次の表に、AppResponse タイプのプロパティを示します。

プロパティ タイプ 説明
expectUserResponse 一貫性

false に設定します。

値: False

finalResponse FinalResponse

必須。

カートの購入手続きに対するレスポンスが含まれています。

次の例は、AppResponse 要素を示しています。

例 1

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "otherItems": [
                  {
                    "name": "New customer discount",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": -500000000
                      }
                    },
                    "type": "DISCOUNT"
                  },
                  {
                    "name": "Delivery fee",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 500000000
                      }
                    },
                    "type": "TAX"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    },
                    {
                      "name": "Chicken Shwarma Wrap",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "8"
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Greek Salad",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_3",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_4",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "15",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P90M"
                        }
                      }
                    },
                    "location": {
                      "coordinates": {
                        "latitude": 37.788783,
                        "longitude": -122.41384
                      },
                      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                      "zipCode": "94043",
                      "city": "Mountain View",
                      "postalAddress": {
                        "regionCode": "US",
                        "postalCode": "94043",
                        "administrativeArea": "CA",
                        "locality": "Mountain View",
                        "addressLines": [
                          "1350 Charleston Road"
                        ]
                      },
                      "notes": "Gate code is #111"
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "36",
                    "nanos": 730000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
                }
              },
              "additionalPaymentOptions": [
                {
                  "actionProvidedOptions": {
                    "paymentType": "ON_FULFILLMENT",
                    "displayName": "Cash on delivery."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

例 2

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Provider confirmed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+18005554679"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                }
              ],
              "infoExtension": {
                "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
              }
            }
          }
        }
      ]
    }
  }
}

例 3

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "CLOSED",
                  "description": "The restaurant is closed."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

例 4

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "OWG_ACTIVE_CODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "OWG_ACTIVE_CODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "14",
                    "nanos": 860000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-04-10T01:20:08.471Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "pk_live_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true,
                  "billingAddressRequired": true
                }
              }
            }
          }
        }
      ]
    }
  }
}

購入手続きレスポンス メッセージ

CheckoutResponseMessage は、StructuredResponsecheckoutResponse または error が配置された AppResponse です。

SubmitOrderResponseMessage(注文レスポンス メッセージ)

SubmitOrderResponseMessage は、StructuredResponseorderUpdate が含まれる AppResponse です。

FinalResponse

カートのご購入手続き、SubmitOrderRequestMessage に対するレスポンス。

次の表に、FinalResponse タイプのプロパティを示します。

プロパティ タイプ 説明
richResponse RichResponse

必須。

CheckoutRequestMessage または SubmitOrderRequestMessage に対するレスポンスが含まれます。

購入手続きのレスポンス

次の表に、CheckoutResponse タイプのプロパティを示します。

プロパティ タイプ 説明
proposedOrder ProposedOrder

必須。

トランザクションに使用する注文の提案。

paymentOptions PaymentOptions

必須。

ユーザーに対して選択されたデフォルトの支払い方法。

additionalPaymentOptions リスト&PaymentOptions>

ユーザーが利用できる代わりの支払い方法。

次の例は、CheckoutResponse 要素を示しています。

{
  "proposedOrder": {
    "id": "sample_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
    }
  },
  "additionalPaymentOptions": [
    {
      "actionProvidedOptions": {
        "paymentType": "ON_FULFILLMENT",
        "displayName": "Cash on delivery."
      }
    }
  ]
}

項目

カートの決済または SubmitOrderRequestMessage に対するレスポンスが含まれます。

次の表に、Item タイプのプロパティを示します。

プロパティ タイプ 説明
structuredResponse StructuredResponse

必須。

RichResponse

カートの購入手続きに対するレスポンスが含まれています。

次の表に、RichResponse タイプのプロパティを示します。

プロパティ タイプ 説明
items リスト&Item>

必須。

1 つの商品アイテムが必要です。

StructuredResponse

CheckoutResponseMessage の場合、次のいずれかになります。checkoutResponse。購入手続きが成功したことを示します。または FoodErrorExtension: 購入手続きの失敗を示します。レスポンスには、修正された ProposedOrder と PaymentOptions が含まれるか、PaymentOptions が指定されていないエラー メッセージがレスポンスに含まれます。SubmitOrderResponseMessage の場合、orderUpdate のみが適用されます。

次の表に、StructuredResponse タイプのプロパティを示します。

プロパティ タイプ 説明
次のプロパティ グループのいずれか 1 つは必須です。
checkoutResponse グループ 1 CheckoutResponse

決済済みの商品に加えて、税金と割引が記載されます。

error グループ 2 FoodErrorExtension

カートの商品にエラーがあります。エラーの性質に応じて、このプロパティには修正された ProposedOrder と PaymentOptions が含まれるか、PaymentOptions が指定されていないエラー メッセージだけが含まれます。

orderUpdate グループ 3 OrderUpdate

非同期の注文更新

このセクションでは、一般的な料理注文の組み込みアクションの操作のリクエストとレスポンスを構成する大まかなタイプについて説明します。

AsyncOrderUpdateRequestMessage

注文の送信と確認が行われた後、変更についてユーザーに通知します。 たとえば、注文が配送中であることや価格が変更されたことをユーザーに知らせることができます。詳細については、次をご覧ください。

次の表に、AsyncOrderUpdateRequestMessage タイプのプロパティを示します。

プロパティ タイプ 説明
isInSandbox Boolean

このアップデートが送信された注文がサンドボックスでの支払いであることを示します。

customPushMessage CustomPushMessage

必須。

リクエストの OrderUpdate が含まれます。

次の例は、AsyncOrderUpdateRequestMessage 要素を示しています。

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

AsyncOrderUpdateResponseMessage

AsyncOrderUpdateRequestMessage が正常に送信されると、Google から HTTP 200 ステータスと空の本文が返されます。更新できなかった場合、Google は注文の更新が失敗した理由の詳細を返します。

注文の更新の種類

ボタン

ユーザー操作を追加するために追加するユーザー インターフェース要素を定義します。

次の表に、Button タイプのプロパティを示します。

プロパティ タイプ 説明
title 文字列

必須。

表示ラベル。適切に表示されるよう、全角 15(半角 30)文字以内で表記してください。

例: Contact us

openUrlAction OpenUrlAction

必須。

次の例は、Button 要素を示しています。

{
  "title": "Send us feedback",
  "openUrlAction": {
    "url": "mailto:person@example.com"
  }
}

CancellationInfo

次の表に、CancellationInfo タイプのプロパティを示します。

プロパティ タイプ 説明
reason 文字列

必須。

OrderState.state が &Cancelt;CANCELLED" の場合に拒否される表示テキストの理由。

例: Restaurant closed

次の例は、CancellationInfo 要素を示しています。

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

このタイプのサービスでは、注文した商品が配送されるまでの時間、または受け取り可能になるまでの期間がユーザーに提示されます。情報が利用可能である場合、または最後に送信されてから変更された場合はいつでも、この拡張機能を OrderUpdate で送信します。

ユーザーの期待に沿うように、フルフィルメント間隔を控えめに見積もって提示します。たとえば、注文が今日 13:00 に配達されると予想される場合は、交通状況の変動(今日 12:45 ~ 13:15 など)に合わせて、確認する間隔を送信する必要があります。

ISO 8601 の期間またはタイムスタンプは、OrderUpdateupdateTime(実質的には「現在」)から updateTimeduration を足す期間を表します。このフォーマットは、「現在」かつ当然の期待事項である場合を除き、使用しないでください。

ISO 8601 の間隔は、間隔の開始から終了までの間隔を意味します。

次の表に、FoodOrderUpdateExtension タイプのプロパティを示します。

プロパティ タイプ 説明
@type 一貫性

この広告表示オプションのタイプ。このフィールドは常に "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension" に設定されます。

値: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 文字列

注文された商品が配送される、または受け取りの準備ができるまでにかかる時間の目安。文字列は ISO 8601 形式にして、単一の固定時間ではなく間隔に対応する必要があります。間隔、期間、日付/時刻などの規則を使用できます。このフィールドは、情報が利用可能になったときや、到着の遅れや遅延などの変更があった場合に、SubmitOrderResponseMessage または AsyncOrderUpdateRequestMessage で送信されます。

例: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors リスト&FoodOrderError>

注文後に発生したエラーについて説明します。カートごと、または商品アイテムごとに 1 件のエラーを推奨します。RejectedionInfo の対象になっていないエラーには、FoodOrderUpdateExtension.FoodOrderErrors を使用します。

1 個以上の項目が必要です。

次の例は、FoodOrderUpdateExtension 要素を示しています。

例 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
}

例 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "foodOrderErrors": [
    {
      "error": "NO_CAPACITY",
      "description": "Sorry, the restaurant cannot take your order right now."
    }
  ]
}

FulfillmentInfo

次の表に、FulfillmentInfo タイプのプロパティを示します。

プロパティ タイプ 説明
次のプロパティ グループのいずれか 1 つは必須です。
deliveryTime グループ 1 ISO タイムスタンプ

FoodOrderingUpdateExtension メッセージで見積もり FulfillmentTimeIso8601 を使用する

pickupTime グループ 2 ISO タイムスタンプ

FoodOrderingUpdateExtension メッセージで見積もり FulfillmentTimeIso8601 を使用する

次の例は、FulfillmentInfo 要素を示しています。

例 1

{
  "deliveryTime": "2017-05-10T02:36:38.803Z"
}

例 2

{
  "pickupTime": "2019-12-26T07:24:27.803Z"
}

InTransitInfo

次の表に、InTransitInfo タイプのプロパティを示します。

プロパティ タイプ 説明
updatedTime ISO タイムスタンプ

FoodOrderingUpdateExtension メッセージで見積もり FulfillmentTimeIso8601 を使用する

次の例は、InTransitInfo 要素を示しています。

{
  "updatedTime": "2017-05-10T02:36:38.803Z"
}

LineItemUpdate

次の表に、LineItemUpdate タイプのプロパティを示します。

プロパティ タイプ 説明
orderState OrderState
price Price
reason 文字列

変更の理由。価格変更の場合は必須。

次の例は、LineItemUpdate 要素を示しています。

{
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "5",
      "nanos": 500000000
    }
  },
  "reason": "Menu updated prices."
}

OpenUrlAction

次の表に、OpenUrlAction タイプのプロパティを示します。

プロパティ タイプ 説明
url 文字列

必須。

ボタンをクリックまたはタップしてトリガーされるアクション。適用可能な接頭辞のリストは、orderManagementActionType によって異なります。"EMAIL": プレフィックスは "mailto" でなければなりません。"CALL": プレフィックスは &telt;tel" でなければなりません。"CUSTOMER_SERVICE": プレフィックスは "mailto"、"tel"、"http"、"https" である必要があります。

例: https://www.google.com

注文管理アクション

注文管理では、ユーザーは注文後のサポートを受けることができます。送信注文 AppResponse 内の各 OrderUpdate で送信する必要があります。その後の AsyncOrderUpdateRequestMessage の注文管理アクションは、状態によって異なります。

たとえば、「CREATED」状態では、CUSTOMER_SERVICE はカスタマー サポートの電話番号を参照する場合があります。続いて、CONCONMED 状態で、顧客からの最適な問い合わせ先として、CUSTOMER_SERVICE がレストランの電話番号に変わる場合があります。同様に、注文が「FULFILLED」になると、CUSTOMER_SERVICE はサポートのメールアドレスを参照できます。

次の表に、OrderManagementAction タイプのプロパティを示します。

プロパティ タイプ 説明
type OrderManagementActionType

必須。

button Button

必須。

次の例は、OrderManagementAction 要素を示しています。

例 1

{
  "type": "CUSTOMER_SERVICE",
  "button": {
    "title": "Contact customer service",
    "openUrlAction": {
      "url": "mailto:support@example.com"
    }
  }
}

例 2

{
  "type": "EMAIL",
  "button": {
    "title": "Email restaurant",
    "openUrlAction": {
      "url": "mailto:person@example.com"
    }
  }
}

OrderManagementActionType

OrderManagementAction に関連するタイプを定義します。

OrderManagementActionType 型には次の値があります。

  • CUSTOMER_SERVICE: 注文確認ページに表示するカスタマー サービスのメールアドレスや連絡先番号。これは必須項目です。openUrlAction.url プレフィックスは、"mailto"、"tel"、"http"、または "https" にする必要があります。
  • EMAIL: 注文の詳細ページでのみメール アクションを実行します。openUrlAction.url プレフィックスは "mailto" にする必要があります。
  • CALL_DRIVER: 注文の詳細ページでのみ呼び出すアクション。openUrlAction.url プレフィックスは &telt;tel" にする必要があります。
  • CALL_RESTAURANT: 注文の詳細ページでのみ呼び出すアクション。openUrlAction.url プレフィックスは &telt;tel" にする必要があります。

OrderState

注文の現在の状態。OrderState の各 state 値は、myaccount.google.com の購入ステータスにも対応しています。

次の表に、OrderState タイプのプロパティを示します。

プロパティ タイプ 説明
state OrderStateEnum

必須。

label 文字列

必須。

状態に関するユーザーに表示される表示文字列。文頭を大文字にします(アルファベットの場合)。

例: Your order has been received

次の例は、OrderState 要素を示しています。

{
  "state": "CONFIRMED",
  "label": "Provider confirmed"
}

OrderStateEnum

OrderState に関連するタイプを定義します。

OrderStateEnum 型には次の値があります。

  • CREATED: インテグレーターによって作成され、プロバイダによる確認を待機している注文です。「注文済み」購入ステータスに対応します。
  • CONFIRMED: 注文がプロバイダによって確認され、有効です。「承認済み」購入ステータスに対応します。
  • REJECTED: インテグレーターまたはプロバイダによって注文が拒否されました。「不承認」購入ステータスに対応します。
  • CANCELLED: ユーザーが注文をキャンセルしました。「キャンセル済み」の購入ステータスに対応しています。
  • IN_PREPARATION: 食品の準備中です。「ステータス不明」は、購入ステータスに相当します。
  • READY_FOR_PICKUP: 料理を注文する準備ができました。「受け取り可」および購入ステータスに対応しています。
  • IN_TRANSIT: 注文は配送中です。「処理中」は、購入ステータスに相当します。
  • FULFILLED: ユーザーが注文したものを受け取りました。「受け取り済み」の購入ステータスに対応しています。

領収書

この種類を送信オーダー AppResponse で送信します。ここで、OrderState は「CONFIRMED」または「FULFILLED"」または「IN_TRANSIT"」です。userVisibleOrderId が利用可能になったときに領収書を送信します。今後のアップデートでは、領収書の送信を続ける必要はありません。

次の表に、Receipt タイプのプロパティを示します。

プロパティ タイプ 説明
userVisibleOrderId 文字列

必須。

注文が CONFIRMED または IN_TRANSIT" または FULFILLED" の場合は必須。このフィールドは、この注文のユーザー向けの単一の ID(通常はレストランの注文 ID)で、インテグレーターの領収書と Google 注文カードの両方に表示されます。ユーザーは、この ID を使用して、カスタマー サービスをプロバイダやインテグレータに注文できる必要があります。この ID を指定する必要があるのは、任意の OrderUpdate で 1 回だけです。提供されるまで、actionOrderId は userVisibleOrderId です。たとえば、レストランが注文を確認しない限り、userVisibleOrderId はありません。確認したら、OrderUpdate と Receipt を使用して AsyncOrderUpdateRequestMessage を送信する必要があります。

次の例は、Receipt 要素を示しています。

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

次の表に、RejectionInfo タイプのプロパティを示します。

プロパティ タイプ 説明
type RejectionType

必須。

reason 文字列

内部ロギングに使用された拒否の理由。このフィールドはユーザーに表示されません。

次の例は、RejectionInfo 要素を示しています。

{
  "type": "PAYMENT_DECLINED",
  "reason": "There is an issue with payment processing."
}

RejectionType

RejectionType 型には次の値があります。

  • INELIGIBLE: ポリシーまたはリスク関連の問題により、お客様が対象外です。
  • PAYMENT_DECLINED: 支払い処理で問題が発生しています。
  • UNAVAILABLE_SLOT: DeliveryInfo または PickupInfo で指定されている注文では、注文を完了できません。
  • PROMO_NOT_APPLICABLE: プロモーションに問題があります。
  • UNKNOWN: その他の理由。

支払い関連のタイプ

このセクションでは、料理の注文処理で使用される支払い関連のタイプについて説明します。

ActionProvidedPaymentOptions

アクションが提供するお支払い方法の要件。

次の表に、ActionProvidedPaymentOptions タイプのプロパティを示します。

プロパティ タイプ 説明
paymentType PaymentType

必須。

displayName 文字列

必須。

領収書に表示される支払い方法の名前。

例: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

paymentType "ON_FULFILLMENT" の追加データ。たとえば、この項目を使用して、現金またはカードがフルフィルメントでサポートされているかどうかを指定できます。

次の例は、ActionProvidedPaymentOptions 要素を示しています。

{
  "paymentType": "ON_FULFILLMENT",
  "displayName": "Pay when you get your food.",
  "onFulfillmentPaymentData": {
    "supportedPaymentOptions": [
      "Cash",
      "Card"
    ]
  }
}

AllowedAuthMethods

AllowedAuthMethods 型には次の値があります。

  • PAN_ONLY: ユーザーの Google アカウントに保存されている支払いカードに関連付けられた認証方法。返される支払いデータには、有効期限月と有効期限の個人アカウント番号(PAN)が含まれます。

許可されるカード ネットワーク

AllowedCardNetworks 型には次の値があります。

  • AMEX
  • DISCOVER
  • INTERAC
  • JCB
  • MASTERCARD
  • VISA

CardParameters

このオブジェクトを使用して、Google Pay API に対するサイトのサポートを設定します。

次の表に、CardParameters タイプのプロパティを示します。

プロパティ タイプ 説明
allowedAuthMethods リスト&Const>

必須。

カード トランザクションの認証でサポートされているフィールド。

1 個以上の項目が必要です。

allowedCardNetworks リスト&AllowedCardNetworks>

必須。

サポートしている 1 つ以上のカード ネットワーク。Google Pay API でもサポートされています。

1 個以上の項目が必要です。

billingAddressRequired Boolean

請求先住所が必要な場合は、true に設定します。請求先住所は、取引の処理に必要な場合にのみリクエストしてください。データ リクエストが増えると購入手続きのプロセスが摩擦し、コンバージョン率の低下につながることがあります。

cvcRequired Boolean

TimesofMoney を使用する場合は true に設定し、他のすべての支払いプロセッサの場合は false に設定します。

次の例は、CardParameters 要素を示しています。

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": false,
  "cvcRequired": false
}

GoogleProvidedPaymentInstrument

次の表に、GoogleProvidedPaymentInstrument タイプのプロパティを示します。

プロパティ タイプ 説明
instrumentToken 文字列

必須。

以前に指定した GoogleProvidedPaymentOptions に従って、参加する Google Pay プロセッサを使用してユーザーに請求するための支払いトークンを含む Base64 でエンコードされた文字列。

billingAddress PostalAddress

お支払いの請求先住所。

次の例は、GoogleProvidedPaymentInstrument 要素を示しています。

{
  "instrumentToken": "abcd",
  "billingAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  }
}

GoogleProvidedPaymentOptions

Google によって提供される支払い方法の要件。

次の表に、GoogleProvidedPaymentOptions タイプのプロパティを示します。

プロパティ タイプ 説明
facilitationSpecification 文字列

PaymentDataRequest JSON の文字列。このオブジェクトを使用して、Google Pay API に対するサイトのサポートを設定します。

supportedCardNetworks リスト&SupportedCardNetworks>

代わりに facilitationSpecification を使用してください。エージェントがサポートするカード ネットワークのタイプ。

このフィールドは非推奨になりました。

prepaidCardDisallowed Boolean

代わりに facilitationSpecification を使用してください。プリペイド カードがお支払い方法として許可されているかどうか。

このフィールドは非推奨になりました。

billingAddressRequired Boolean

代わりに facilitationSpecification を使用してください。請求先住所が必須かどうか。

このフィールドは非推奨になりました。

tokenizationParameters TokenizationParameters

このフィールドは非推奨になりました。

次の例は、GoogleProvidedPaymentOptions 要素を示しています。

例 1

{
  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
}

例 2

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "braintree",
      "braintree:apiVersion": "v1",
      "braintree:sdkVersion": "1.4.0",
      "braintree:merchantId": "a1b2c3d4e5",
      "braintree:clientKey": "production_braintree_client_key",
      "braintree:authorizationFingerprint": "same_as_client_key"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "JCB",
    "VISA"
  ],
  "prepaidCardDisallowed": true
}

例 3

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "stripe",
      "stripe:publishableKey": "pk_live_stripe_client_key",
      "stripe:version": "2017-04-06"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "VISA",
    "JCB"
  ],
  "prepaidCardDisallowed": true,
  "billingAddressRequired": true
}

販売者情報

このオブジェクトを使用して、Google Pay API に対するサイトのサポートを設定します。

次の表に、MerchantInfo タイプのプロパティを示します。

プロパティ タイプ 説明
merchantId 文字列

Google Pay から発行された Google の販売者 ID

merchantName 文字列

必須。

販売者名は UTF-8 でエンコードされます。販売者名は支払いシートに表示されます。

OnFulfillmentPaymentData

このオブジェクトを使用して、PaymentType の ON_FULFILLMENT に追加データを送信します。

次の表に、OnFulfillmentPaymentData タイプのプロパティを示します。

プロパティ タイプ 説明
supportedPaymentOptions リスト&PaymentOptionsEnums>

注文処理時にユーザーが利用できるお支払い方法のリスト。

次の例は、OnFulfillmentPaymentData 要素を示しています。

{
  "supportedPaymentOptions": [
    "Cash",
    "Card"
  ]
}

パラメータ

TokenizationParameters に関連するタイプを定義します。

次の表に、Parameters タイプのプロパティを示します。

プロパティ タイプ 説明
gateway 文字列

必須。

例: braintree

gatewayMerchantId 文字列
[additionalKey: string] 文字列 追加の Key-Value ペア

次の例は、Parameters 要素を示しています。

例 1

{
  "gatewayMerchantId": "90412491",
  "gateway": "olo"
}

例 2

{
  "gateway": "braintree",
  "braintree:apiVersion": "v1",
  "braintree:sdkVersion": "1.4.0",
  "braintree:merchantId": "YOUR_MERCHANT_ID",
  "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY"
}

PaymentDataRequest(支払いデータのリクエスト)

このオブジェクトを使用して、Google Pay API に対するサイトのサポートを設定します。

次の表に、PaymentDataRequest タイプのプロパティを示します。

プロパティ タイプ 説明
apiVersion 一貫性

必須。

API のメジャー バージョン。

値: 2

apiVersionMinor 一貫性

必須。

マイナー API のバージョン。

値: 0

merchantInfo MerchantInfo

必須。

(Google Pay 販売者 ID)支払いデータをリクエストする販売者に関する情報。

allowedPaymentMethods リスト&PaymentMethod>

必須。

Google Pay API でサポートされている 1 つ以上のお支払い方法のサポートを指定します。

transactionInfo TransactionInfo

必須。

ユーザーが取引に同意したかどうかに基づく、取引の承認に関する詳細。このフィールドには、合計金額および価格のステータスが含まれます。

次の例は、PaymentDataRequest 要素を示しています。

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "cvcRequired": false
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:version": "2019-05-16",
          "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA"
        }
      }
    }
  ],
  "transactionInfo": {
    "currencyCode": "INR",
    "totalPriceStatus": "ESTIMATED",
    "totalPrice": "185.00"
  }
}

PaymentInfo

注文の支払い関連情報。

次の表に、PaymentInfo タイプのプロパティを示します。

プロパティ タイプ 説明
displayName 文字列

必須。

レシートに表示する支払い方法のユーザーに表示される名前。

paymentType PaymentType

必須。

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

アクションで使用できるトークン。CheckoutResponseMessage の支払いオプションとして GoogleProvidedPaymentOptions を指定した場合のみ指定します。

次の例は、PaymentInfo 要素を示しています。

例 1

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd"
  },
  "paymentType": "PAYMENT_CARD"
}

例 2

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd",
    "billingAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "123 Random Street",
        "Unit ABC"
      ],
      "recipients": [
        "sample_receipient"
      ]
    }
  },
  "paymentType": "PAYMENT_CARD"
}

お支払い方法

このオブジェクトを使用して、Google Pay API に対するサイトのサポートを設定します。

次の表に、PaymentMethod タイプのプロパティを示します。

プロパティ タイプ 説明
type 一貫性

必須。

サポートされているお支払い方法の短い ID。現在サポートされているのは CARD のみです。

値: CARD

parameters CardParameters

必須。

指定されたお支払い方法のタイプを構成するために必要なパラメータ。

tokenizationSpecification TokenizationSpecification

必須。

支払い情報を受け取るアカウントまたは復号プロバイダを構成します。CARD お支払い方法の場合、このプロパティは必須です。

次の例は、PaymentMethod 要素を示しています。

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": [
      "PAN_ONLY"
    ],
    "allowedCardNetworks": [
      "VISA",
      "AMEX",
      "MASTERCARD"
    ],
    "billingAddressRequired": false
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gatewayMerchantId": "90412491",
      "gateway": "olo"
    }
  }
}

PaymentOptions

次の表に、PaymentOptions タイプのプロパティを示します。

プロパティ タイプ 説明
次のプロパティ グループのいずれか 1 つは必須です。
googleProvidedOptions グループ 1 GoogleProvidedPaymentOptions

actionProvidedOptions と同時に指定することはできません。GPay を使用したオンライン決済に使用します。

actionProvidedOptions グループ 2 ActionProvidedPaymentOptions

googleProvidedOptions と同時に指定することはできません。これを「代金引換」や「納品時の支払い」に使用します。

次の例は、PaymentOptions 要素を示しています。

例 1

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

例 2

{
  "actionProvidedOptions": {
    "paymentType": "ON_FULFILLMENT",
    "displayName": "Pay when you get your food.",
    "onFulfillmentPaymentData": {
      "supportedPaymentOptions": [
        "Cash",
        "Card"
      ]
    }
  }
}

PaymentOptionsEnums

PaymentOptionsEnums 型には次の値があります。

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

PaymentType 型には次の値があります。

  • PAYMENT_CARD: GoogleProvidedPaymentOptions の場合。
  • ON_FULFILLMENT: ActionProvidedPaymentOptions の場合。

サポートされているカード ネットワーク

GoogleProvidedPaymentOptions に関連するタイプを定義します。

SupportedCardNetworks 型には次の値があります。

  • UNSPECIFIED_CARD_NETWORK
  • AMEX
  • DISCOVER
  • JCB
  • MASTERCARD
  • VISA

TokenizationParameters

GoogleProvidedPaymentOptions に関連するタイプを定義します。

次の表に、TokenizationParameters タイプのプロパティを示します。

プロパティ タイプ 説明
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

必須。

代わりに facilitationSpecification を使用してください。使用可能なトークンの種類。

parameters Parameters

代わりに facilitationSpecification を使用してください。

トークン化仕様

このオブジェクトを使用すると、請求可能なお支払い情報を受け取るようにアカウントを設定できます。

次の表に、TokenizationSpecification タイプのプロパティを示します。

プロパティ タイプ 説明
type 一貫性

必須。

parameters Parameters

必須。

次の例は、TokenizationSpecification 要素を示しています。

例 1

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gatewayMerchantId": "1247192",
    "gateway": "cybersource"
  }
}

例 2

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "stripe",
    "stripe:version": "2018-10-31",
    "stripe:publishableKey": "12378127"
  }
}

TransactionInfo

このオブジェクトは、支払人が支払う能力を決定するトランザクションを記述します。これは、支払い承認ダイアログの表示に使用されます。

次の表に、TransactionInfo タイプのプロパティを示します。

プロパティ タイプ 説明
currencyCode 文字列

必須。

ISO 4217 のアルファベットの通貨コード。

transactionId 文字列

取引の試行を識別する一意の ID。既存の ID を使用するか、Google Pay 取引の試行に特定の ID を生成できます。Google Transaction Events API にコールバックを送信する場合、このフィールドは必須です。

totalPriceStatus 一貫性

必須。

デフォルトで ESTIMATED" を使用します。合計価格は、レスポンスの詳細(請求先住所に基づいて徴収される売上税など)に基づいて調整される場合があります。

値: ESTIMATED

totalPrice 文字列

必須。

取引の金銭的価値。小数点以下 2 桁単位で小数を指定することも可能です。このフィールドは、cart.totalPrice と同じ値である必要があります。

次の例は、TransactionInfo 要素を示しています。

{
  "totalPriceStatus": "ESTIMATED",
  "totalPrice": "12.34",
  "currencyCode": "USD"
}