Schemat działań realizacji

Na tej stronie opisujemy ładunek usługi internetowej realizacji zamówień (Ordering End-to-End API) podczas pracy z interfejsem Ordering End-to-End Built-in Action API. Aby wyświetlić czytelną dla komputera wersję tych informacji, możesz pobrać schemat JSON.

Typy podstawowe

Koszyk

Zawiera szczegóły zamówienia, a także informację, czy żądanie dotyczy odbioru lub dostawa. Koszyk zawiera też informacje o dostawie, napiwek oraz dostawę. adresu. Obiekt Cart jest zdefiniowany w pliku Checkout AppRequest.f Dodaj kopię koszyka do swojej usługi Checkout AppResponse

Poniższa tabela zawiera właściwości typu Cart:

Właściwość Typ Opis
@type Konst

Typ tego obiektu. Pomiń to pole, jeśli nadrzędny obiekt koszyka jest częścią obiektu ProposedOrder.

Wartość: type.googleapis.com/google.actions.v2.orders.Cart

id String

Opcjonalny identyfikator koszyka.

merchant Merchant

Sprzedawca powiązany z tym koszykiem.

lineItems Lista<LineItem>

Wymagane.

Lista towarów lub usług zamawianych przez użytkownika.

Nie może mieć mniej niż 1 element.

promotions Lista<Promotion>

Promocja znajdująca się w tym koszyku. Obecnie obsługiwana jest tylko jedna promocja.

notes String

Uwagi na temat zamówienia lub instrukcji dostawy.

extension FoodCartExtension

Podaje szczegółowe informacje o użytkowniku, takie jak preferencje dotyczące realizacji.

Ten przykład pokazuje element Cart:

Przykład 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"
    }
  }
}

Przykład 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"
    }
  }
}

Kontakt

Podaje szczegółowe informacje o osobie, która otrzymuje zamówienie. Jest dostępny tylko w AppResponse

Poniższa tabela zawiera właściwości typu Contact:

Właściwość Typ Opis
displayName String

Imię i nazwisko osoby, która odbierze zamówienie, które ma być wyświetlane. Użyj tego pola, jeśli nie podano firstName ani lastName.

Przykład: Lovefood Ordering

email String

Adres e-mail osoby, która otrzymuje zamówienie.

Przykład: ilovefood@example.com

firstName String

Imię osoby, która otrzymuje zamówienie.

Przykład: Lovefood

lastName String

Nazwisko osoby, która otrzymuje zamówienie.

Przykład: Ordering

phoneNumber String

Numer telefonu osoby odbierającej zamówienie (w tym kod kraju).

Przykład: +16501234567

emailVerified Wartość logiczna

Wskazuje, czy osoba otrzymująca zamówienie jest zalogowana na swoim koncie Google.

Ten przykład pokazuje element Contact:

Przykład

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

CustomPushMessage

Zawiera znak OrderUpdate dla żądania.

Poniższa tabela zawiera właściwości typu CustomPushMessage:

Właściwość Typ Opis
orderUpdate OrderUpdate

Wymagane.

Zaktualizowano informacje o zamówieniu.

Ten przykład pokazuje element CustomPushMessage:

Przykład

{
  "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

Poniższa tabela zawiera właściwości typu DeliveryInfo:

Właściwość Typ Opis
deliveryTimeIso8601 String

Przewidywany czas dostawy w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub format czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania wynoszący 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas dostawy to jak najkrótszy czas dostawy. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Attachd_date_and_time_representations. Służy do aktualizowania szacowanego czasu dostawy podczas odpowiedzi na płatność.

Przykład: PT90M

Ten przykład pokazuje element DeliveryInfo:

Przykład

{
  "deliveryTimeIso8601": "PT90M"
}

Wyłączenie odpowiedzialności

Poniższa tabela zawiera właściwości typu Disclaimer:

Właściwość Typ Opis
predefinedMessage PredefinedMessage

Wymagane.

Aby podczas procesu płatności wyświetlać wstępnie zdefiniowane komunikaty o wyłączeniu odpowiedzialności.

feeAmount Money

Partner obciąży sprzedawcę opłatą w wysokości N za to zamówienie.

feeAmountRange FeeAmountRange

Partner obciąży restaurację opłatą w wysokości od N do M za każde zamówienie.

feePercent Number

Partner obciąży sprzedawcę opłatą w wysokości N% za to zamówienie.

feePercentRange FeePercentRange

Partner obciąży sprzedawcę opłatą w wysokości N% do M% za każde zamówienie.

Ten przykład pokazuje element Disclaimer:

Przykład 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Przykład 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Przykład 3

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

Przykład 4

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

Przykład 5

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

Przykład 6

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

Błąd

Typ Error może zawierać te wartości:

  • CLOSED: restauracja jest zamknięta w momencie składania zamówienia.
  • NO_CAPACITY: brak dostępnej mocy obliczeniowej (np. chwilowa przerwa w działaniu usługi z powodu godzin szczytu).
  • NO_COURIER_AVAILABLE: nie udało się przetworzyć zamówienia ze względu na ograniczoną liczbę dostawców.
  • REQUIREMENTS_NOT_MET: nie zostały spełnione ograniczenia dotyczące zaakceptowania zamówienia (np. minimalna wielkość koszyka).
  • UNAVAILABLE_SLOT: nie można zrealizować zamówienia z wyprzedzeniem określonym w DeliveryInfo lub pickupInfo.
  • OUT_OF_SERVICE_AREA: zamówienie nie zostało dostarczone na adres użytkownika.
  • PROMO_EXPIRED: nie udało się zastosować promocji, ponieważ promocja wygasła.
  • PROMO_NOT_APPLICABLE: ogólny kod błędu wykrywający wszystkie przypadki niezastosowania kodu promocyjnego, jeśli nie pasuje żaden z pozostałych błędów dotyczących kodu promocyjnego.
  • PROMO_NOT_RECOGNIZED: kod kuponu nie został rozpoznany.
  • PROMO_ORDER_INELIGIBLE: bieżące zamówienie nie kwalifikuje się do wykorzystania tego kuponu.
  • PROMO_USER_INELIGIBLE: obecny użytkownik nie kwalifikuje się do skorzystania z tego kuponu.
  • AVAILABILITY_CHANGED: produkt jest już niedostępny lub nie ma wystarczającej liczby produktów, by zrealizować prośbę.
  • INCORRECT_PRICE: błędy w cenie lub opłaty.
  • INVALID: element zamówienia, FulfillmentOption lub promocja zawiera nieprawidłowe dane.
  • NOT_FOUND: nie można znaleźć elementu LineItem, FulfillmentOption ani Promotion.
  • PRICE_CHANGED: cena produktu uległa zmianie.

FeeAmountRange

Poniższa tabela zawiera właściwości typu FeeAmountRange:

Właściwość Typ Opis
minFeeAmount Money

Dolna granica kwoty opłaty.

maxFeeAmount Money

Górna granica kwoty opłaty.

FeePercentRange

Poniższa tabela zawiera właściwości typu FeePercentRange:

Właściwość Typ Opis
minFeePercent Number

Dolna granica odsetka opłaty.

maxFeePercent Number

Górna granica odsetka opłaty.

FoodCartExtension

Zawiera szczegółowe informacje o użytkowniku, np. preferencje realizacji zamówienia.

Poniższa tabela zawiera właściwości typu FoodCartExtension:

Właściwość Typ Opis
@type Konst

Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodCartExtension”.

Wartość: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

Dane kontaktowe osoby, która otrzyma zamówienie. Szczegółowe informacje obejmują imię i nazwisko osoby, jej numer telefonu i adres e-mail.

fulfillmentPreference FulfillmentOption

Wymagane.

Preferencje użytkownika dotyczące realizacji.

location Location

To pole w elemencie CheckoutRequestMessage określa adres dostawy, który jest wymagany, jeśli zamówienie dotyczy dostawy. W przypadku zamówień na wynos lub z odbiorem to pole nie jest uwzględnione w wiadomości.

Ten przykład pokazuje element FoodCartExtension:

Przykład 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"
  }
}

Przykład 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"
  }
}

FoodErrorExtension

Identyfikuje co najmniej 1 błąd, który wystąpił podczas przetwarzania żądania. W poniższej tabeli opisano pola typu FoodErrorExtension. Błędy mogą być wysyłane w CheckoutResponse.

Poniższa tabela zawiera właściwości typu FoodErrorExtension:

Właściwość Typ Opis
@type Konst

Wymagane.

Typ tego rozszerzenia.

Wartość: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors Lista<FoodOrderError>

Wymagane.

Tablica obiektów FoodOrderError opisujących błędy. Zalecany jeden błąd na koszyk lub produkt.

Nie może mieć mniej niż 1 element.

correctedProposedOrder ProposedOrder

Wymagany, jeśli 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"

Nowe ProposedOrder z poprawkami. Zwróć ten obiekt, jeśli w oryginalnym zamówieniu ProposedOrder występują błędy, które można naprawić. Na przykład zmiana ceny co najmniej jednego elementu zamówienia w koszyku jest błędem, który można odzyskać. Błędy możliwe do naprawienia z prawidłową propozycją zamówienia są przekazywane do etapu potwierdzenia, zamiast wymagać od użytkownika sprawdzania koszyka.

paymentOptions PaymentOptions

Wymagany, jeśli 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"

Domyślne opcje płatności wybrane dla użytkownika.

additionalPaymentOptions Lista<PaymentOptions>

Alternatywne opcje płatności dostępne dla użytkownika.

Ten przykład pokazuje element FoodErrorExtension:

Przykład

{
  "@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

Określa dodatki do produktów spożywczych.

Poniższa tabela zawiera właściwości typu FoodItemExtension:

Właściwość Typ Opis
@type Konst

Wymagane.

Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodItemExtension”.

Wartość: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options Lista<FoodItemOption>

Może to być dodatek lub grupa dodatków zawierająca zestaw dodatków.

Ten przykład pokazuje element FoodItemExtension:

Przykład

{
  "@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

Poniższa tabela zawiera właściwości typu FoodItemOption:

Właściwość Typ Opis
id String

Unikalny identyfikator przypisany przez Google. Gdy wysyłasz zdarzenie FoodOrderError lub AsyncOrderUpdateRequest, użyj tego pola, aby rozróżnić przypadki, w których koszyk zawiera więcej niż 1 produkt z tym samym identyfikatorem offerId.

Przykład: 39231093

offerId String

Identyfikator oferty produktu.

Przykład: 912835081

name String

Nazwa opcji.

Przykład: Honey Mustard

price Money
note String

Uwaga dotycząca opcji.

quantity Number

W przypadku opcji, które są elementami, jest to liczba elementów.

Przykład: 3

subOptions Lista<FoodItemOption>

Opcje podrzędne dotyczące danej opcji, o ile występują.

Przykład: [ { "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 } ]

Ten przykład pokazuje element FoodItemOption:

Przykład 1

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

Przykład 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
    }
  ]
}

FoodOrderError

Zawiera szczegółowe informacje o błędach w CheckoutResponse.

Poniższa tabela zawiera właściwości typu FoodOrderError:

Właściwość Typ Opis
error Error

Wymagane.

id String

Wymagany, jeśli error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND"

To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to przypisany przez Google element LineItem.id w przypadku pozycji menu lub FoodItemOption.id w przypadku dodatków.

description String

Opis błędu. Ten opis jest przeznaczony do logowania wewnętrznego i nie jest widoczny dla użytkowników.

updatedPrice Money

Wymagany, jeśli error = "PRICE_CHANGED"

Nowa cena produktu, który spowodował błąd. To pole jest wymagane tylko wtedy, gdy błąd to „PRICE_CHANGED”.

availableQuantity Liczba całkowita

Wymagany, jeśli error = "INVALID", or "NOT_FOUND"

Nowa dostępna liczba produktów, które spowodowały błąd. To pole jest wymagane tylko wtedy, gdy błąd jest „NIEPRAWIDŁOWY” lub „NOT_FOUND”. Wartość powinna wynosić zero w przypadku tekstu „Nieprawidłowy”. i „NOT_FOUND”.

Ten przykład pokazuje element FoodOrderError:

Przykład 1

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

Przykład 2

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

FoodOrderExtension

Zawiera informacje o realizacji zamówienia.

Poniższa tabela zawiera właściwości typu FoodOrderExtension:

Właściwość Typ Opis
@type Konst

Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodOrderExtension”.

Wartość: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions Lista<FulfillmentOption>

Przedstawia dostępne opcje realizacji zamówienia.

optinForRemarketing Wartość logiczna

Prośba użytkownika o zgodę na korzystanie z Twoich kanałów marketingowych. Domyślnie nie możesz wysyłać treści marketingowych bez zgody użytkownika. Jeśli optinForRemarketing ma wartość prawda, możesz zasubskrybować użytkownika. Jeśli parametr optinForRemarketing ma wartość false (fałsz) lub brak go, musisz zachować stan subskrypcji w systemie. Użytkownicy nie mogą zrezygnować z subskrypcji za pośrednictwem Google. Można to zrobić tylko za pomocą funkcji anulowania subskrypcji dostępnej w kanałach marketingowych. Ta flaga występuje tylko w SubmitOrderRequestMessage.

Ten przykład pokazuje element FoodOrderExtension:

Przykład 1

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

Przykład 2

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

FulfillmentOption

Obiektu FulfillmentOption możesz użyć na te sposoby:
  • Za Checkout AppRequest i Submit AppRequest, Cart.extension.fulfillmentPreference: zapisuje preferencje użytkownika (informacje o dostawie) lub odbiór osobisty). W momencie wysłania żądania płatności cena zawsze wynosi 0.
  • W Checkout AppResponse ProposedOrder.extension.availableFulfillmentOptions: Określa co najmniej jedną opcję wyświetlania (obecnie dostępna jest tylko jedna opcja, obsługiwane). Określasz domyślną opcję jako LineItem w: ProposedOrder.otherItems offerId Wartość FulfillmentOption powinna być taka sama jak identyfikator Wartość LineItem została określona w komórce ProposedOrder.otherItems.

Poniższa tabela zawiera właściwości typu FulfillmentOption:

Właściwość Typ Opis
offerId String

Unikalny identyfikator tej opcji realizacji zamówienia (jeśli istnieje).

fulfillmentInfo FulfillmentOptionInfo

Wymagane.

expiresAt Sygnatura czasowa ISO

Czas, po którym ta opcja realizacji zamówienia wygaśnie.

price Money

Koszt tej opcji.

Ten przykład pokazuje element FulfillmentOption:

Przykład

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

FulfillmentOptionInfo

Określa informacje związane z: FulfillmentInfo.

Poniższa tabela zawiera właściwości typu FulfillmentOptionInfo:

Właściwość Typ Opis
Wymagana jest dokładnie jedna z tych grup właściwości.
delivery Grupa 1 DeliveryInfo

Jeśli jest podany, wskazuje zamówienie dostawy.

pickup Grupa 2 PickupInfo

Jeśli występuje, oznacza zamówienie z odbiorem.

Obraz

Poniższa tabela zawiera właściwości typu Image:

Właściwość Typ Opis
sourceUrl String

Wymagane.

Adres URL obrazu. Obraz powinien mieć co najmniej 72 x 72 piksele. Aby uzyskać najlepsze wyniki, użyj obrazu o wymiarach co najmniej 216 x 216 pikseli. Rozmiar obrazu nie może przekraczać 6 MB i 64 megapikseli.

LineItem

Definiuje zawartość koszyka (Cart.lineItems) lub dodatkowe opłaty zamówienie (ProposedOrder.otherItems).

Poniższa tabela zawiera właściwości typu LineItem:

Właściwość Typ Opis
id String

Wymagany, jeśli type = "REGULAR"

W przypadku elementu zamówienia w koszyku (ProposedOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. W przypadku elementu zamówienia w proponowanym zamówieniu (ProposedOrder.otherItems[0].id), który jest używany do dodawania takich elementów jak opłaty za dostawę i podatki, wartość identyfikatora jest określona przez dostawcę. Na przykład w koszyku znajdują się 2 takie same produkty z różnymi instrukcjami przygotowania (np. dwie średnie pizze z różnymi zestawami dodatków). W tym przypadku oba produkty mają taki sam identyfikator oferty podstawowej. Gdy wysyłasz prośbę o aktualizację zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora do zidentyfikowania produktów. Inaczej mówiąc, jeśli któraś z pizzy zostanie odrzucona z powodu braku określonego dodatku, identyfikator pomoże Google określić, którego produktu dotyczy zamówienie, którego dotyczy. To pole jest wymagane oprócz innych elementów.

name String

Wymagane.

Nazwa elementu zamówienia. Ten ciąg znaków jest widoczny dla użytkowników. W miarę możliwości powinien on być zapisany w postaci zdania (np. „Opłata za dostawę”, „Opłata za obsługę”, „Podatek”). W przypadku użytkowników pole to zostało obcięte do 100 znaków.

type LineItemType

Wymagane.

quantity Liczba całkowita

Wymagany, jeśli type = "REGULAR"

Liczba włączonych elementów. Nie dotyczy zamówienia ProposedOrder.otherItems.

description String

Opis produktu.

price Price

Wymagane.

Cena produktu. Ta wartość odzwierciedla łączną cenę wszystkich towarów lub usług w danym elemencie zamówienia (czyli dodaj koszt wszystkich dodatków i pomnóż przez liczbę). Na przykład: jeśli produkt o wartości 10 zł ma wartość 3, cena wynosi 30 zł. Cena jednej pizzy w cenie podstawowej 5 zł i dodatku w wysokości 1 zł wynosi 6 zł. W przypadku 2 pizzy (ilość = 2) w cenie podstawowej wynoszącej 5 zł i każdej z dodatkiem 1 zł cena wynosi 12 zł. Każdy element zamówienia powinien mieć cenę, nawet jeśli cena wynosi „0”. W przypadku typu DISCOUNT określ wartość jako ujemną (np. „-2”).

subLines Lista<SublineNote>

Opcjonalny i prawidłowy tylko wtedy, gdy typ to „REGULAR”. W tym polu w prośbie o płatność i przesłanie zamówienia może on zostać wysłany w tym polu. Dopilnuj, aby sprzedawca otrzymał wiadomość, gdy zostanie dostarczona. Będzie się on znajdować w żądaniu jako subLines[0].note, co jest jedyną wartością podaną w tym polu, gdy występuje w żądaniu.

Może mieć nie więcej niż 1 element.

offerId String

Wymagany, jeśli type = "REGULAR"

Identyfikator oferty elementu MenuItem. Nie dotyczy zamówienia ProposedOrder.otherItems.

extension FoodItemExtension

Określa dodatki do produktów spożywczych.

Ten przykład pokazuje element LineItem:

Przykład 1

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

Przykład 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

Typ LineItemType może zawierać te wartości:

  • REGULAR: element zamówienia z towarami. Dotyczy elementów Cart.lineItems.
  • TAX: element zamówienia z podatkiem. Dotyczy elementu ProposedOrder.otherItems.
  • DISCOUNT: element zamówienia z rabatem. Pamiętaj, że cena powinna być ujemna. Dotyczy elementu ProposedOrder.otherItems.
  • GRATUITY: element zamówienia z napiwkiem. Zwykle zarezerwowana dla SubmitOrderRequestMessage na wskazówkę wybraną przez użytkownika. Dotyczy elementu ProposedOrder.otherItems.
  • DELIVERY: element zamówienia do zrealizowania. Dotyczy elementu ProposedOrder.otherItems.
  • SUBTOTAL: element zamówienia z sumą częściową. Dotyczy elementu ProposedOrder.otherItems.
  • FEE: dodatkowy element zamówienia, którego nie da się sklasyfikować jako inny typ. Dotyczy elementu ProposedOrder.otherItems.

Lokalizacja

Określa adres, pod którym można zamawiać jedzenie. Typ Location jest używany w Cart aby wskazać tylko miejsce docelowe zamówienia z dostawą. Ostateczna lokalizacja jest też widoczna w TransactionDecisionValue po złożeniu zamówienia przez użytkownika. W przypadku zamówień z odbiorem lokalizacja w ogóle nie dodano (nawet puste pole).

Poniższa tabela zawiera właściwości typu Location:

Właściwość Typ Opis
coordinates Coordinates
formattedAddress String

wyświetlać adres lokalizacji;

Przykład: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode String

Przykład: 90210

city String

Nazwa miasta.

Przykład: Los Angeles

notes String

Notatki o lokalizacji, np. kody do bramki. Nazwa może mieć maksymalnie 500 znaków.

Przykład: Gate code is #111

Ten przykład pokazuje element Location:

Przykład

{
  "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"
}

Sprzedawca

Poniższa tabela zawiera właściwości typu Merchant:

Właściwość Typ Opis
id String

Identyfikator sprzedawcy. Jeśli jest określony, odpowiada ciągowi Restaurant.@id w pliku danych restauracji.

Przykład: https://www.exampleprovider.com/merchant/id1

name String

Wymagane.

Widoczna dla użytkownika nazwa sprzedawcy.

Przykład: Falafel Bite

Ten przykład pokazuje element Merchant:

Przykład

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

Pieniądze

Poniższa tabela zawiera właściwości typu Money:

Właściwość Typ Opis
currencyCode String

Wymagane.

Trzyliterowy kod waluty w formacie ISO 4217.

Przykład: USD

units String

Całkowita jednostka kwoty. Przykład: jeśli kod waluty to „PLN”, wpisz „1”. jeden dolar amerykański.

Przykład: 36

nanos Liczba całkowita

Liczba jednostek nano (10^-9) ilości. Wartość musi mieścić się w przedziale od -999 999 999 do +999 999 999 włącznie. Zastosuj następujące reguły: jeśli jednostki są dodatnie, nanos muszą być dodatnie lub zero. Jeśli liczba jednostek wynosi 0, nanos mogą być dodatnie, zerowe lub ujemne. Jeśli jednostki są ujemne, nanos muszą mieć wartość ujemną lub zero. Na przykład -1,75 USD jest przedstawione jako jednostki = -1,a nanos = -750 000 000.

Przykład: 730000000

Ten przykład pokazuje element Money:

Przykład 1

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

Przykład 2

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

Zamówienie

Zawiera ostateczne zamówienie, w tym podatki, opłaty i koszty dostawy, oraz dane do płatności. Ten obiekt jest odebrany przez działanie w Submit AppRequest

Poniższa tabela zawiera właściwości typu Order:

Właściwość Typ Opis
finalOrder ProposedOrder

Wymagane.

Proponowane zamówienie, w wyniku którego zostało ono wydane.

googleOrderId String

Wymagane.

Identyfikator zamówienia przypisany przez Google. Ten identyfikator powinien być stały przez cały cykl życia zamówienia. Nie jest on widoczny dla użytkownika.

orderDate Sygnatura czasowa ISO

Wymagane.

Data i godzina utworzenia zamówienia.

paymentInfo PaymentInfo

Wymagane.

Dane karty odpowiadające płatności za to zamówienie.

Ten przykład pokazuje element Order:

Przykład

{
  "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

W poniższej tabeli opisano pola typu OrderUpdate, który jest zawarte w dokumencie AppResponse.

Poniższa tabela zawiera właściwości typu OrderUpdate:

Właściwość Typ Opis
actionOrderId String

Wymagane.

Unikalny identyfikator zamówienia w systemie integratora używany do identyfikowania zamówienia, dla którego wysyłana jest aktualizacja. Jeśli parametr payment.user_visible_order_id nie zostanie podany co najmniej raz w elemencie OrderUpdate dla obiektu „CREATED”, będzie to identyfikator widoczny dla użytkownika na karcie zamówienia Google.

orderState OrderState

Wymagane.

Nowy stan zamówienia.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Sygnatura czasowa ISO

Wymagane.

Godzina aktualizacji zamówienia.

orderManagementActions Lista<OrderManagementAction>

działania po zamówieniu, takie jak kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia;

Musi mieć nie mniej niż 1 element oraz nie więcej niż 6 elementów.

rejectionInfo RejectionInfo

Wymagany, jeśli orderState.state = "REJECTED"

cancellationInfo CancellationInfo

Wymagany, jeśli orderState.state = "CANCELLED"

inTransitInfo InTransitInfo

To pole zostało wycofane.

fulfillmentInfo FulfillmentInfo

To pole zostało wycofane.

receipt Receipt

Wymagany, jeśli orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP"

Podaj w potwierdzeniu identyfikator zamówienia widoczny dla użytkownika.

totalPrice Price

Łączna cena zamówienia.

infoExtension FoodOrderUpdateExtension

Podaje więcej szczegółów na temat aktualizacji zamówienia, takich jak przewidywany czas dostawy lub odbioru.

Ten przykład pokazuje element OrderUpdate:

Przykład

{
  "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

Poniższa tabela zawiera właściwości typu PickupInfo:

Właściwość Typ Opis
pickupTimeIso8601 String

Szacowany czas odbioru w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub format czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania wynoszący 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas odbioru przypada w najkrótszym możliwym czasie. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Connected_date_and_time_representations. Służy do aktualizowania szacowanego czasu odbioru w momencie płatności.

Przykład: PT90M

Ten przykład pokazuje element PickupInfo:

Przykład

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

Poniższa tabela zawiera właściwości typu PostalAddress:

Właściwość Typ Opis
regionCode String

Wymagane.

Dwuliterowy kod kraju.

Przykład: US

postalCode String

Kod pocztowy.

Przykład: 94043

administrativeArea String

Najwyższy podział administracyjny stosowany w przypadku adresów pocztowych kraju lub regionu. Może to być stan, prowincja, obwód lub prefektura.

Przykład: CA

locality String

Miasto odpowiadające tej lokalizacji. W regionach, w których miejscowości nie są dobrze zdefiniowane lub nie pasują do tej struktury, nie określaj lokalizacji, tylko użyj pola addressLines.

Przykład: Mountain View

addressLines List<String>

Jeden lub kilka wierszy, których można użyć do określenia adresu. Tego pola nie należy modyfikować, ponieważ może ono zawierać niejasne rejony.

Przykład: [ "1350 Charleston Road" ]

recipients List<String>

Lista odbiorców zamówienia. To pole jest dostępne tylko w polu billingAddress.

Ten przykład pokazuje element PostalAddress:

Przykład

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

Cena

Poniższa tabela zawiera właściwości typu Price:

Właściwość Typ Opis
type Enum [ "ESTIMATE", "ACTUAL" ]

Wymagane.

Kod kuponu promocyjnego.

amount Money

Wymagane.

Promocja

Poniższa tabela zawiera właściwości typu Promotion:

Właściwość Typ Opis
coupon String

Wymagane.

Kod kuponu promocyjnego.

ProposedOrder

Poniższa tabela zawiera właściwości typu ProposedOrder:

Właściwość Typ Opis
id String

Opcjonalny identyfikator proponowanego zamówienia.

cart Cart

Wymagane.

Elementy użytkownika.

otherItems Lista<LineItem>

pozycje dodane przez dostawcę, na przykład opłaty za dostawę, inne opłaty i podatki; otherItems mogą również zawierać napiwek lub rabat dodany przez użytkownika.

Może zawierać nie więcej niż 10 elementów.

image Image

Obraz powiązany z proponowanym zamówieniem.

totalPrice Price

Wymagane.

Łączna cena proponowanego zamówienia.

extension FoodOrderExtension

Wymagane.

Określa informacje o realizacji zamówień na jedzenie.

disclaimers Lista<Disclaimer>

Odpowiada komunikatom dotyczącym wyłączenia odpowiedzialności, które będą wyświetlane w interfejsie przed złożeniem zamówienia.

Ten przykład pokazuje element ProposedOrder:

Przykład

{
  "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

Poniższa tabela zawiera właściwości typu SublineNote:

Właściwość Typ Opis
note String

Wymagane.

Sygnatura czasowa

Data i godzina w takim formacie: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Zawiera Order.

Poniższa tabela zawiera właściwości typu TransactionDecisionValue:

Właściwość Typ Opis
order Order

Wymagane.

Zamówienie do złożenia ze szczegółami płatności.

Ten przykład pokazuje element TransactionDecisionValue:

Przykład

{
  "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"
    }
  }
}

Prośba o realizację

AppRequest

Poniższa tabela zawiera właściwości typu AppRequest:

Właściwość Typ Opis
isInSandbox Wartość logiczna

Wskazuje, czy kolejne transakcje są realizowane w środowisku piaskownicy.

conversation Conversation
inputs Lista<Input>

Wymagane.

Zawiera oczekiwane argumenty płatności za koszyk.

Musi zawierać dokładnie 1 element.

Ten przykład pokazuje element AppRequest:

Przykład 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"
              }
            }
          }
        }
      ]
    }
  ]
}

Przykład 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 to AppRequest z intencją actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

SubmitOrderRequestMessage to AppRequest z intencją actions.foodordering.intent.TRANSACTION_DECISION.

Rozmowa

Element Conversation jest unikalny dla tylko jednej sesji. Możesz go używać do łączenia wielu kont Checkout i SubmitOrder działań łącznie, w razie potrzeby.

Poniższa tabela zawiera właściwości typu Conversation:

Właściwość Typ Opis
conversationId String

Wymagane.

Unikalny identyfikator rozmowy.

Ten przykład pokazuje element Conversation:

Przykład

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Dane wejściowe

Oczekiwane argumenty realizacji transakcji w koszyku.

Poniższa tabela zawiera właściwości typu Input:

Właściwość Typ Opis
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Wymagane.

Ustaw jako „actions.foodordering.intent.CHECKOUT” dla komunikatu z prośbą o płatność LUB „actions.intent.TRANSACTION_DECISION” aby przesłać prośbę o przesłanie zamówienia.

arguments Lista<Argument>

Wymagane.

Zawiera koszyk lub zamówienie, które ma zostać złożone.

Musi zawierać dokładnie 1 element.

Argument

Zawiera szczegółowe informacje o produktach spożywczych, które użytkownik chce kupić. W przypadku płatności obowiązuje tylko rozszerzenie. W przypadku przesłania zamówienia ma zastosowanie tylko conversionDecisionValue

Poniższa tabela zawiera właściwości typu Argument:

Właściwość Typ Opis
Wymagana jest dokładnie jedna z tych grup właściwości.
extension Grupa 1 Cart

Szczegółowe informacje o produktach spożywczych, które użytkownik chce kupić.

transactionDecisionValue Grupa 2 TransactionDecisionValue

Zawiera zamówienie, które ma zostać złożone, wraz ze szczegółami płatności.

Odpowiedź na realizację zamówienia

AppResponse

Poniższa tabela zawiera właściwości typu AppResponse:

Właściwość Typ Opis
expectUserResponse Konst

Ustaw wartość na fałsz.

Wartość: False

finalResponse FinalResponse

Wymagane.

Zawiera Twoją odpowiedź na proces płatności koszyka.

Ten przykład pokazuje element AppResponse:

Przykład 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."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Przykład 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"
              }
            }
          }
        }
      ]
    }
  }
}

Przykład 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."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

Przykład 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

CheckoutResponseMessage to AppResponse z checkoutResponse lub error w StructuredResponse.

SubmitOrderResponseMessage

SubmitOrderResponseMessage to AppResponse z orderUpdate w StructuredResponse.

FinalResponse

Twoja odpowiedź na proces płatności koszyka lub SubmitOrderRequestMessage.

Poniższa tabela zawiera właściwości typu FinalResponse:

Właściwość Typ Opis
richResponse RichResponse

Wymagane.

Zawiera Twoją odpowiedź na żądanie CheckoutRequestMessage lub SubmitOrderRequestMessage.

CheckoutResponse

Poniższa tabela zawiera właściwości typu CheckoutResponse:

Właściwość Typ Opis
proposedOrder ProposedOrder

Wymagane.

Proponowane zamówienie do wykorzystania na potrzeby transakcji.

paymentOptions PaymentOptions

Wymagane.

Wybrano domyślną opcję płatności dla użytkownika.

additionalPaymentOptions Lista<PaymentOptions>

Alternatywne opcje płatności dostępne dla użytkownika.

Ten przykład pokazuje element CheckoutResponse:

Przykład

{
  "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."
      }
    }
  ]
}

Element

Zawiera Twoją odpowiedź na proces płatności koszyka lub SubmitOrderRequestMessage.

Poniższa tabela zawiera właściwości typu Item:

Właściwość Typ Opis
structuredResponse StructuredResponse

Wymagane.

RichResponse

Zawiera Twoją odpowiedź na pytanie o płatność koszyka.

Poniższa tabela zawiera właściwości typu RichResponse:

Właściwość Typ Opis
items Lista<Item>

Wymagane.

Musi zawierać dokładnie 1 element.

StructuredResponse

W przypadku CheckoutResponseMessage może być podana jedna z następujących wartości: CheckoutResponse wskazuje pomyślną płatność. LUB FoodErrorExtension: oznacza błąd w procesie płatności. Odpowiedź może zawierać poprawione wartości ProposedOrder i PaymentOptions lub komunikat o błędzie bez PaymentOptions. W przypadku SubmitOrderResponseMessage ma zastosowanie tylko orderUpdate.

Poniższa tabela zawiera właściwości typu StructuredResponse:

Właściwość Typ Opis
Wymagana jest dokładnie jedna z tych grup właściwości.
checkoutResponse Grupa 1 CheckoutResponse

Wypłacone produkty plus podatki i rabaty.

error Grupa 2 FoodErrorExtension

Błędy zaobserwowane w elementach koszyka. Zależnie od charakteru błędu właściwość ta może zawierać poprawione wartości ProposedOrder i PaymentOptions lub tylko komunikat o błędzie bez PaymentOptions.

orderUpdate Grupa 3 OrderUpdate

Asynchroniczne aktualizacje zamówienia

W tej sekcji opisujemy ogólne typy żądań, które składają się na żądania odpowiedzi na typowe, wbudowane działanie związane z zamawianiem jedzenia.

AsyncOrderUpdateRequestMessage

Powiadamia użytkownika o zmianach po przesłaniu i potwierdzeniu zamówienia. Możesz na przykład powiadomić użytkownika, że zamówienie jest w drodze lub jeśli cena uległa zmianie. Więcej informacji:

Poniższa tabela zawiera właściwości typu AsyncOrderUpdateRequestMessage:

Właściwość Typ Opis
isInSandbox Wartość logiczna

Wskazuje, że zamówienie, dla którego została wysłana ta aktualizacja, to płatność w trybie piaskownicy.

customPushMessage CustomPushMessage

Wymagane.

Zawiera parametr OrderUpdate dla żądania.

Ten przykład pokazuje element AsyncOrderUpdateRequestMessage:

Przykład

{
  "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

Gdy wyślesz AsyncOrderUpdateRequestMessage, Google odpowie ze stanem HTTP 200 i pustą treścią. Jeśli aktualizacja się nie udała, W odpowiedzi Google przekazuje szczegółowe informacje o przyczynach niepowodzenia aktualizacji zamówienia.

Typy aktualizacji zamówień

Przycisk

Definiuje element interfejsu, który możesz dodać, aby umożliwić interakcję użytkownika.

Poniższa tabela zawiera właściwości typu Button:

Właściwość Typ Opis
title String

Wymagane.

Wyświetlana etykieta. Aby zapewnić prawidłowe renderowanie, używaj w zdaniu wielkości liter o długości maksymalnie 30 znaków.

Przykład: Contact us

openUrlAction OpenUrlAction

Wymagane.

Ten przykład pokazuje element Button:

Przykład

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

CancellationInfo

Poniższa tabela zawiera właściwości typu CancellationInfo:

Właściwość Typ Opis
reason String

Wymagane.

Wyświetlany tekst przyczyny odrzucenia, gdy stan zamówienia OrderState.state ma wartość „CANCELLED”.

Przykład: Restaurant closed

Ten przykład pokazuje element CancellationInfo:

Przykład

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ten typ dostarcza użytkownikowi informacji o szacowanym czasie, po jakim następuje realizacja zamówienia dostarczone lub gotowe do odbioru. Wyślij to rozszerzenie w OrderUpdate za każdym razem, gdy informacje są dostępne lub uległy zmianie od czasu ich ostatniego wysłania.

Podaj zachowawcze oszacowanie okresu realizacji, aby użytkownik są stale spełnione. Jeśli na przykład szacujemy, że zamówienie to dostarczone dzisiaj o 13:00, powinieneś wysłać szacowany interwał spójne z wahaniami spowodowanymi przez warunki na drodze, np. dzisiaj o godz. 12:45 do 13:15.

Czas trwania lub sygnatura czasowa w formacie ISO 8601 są interpretowane jako przedział czasu updateTime z OrderUpdate (w skrócie „teraz”) na updateTime + duration. Nie używaj tego formatu, chyba że wybierzesz „teraz” jest całkowicie rozsądnym oczekiwaniem.

Przedział ISO 8601 jest interpretowany jako przedział czasu od początku do na końcu przedziału czasu.

Poniższa tabela zawiera właściwości typu FoodOrderUpdateExtension:

Właściwość Typ Opis
@type Konst

Typ tego rozszerzenia. To pole zawsze jest ustawione na „type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension”.

Wartość: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 String

Szacowany czas, kiedy zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Ciąg musi być w formacie ISO 8601 i musi odpowiadać interwałowi, a nie pojedynczemu ustalonemu czasowi. Akceptowane konwencje to: Interwały, Czasy trwania oraz Daty/godziny. To pole można wysłać w SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy informacje staną się dostępne lub zajdzie zmiana, na przykład wcześniejsze lub opóźnione przybycie.

Przykład: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors Lista<FoodOrderError>

Opisuje błędy, które wystąpiły po złożeniu zamówienia. Zalecany jeden błąd na koszyk lub produkt. W przypadku błędów, których nie obejmuje BounceionInfo, użyj elementu FoodOrderUpdateExtension.FoodOrderErrors.

Nie może mieć mniej niż 1 element.

Ten przykład pokazuje element FoodOrderUpdateExtension:

Przykład 1

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

Przykład 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

Poniższa tabela zawiera właściwości typu FulfillmentInfo:

Właściwość Typ Opis
Wymagana jest dokładnie jedna z tych grup właściwości.
deliveryTime Grupa 1 Sygnatura czasowa ISO

Użyj wartości szacunkowejFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

pickupTime Grupa 2 Sygnatura czasowa ISO

Użyj wartości szacunkowejFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

Ten przykład pokazuje element FulfillmentInfo:

Przykład 1

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

Przykład 2

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

InTransitInfo

Poniższa tabela zawiera właściwości typu InTransitInfo:

Właściwość Typ Opis
updatedTime Sygnatura czasowa ISO

Użyj wartości szacunkowejFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

Ten przykład pokazuje element InTransitInfo:

Przykład

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

LineItemUpdate

Poniższa tabela zawiera właściwości typu LineItemUpdate:

Właściwość Typ Opis
orderState OrderState
price Price
reason String

Przyczyna zmiany. Wymagane w przypadku zmian cen.

Ten przykład pokazuje element LineItemUpdate:

Przykład

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

OpenUrlAction

Poniższa tabela zawiera właściwości typu OpenUrlAction:

Właściwość Typ Opis
url String

Wymagane.

Działanie wywoływane przez kliknięcie lub dotknięcie przycisku. Lista odpowiednich prefiksów zależy od typu orderManagementActionType. „EMAIL”: prefiksem musi być „mailto”. „CALL”: prefiksem musi być „tel”. „CUSTOMER_SERVICE”: prefiks musi mieć postać „mailto”, „tel”, „http” lub „https”.

Przykład: https://www.google.com

OrderManagementAction

Zarządzanie zamówieniami pozwala użytkownikom na korzystanie z pomocy po zamówieniu i powinien być wysyłany każdy element OrderUpdate w przesłanym zamówieniu AppResponse a każde kolejne AsyncOrderUpdateRequestMessage Działania związane z zarządzaniem zamówieniami wysłane dla konkretnego zamówienia mogą się różnić w zależności od stanu.

Na przykład w kolumnie „CREATED” stan, CUSTOMER_SERVICE może odnosić się do telefonu działu obsługi klienta. W polu „POTWIERDZONO” stan, CUSTOMER_SERVICE może się zmienić na telefon restauracji, jeśli będzie to kontakt w imieniu klienta. Podobnie, gdy zamówienie będzie w stanie „FULFILLED” stan, CUSTOMER_SERVICE może użyć adresu e-mail Twojego zespołu pomocy.

Poniższa tabela zawiera właściwości typu OrderManagementAction:

Właściwość Typ Opis
type OrderManagementActionType

Wymagane.

button Button

Wymagane.

Ten przykład pokazuje element OrderManagementAction:

Przykład 1

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

Przykład 2

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

OrderManagementActionType

Określa typy powiązane z: OrderManagementAction.

Typ OrderManagementActionType może zawierać te wartości:

  • CUSTOMER_SERVICE: adres e-mail lub numer kontaktowy do obsługi klienta wyświetlany na stronie potwierdzenia zamówienia. To pole jest wymagane. Prefiks openUrlAction.url musi mieć prefiks „mailto”, „tel”, „http” lub „https”.
  • EMAIL: działanie e-maila tylko na stronie ze szczegółami zamówienia. Prefiks openUrlAction.url musi mieć wartość „mailto”.
  • CALL_DRIVER: połączenie telefoniczne tylko na stronie ze szczegółami zamówienia. Prefiks openUrlAction.url musi mieć wartość „tel”.
  • CALL_RESTAURANT: połączenie telefoniczne tylko na stronie ze szczegółami zamówienia. Prefiks openUrlAction.url musi mieć wartość „tel”.

OrderState

Bieżący stan zamówienia. Każda wartość state z OrderState również odpowiada stanowi zakupu na myaccount.google.com.

Poniższa tabela zawiera właściwości typu OrderState:

Właściwość Typ Opis
state OrderStateEnum

Wymagane.

label String

Wymagane.

Wyświetlany dla użytkownika ciąg tekstowy dotyczący stanu. Wielkość liter powinna być jak w zdaniu.

Przykład: Your order has been received

Ten przykład pokazuje element OrderState:

Przykład

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

OrderStateEnum

Określa typy powiązane z: OrderState.

Typ OrderStateEnum może zawierać te wartości:

  • CREATED: zamówienie utworzone przez integratora i czeka na potwierdzenie przez dostawcę. Odpowiada pozycji „Zamówione” stanu zakupu.
  • CONFIRMED: zamówienie potwierdzone przez dostawcę i aktywne. Odpowiada stanowi „Zaakceptowano” stanu zakupu.
  • REJECTED: zamówienie odrzucone przez integratora lub dostawcę. Odpowiada stanowi „Odrzucono” stanu zakupu.
  • CANCELLED: użytkownik anulował zamówienie. Odpowiada pozycji „Anulowano” stanu zakupu.
  • IN_PREPARATION: jedzenie jest przygotowywane. Odpowiada „Nieznany stan” stanu zakupu.
  • READY_FOR_PICKUP: jedzenie jest gotowe do odbioru. Odpowiada „Gotowy do odbioru” stanu zakupu.
  • IN_TRANSIT: zamówienie jest dostarczane. Odpowiada stanowi „W toku” stanu zakupu.
  • FULFILLED: użytkownik otrzymał zamówienie. Odpowiada pozycji „Odebrane” stanu zakupu.

Rachunek

Wyślij ten typ w zamówieniu przesłania: AppResponse, gdzie OrderState to „CONFIRMED”, „FULFILLED” lub „IN_TRANSIT”. Wyślij rachunek na Data i godzina, kiedy userVisibleOrderId stanie się dostępny. Nie musisz przechowywać wysyłając potwierdzenie w kolejnych aktualizacjach.

Poniższa tabela zawiera właściwości typu Receipt:

Właściwość Typ Opis
userVisibleOrderId String

Wymagane.

Wymagany, jeśli zamówienie ma stan „CONFIRMED”, „IN_TRANSIT” lub „FULFILLED”. To pole zawiera pojedynczy identyfikator tego zamówienia widoczny dla użytkownika (zwykle identyfikator zamówienia restauracji), który jest widoczny zarówno na potwierdzeniu integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość użycia tego identyfikatora, aby przesłać zamówienie na obsługę klienta u dostawcy i integratora. Ten identyfikator musisz podać tylko raz w każdej aktualizacji OrderUpdate. Dopóki nie zostanie podany, parametr actionOrderId będzie mieć wartość userVisibleOrderId. Na przykład możesz nie mieć parametru userVisibleOrderId, dopóki zamówienie nie zostanie potwierdzone przez restaurację. Po potwierdzeniu musisz wysłać żądanie AsyncOrderUpdateRequestMessage z parametrem OrderUpdate i potwierdzeniem.

Ten przykład pokazuje element Receipt:

Przykład

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

Poniższa tabela zawiera właściwości typu RejectionInfo:

Właściwość Typ Opis
type RejectionType

Wymagane.

reason String

Przyczyna odrzucenia używana na potrzeby logowania wewnętrznego. To pole nie jest widoczne dla użytkowników.

Ten przykład pokazuje element RejectionInfo:

Przykład

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

RejectionType

Typ RejectionType może zawierać te wartości:

  • INELIGIBLE: użytkownik nie kwalifikuje się ze względu na zasady lub obawy związane z ryzykiem.
  • PAYMENT_DECLINED: wystąpił problem z przetwarzaniem płatności.
  • UNAVAILABLE_SLOT: nie można zrealizować zamówienia z wyprzedzeniem określonym w DeliveryInfo lub pickupInfo.
  • PROMO_NOT_APPLICABLE: wystąpił problem z promocją.
  • UNKNOWN: dowolny inny powód.

Typy związane z płatnościami

W tej sekcji opisano typy płatności związane z zamawianiem jedzenia i realizacji.

ActionProvidedPaymentOptions

Wymagania dotyczące formy płatności objętej działaniem.

Poniższa tabela zawiera właściwości typu ActionProvidedPaymentOptions:

Właściwość Typ Opis
paymentType PaymentType

Wymagane.

displayName String

Wymagane.

Nazwa instrumentu płatniczego widoczna na rachunku.

Przykład: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dodatkowe dane dla atrybutu paymentType „ON_FULFILLMENT”. Możesz na przykład użyć tego pola, aby określić, czy w ramach realizacji transakcji obsługiwana jest gotówka lub karta.

Ten przykład pokazuje element ActionProvidedPaymentOptions:

Przykład

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

AllowedAuthMethods

Typ AllowedAuthMethods może zawierać te wartości:

  • PAN_ONLY: forma uwierzytelniania powiązana z kartami płatniczymi zapisanymi na koncie Google użytkownika. Zwracane dane płatności zawierają numer rachunku bankowego (PAN) oraz miesiąc i rok ważności.

AllowedCardNetworks

Typ AllowedCardNetworks może zawierać te wartości:

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

BillingAddressParameters

Ten obiekt umożliwia ustawienie dodatkowych pól żądanego adresu rozliczeniowego, które mają być zwracane.

Poniższa tabela zawiera właściwości typu BillingAddressParameters:

Właściwość Typ Opis
format String

Format adresu rozliczeniowego wymagany do zrealizowania transakcji. MIN: imię i nazwisko, kod kraju, kod pocztowy. FULL: imię i nazwisko, ulica i numer, miejscowość, region, kod kraju, kod pocztowy.

Ten przykład pokazuje element BillingAddressParameters:

Przykład 1

{
  "format": "MIN"
}

Przykład 2

{
  "format": "FULL"
}

CardParameters

Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.

Poniższa tabela zawiera właściwości typu CardParameters:

Właściwość Typ Opis
allowedAuthMethods List<Const>

Wymagane.

Pola obsługiwane do uwierzytelniania transakcji kartą.

Nie może mieć mniej niż 1 element.

allowedCardNetworks Lista<AllowedCardNetworks>

Wymagane.

Sieci kart, które obsługujesz, i które również są obsługiwane przez Google Pay API.

Nie może mieć mniej niż 1 element.

billingAddressRequired Wartość logiczna

Ustaw wartość „true” (prawda), jeśli wymagasz adresu rozliczeniowego. Poproś o adres rozliczeniowy tylko wtedy, gdy jest on wymagany do przetworzenia transakcji. Dodatkowe żądania danych mogą powodować błędy w procesie płatności i obniżenie współczynników konwersji.

billingAddressParameters BillingAddressParameters

Pola, które mają zostać zwrócone, jeśli billingAddressRequired ma wartość true.

cvcRequired Wartość logiczna

Ustaw wartość true, jeśli korzystasz z TimesofMoney, a wartość Fałsz w przypadku pozostałych firm obsługujących płatności.

Ten przykład pokazuje element CardParameters:

Przykład 1

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

Przykład 2

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": true,
  "billingAddressParameters": {
    "format": "MIN"
  },
  "cvcRequired": false
}

GoogleProvidedPaymentInstrument

Poniższa tabela zawiera właściwości typu GoogleProvidedPaymentInstrument:

Właściwość Typ Opis
instrumentToken String

Wymagane.

Ciąg znaków zakodowany w standardzie Base64 zawierający token płatności służący do obciążania użytkownika opłatą przez firmę obsługującą Google Pay, zgodnie z wcześniej określonym parametrem GoogleProvidedPaymentOptions.

billingAddress PostalAddress

Adres rozliczeniowy na potrzeby płatności.

Ten przykład pokazuje element GoogleProvidedPaymentInstrument:

Przykład

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

GoogleProvidedPaymentOptions

Wymagania dotyczące formy płatności udostępnionej przez Google.

Poniższa tabela zawiera właściwości typu GoogleProvidedPaymentOptions:

Właściwość Typ Opis
facilitationSpecification String

PaymentDataRequest JSON jako ciąg znaków. Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.

supportedCardNetworks Lista<SupportedCardNetworks>

Zamiast tego użyj atrybutu facilitationSpecification. Typ sieci kart obsługiwanych przez agenta.

To pole zostało wycofane.

prepaidCardDisallowed Wartość logiczna

Zamiast tego użyj atrybutu facilitationSpecification. Określa, czy można płacić kartą przedpłaconą.

To pole zostało wycofane.

billingAddressRequired Wartość logiczna

Zamiast tego użyj atrybutu facilitationSpecification. Określa, czy jest wymagany adres rozliczeniowy.

To pole zostało wycofane.

tokenizationParameters TokenizationParameters

To pole zostało wycofane.

Ten przykład pokazuje element GoogleProvidedPaymentOptions:

Przykład 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\"}}"
}

Przykład 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
}

Przykład 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
}

MerchantInfo

Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.

Poniższa tabela zawiera właściwości typu MerchantInfo:

Właściwość Typ Opis
merchantId String

Identyfikator sprzedawcy w Google wydany przez Google Pay.

merchantName String

Wymagane.

Nazwa sprzedawcy w formacie UTF-8. Nazwa sprzedawcy jest wyświetlana w arkuszu płatności.

OnFulfillmentPaymentData

Użyj tego obiektu, aby wysłać dodatkowe dane dla PaymentType „ON_FULFILLMENT”.

Poniższa tabela zawiera właściwości typu OnFulfillmentPaymentData:

Właściwość Typ Opis
supportedPaymentOptions Lista<PaymentOptionsEnums>

Lista opcji płatności dostępnych dla użytkownika w momencie realizacji zamówienia.

Ten przykład pokazuje element OnFulfillmentPaymentData:

Przykład

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

Parametry

Określa typy powiązane z: TokenizationParameters.

Poniższa tabela zawiera właściwości typu Parameters:

Właściwość Typ Opis
gateway String

Wymagane.

Przykład: braintree

gatewayMerchantId String
[additionalKey: string] String Dodatkowe pary klucz-wartość

Ten przykład pokazuje element Parameters:

Przykład 1

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

Przykład 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

Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.

Poniższa tabela zawiera właściwości typu PaymentDataRequest:

Właściwość Typ Opis
apiVersion Konst

Wymagane.

Główna wersja interfejsu API.

Wartość: 2

apiVersionMinor Konst

Wymagane.

Pomocnicza wersja interfejsu API.

Wartość: 0

merchantInfo MerchantInfo

Wymagane.

(Identyfikator sprzedawcy w Google Pay) Informacje o sprzedawcy, który wysłał żądanie danych płatności.

allowedPaymentMethods Lista<PaymentMethod>

Wymagane.

Określa, które formy płatności obsługiwane przez Google Pay API mają być obsługiwane.

transactionInfo TransactionInfo

Wymagane.

Szczegóły autoryzacji transakcji w zależności od tego, czy użytkownik się na nią zgadza. To pole zawiera cenę całkowitą i stan ceny.

Ten przykład pokazuje element PaymentDataRequest:

Przykład

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "billingAddressParameters": {
          "format": "FULL"
        },
        "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

Informacje dotyczące płatności za zamówienie.

Poniższa tabela zawiera właściwości typu PaymentInfo:

Właściwość Typ Opis
displayName String

Wymagane.

Widoczna dla użytkownika nazwa instrumentu płatniczego do wyświetlenia na rachunku.

paymentType PaymentType

Wymagane.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token, którego działanie może użyć. Określ tę wartość tylko wtedy, gdy w metodzie CheckoutResponseMessage jako opcję płatności określono GoogleProvidedPaymentOptions.

Ten przykład pokazuje element PaymentInfo:

Przykład 1

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

Przykład 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"
}

PaymentMethod

Użyj tego obiektu, aby skonfigurować obsługę Google Pay API w swojej witrynie.

Poniższa tabela zawiera właściwości typu PaymentMethod:

Właściwość Typ Opis
type Konst

Wymagane.

Krótki identyfikator obsługiwanej formy płatności. Obecnie obsługiwana jest tylko karta CARD.

Wartość: CARD

parameters CardParameters

Wymagane.

Parametry wymagane do skonfigurowania podanego typu formy płatności.

tokenizationSpecification TokenizationSpecification

Wymagane.

Skonfiguruj konto lub dostawcę usług odszyfrowywania, które mają otrzymać dane karty. Ta właściwość jest wymagana w przypadku formy płatności CARD.

Ten przykład pokazuje element PaymentMethod:

Przykład

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

PaymentOptions

Poniższa tabela zawiera właściwości typu PaymentOptions:

Właściwość Typ Opis
Wymagana jest dokładnie jedna z tych grup właściwości.
googleProvidedOptions Grupa 1 GoogleProvidedPaymentOptions

Wzajemnie wyklucza się z actionProvidedOptions. Używaj do płatności online za pomocą gPay.

actionProvidedOptions Grupa 2 ActionProvidedPaymentOptions

Wzajemnie wyklucza się z użyciem obiektu googleProvidedOptions. Użyj go w przypadku „płatności gotówką przy odbiorze”. lub „płatność za realizację”.

Ten przykład pokazuje element PaymentOptions:

Przykład 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\"}}"
  }
}

Przykład 2

{
  "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\":true,   \"billingAddressParameters\": {  \"format\":\"MIN\"  }    },    \"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\"}}"
  }
}

Przykład 3

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

PaymentOptionsEnums

Typ PaymentOptionsEnums może zawierać te wartości:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Typ PaymentType może zawierać te wartości:

  • PAYMENT_CARD: w przypadku GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: w przypadku ActionProvidedPaymentOptions.

SupportedCardNetworks

Określa typy powiązane z: GoogleProvidedPaymentOptions.

Typ SupportedCardNetworks może zawierać te wartości:

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

TokenizationParameters

Definiuje typy powiązane z: GoogleProvidedPaymentOptions.

Poniższa tabela zawiera właściwości typu TokenizationParameters:

Właściwość Typ Opis
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Wymagane.

Zamiast tego użyj atrybutu facilitationSpecification. Akceptowane typy tokenów.

parameters Parameters

Zamiast tego użyj atrybutu facilitationSpecification.

TokenizationSpecification

Ten obiekt umożliwia skonfigurowanie konta, które ma odbierać dane karty do obciążenia.

Poniższa tabela zawiera właściwości typu TokenizationSpecification:

Właściwość Typ Opis
type Konst

Wymagane.

parameters Parameters

Wymagane.

Ten przykład pokazuje element TokenizationSpecification:

Przykład 1

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

Przykład 2

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

TransactionInfo

Ten obiekt opisuje transakcję, która określa możliwość zapłaty przez płatnika. Jest używany do wyświetlania okna autoryzacji płatności.

Poniższa tabela zawiera właściwości typu TransactionInfo:

Właściwość Typ Opis
currencyCode String

Wymagane.

Kod waluty wyrażony literami według normy ISO 4217.

transactionId String

Unikalny identyfikator, który identyfikuje próbę transakcji. Sprzedawcy mogą używać istniejących identyfikatorów lub generować konkretne identyfikatory prób dokonania transakcji w Google Pay. To pole jest wymagane, gdy wysyłasz wywołania zwrotne do interfejsu Google Transaction Events API.

totalPriceStatus Konst

Wymagane.

Użyj wartości „ESTIMATED” jako domyślnej. Łączna cena może zostać dostosowana na podstawie szczegółów odpowiedzi, takich jak podatek od sprzedaży określany na podstawie adresu rozliczeniowego.

Wartość: ESTIMATED

totalPrice String

Wymagane.

Łączna wartość pieniężna transakcji z opcjonalną możliwością określenia do dwóch miejsc po przecinku. To pole powinno mieć taką samą wartość jak cart.totalPrice.

Ten przykład pokazuje element TransactionInfo:

Przykład

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