Schemat działań realizacji

Ta strona opisuje ładunek usługi internetowej realizacji zamówień (Ordering End-to-End API) podczas korzystania z kompleksowego interfejsu API do obsługi zamówień. Aby uzyskać czytelną dla komputera wersję tych informacji, możesz pobrać schemat JSON.

Typy podstawowe

Koszyk

Zawiera szczegóły zamówienia, a także informację, czy prośba dotyczy odbioru czy dostawy. Koszyk zawiera też szczegóły dostawy, należność i adres dostawy. Obiekt Cart jest zdefiniowany w pliku Checkout AppRequest.f Kopię koszyka dołączasz do Checkout AppResponse

W tej tabeli podano właściwości typu Cart:

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

Typ tego obiektu. Pomiń to pole, jeśli nadrzędny obiekt koszyka jest częścią elementu 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>

To pole jest wymagane.

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

Może zawierać nie mniej niż 1 element.

promotions Lista<Promotion>

Promocja zastosowana w tym koszyku. Obecnie obsługiwana jest tylko jedna promocja.

notes String

Uwagi dotyczące zamówienia lub instrukcji dostawy.

extension FoodCartExtension

Określa szczegóły dotyczące użytkownika, np. preferencje realizacji zamówień.

Oto przykład elementu 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"
    }
  }
}

Nawiązanie kontaktu

Określa szczegółowe informacje na temat osoby otrzymującej zamówienie. Jest dostępny tylko w AppResponse.

W tej tabeli podano właściwości typu Contact:

Właściwość Typ Opis
displayName String

Imię i nazwisko osoby odbierającej zamówienie, w takiej postaci, w jakiej 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 odbierającej zamówienie.

Przykład: ilovefood@example.com

firstName String

Imię osoby odbierającej zamówienie.

Przykład: Lovefood

lastName String

Nazwisko osoby odbierającej 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.

Oto przykład elementu Contact:

Przykład

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

CustomPushMessage

Zawiera OrderUpdate żądania.

W tej tabeli podano właściwości typu CustomPushMessage:

Właściwość Typ Opis
orderUpdate OrderUpdate

To pole jest wymagane.

Zaktualizowano informacje o zamówieniu.

Oto przykład elementu 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

W tej tabeli podano właściwości typu DeliveryInfo:

Właściwość Typ Opis
deliveryTimeIso8601 String

Szacowany czas dostawy w formacie znacznika czasu 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 jest jak najszybciej. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Connectedd_date_and_time_representations Użyj tych informacji, aby zaktualizować szacowany czas dostawy w odpowiedzi na prośbę o płatność.

Przykład: PT90M

Oto przykład elementu DeliveryInfo:

Przykład

{
  "deliveryTimeIso8601": "PT90M"
}

Wyłączenie odpowiedzialności

W tej tabeli podano właściwości typu Disclaimer:

Właściwość Typ Opis
predefinedMessage PredefinedMessage

To pole jest wymagane.

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

feeAmount Money

Partner obciąży sprzedawcę kwotą N opłaty za to zamówienie.

feeAmountRange FeeAmountRange

Partner obciąży restaurację kwotą 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 sprzedawcy opłatę N%–M% za każde zamówienie.

Oto przykład elementu 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 ma te możliwe wartości:

  • CLOSED: restauracja jest zamknięta w momencie składania zamówień.
  • NO_CAPACITY: brak dostępnych możliwości usługi (na przykład z powodu tymczasowej przerwy w działaniu z powodu szczytu sezonu).
  • NO_COURIER_AVAILABLE: nie można przetworzyć zamówienia ze względu na ograniczoną liczbę pracowników.
  • REQUIREMENTS_NOT_MET: nie zostały spełnione ograniczenia dotyczące akceptowania zamówienia (np. minimalny rozmiar koszyka).
  • UNAVAILABLE_SLOT: zamówienia nie można zrealizować przy zamówieniu z wyprzedzeniem określonym przez DeliveryInfo lub PickupInfo.
  • OUT_OF_SERVICE_AREA: nie można dostarczyć zamówienia na adres użytkownika.
  • PROMO_EXPIRED: nie udało się zastosować, ponieważ promocja wygasła.
  • PROMO_NOT_APPLICABLE: ogólny kod błędu wykrywający wszystkie przypadki nieudanego zastosowania kodu promocyjnego, gdy żaden inny błąd nie pasuje.
  • PROMO_NOT_RECOGNIZED: kod kuponu nie został rozpoznany.
  • PROMO_ORDER_INELIGIBLE: aktualne zamówienie nie kwalifikuje się do wykorzystania tego kuponu.
  • PROMO_USER_INELIGIBLE: bieżący użytkownik nie kwalifikuje się do skorzystania z tego kuponu.
  • AVAILABILITY_CHANGED: produkt jest już niedostępny lub jest ich za mało, by zrealizować żądanie.
  • INCORRECT_PRICE: błędy dotyczące ceny w opłatach lub łącznej kwocie.
  • INVALID: element zamówienia, element FulfillmentOption lub Promocja zawiera nieprawidłowe dane.
  • NOT_FOUND: nie można znaleźć elementu zamówienia, elementu FulfillmentOption ani promocji.
  • PRICE_CHANGED: cena produktu uległa zmianie.

FeeAmountRange

W tej tabeli podano 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

W tej tabeli podano właściwości typu FeePercentRange:

Właściwość Typ Opis
minFeePercent Number

Dolna granica odsetka pobranej opłaty.

maxFeePercent Number

Górna granica odsetka pobranej opłaty.

FoodCartExtension

Zawiera informacje o użytkowniku, np. preferencje realizacji zamówień.

W tej tabeli podano właściwości typu FoodCartExtension:

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

Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodCartExtension”.

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

contact Contact

Dane kontaktowe osoby odbierającej zamówienie. Obejmują one imię i nazwisko osoby, jej numer telefonu oraz adres e-mail.

fulfillmentPreference FulfillmentOption

To pole jest wymagane.

Preferencje użytkownika dotyczące realizacji zamówień.

location Location

To pole w usłudze CheckoutRequestMessage określa adres dostawy, który jest wymagany, jeśli zamówienie ma zostać dostarczone. W przypadku zamówień na wynos lub z odbiorem to pole nie jest zawarte w wiadomości.

Oto przykład elementu 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 jeden błąd, który wystąpił podczas przetwarzania żądania. W tabeli poniżej opisujemy pola typu FoodErrorExtension. Błędy można wysłać w CheckoutResponse.

W tej tabeli podano właściwości typu FoodErrorExtension:

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

To pole jest wymagane.

Typ tego rozszerzenia.

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

foodOrderErrors Lista<FoodOrderError>

To pole jest wymagane.

Tablica obiektów FoodOrderError, które opisują wykryte błędy. Zalecany jest jeden błąd na koszyk lub produkt.

Może zawierać nie mniej niż 1 element.

correctedProposedOrder ProposedOrder

Wymagane, gdy 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 zamówienie proponowane z poprawkami. Zwróć ten obiekt, jeśli w oryginalnej ofercie pakietowej występują błędy możliwe do odzyskania. Na przykład zmiana ceny co najmniej jednej pozycji w koszyku jest błędem, który można naprawić. Błędy możliwe do naprawienia z prawidłowym zamówieniem ProposedOrder są przesuwane do etapu potwierdzenia i nie wymagają od użytkownika sprawdzenia koszyka.

paymentOptions PaymentOptions

Wymagane, gdy 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".

Wybrano domyślne opcje płatności dla użytkownika.

additionalPaymentOptions Lista<PaymentOptions>

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

Oto przykład elementu 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

Definiuje dodatki do produktów spożywczych.

W tej tabeli podano właściwości typu FoodItemExtension:

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

To pole jest wymagane.

Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodItemExtension”.

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

options Lista<FoodItemOption>

Opcja może być elementem dodatku lub grupą dodatków zawierającą zestaw dodatków.

Oto przykład elementu 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

W tej tabeli podano właściwości typu FoodItemOption:

Właściwość Typ Opis
id String

Unikalny identyfikator przypisany przez Google. Gdy wysyłasz element FoodOrderError lub AsyncOrderUpdateRequest, używaj tego pola, aby rozróżniać sytuacje, gdy koszyk zawiera więcej niż jeden produkt z tym samym identyfikatorem oferty.

Przykład: 39231093

offerId String

Identyfikator oferty elementu.

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 danej opcji (jeśli są dostępne).

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 } ]

Oto przykład elementu 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 elemencie CheckoutResponse.

W tej tabeli podano właściwości typu FoodOrderError:

Właściwość Typ Opis
error Error

To pole jest wymagane.

id String

Wymagane, gdy 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 identyfikator LineItem.id w przypadku pozycji w menu i identyfikator 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

Wymagane, gdy error = "PRICE_CHANGED".

Nowa cena produktu, który spowodował błąd. Jest to wymagane tylko wtedy, gdy błąd ma wartość „PRICE_CHANGED”.

availableQuantity Liczba całkowita

Wymagane, gdy 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 ma wartość „INVALID” lub „NOT_FOUND”. W przypadku pól „INVALID” i „NOT_FOUND” wartość powinna wynosić 0.

Oto przykład elementu 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.

W tej tabeli podano właściwości typu FoodOrderExtension:

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

Typ tego rozszerzenia. To pole zawsze ma wartość „type.googleapis.com/google.actions.v2.orders.FoodOrderExtension”.

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

availableFulfillmentOptions Lista<FulfillmentOption>

Reprezentuje dostępne opcje realizacji zamówienia.

optinForRemarketing Wartość logiczna

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

Oto przykład elementu 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żywać na te sposoby:
  • W Checkout AppRequest i Submit AppRequest Cart.extension.fulfillmentPreference: zapisuje preferencje użytkownika (dostawa lub odbiór). W momencie wysyłania żądania płatności cena wynosi zawsze 0.
  • W Checkout AppResponse właściwość ProposedOrder.extension.availableFulfillmentOptions: definiuje co najmniej 1 opcję wyświetlania (obecnie obsługiwana jest tylko jedna opcja). Określasz opcję domyślną jako LineItem w ProposedOrder.otherItems. Wartość offerId w kolumnie FulfillmentOption powinna być zgodna z identyfikatorem obiektu LineItem określonym w ProposedOrder.otherItems.

W tej tabeli podano 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

To pole jest wymagane.

expiresAt Sygnatura czasowa ISO

Godzina wygaśnięcia tej opcji realizacji zamówienia.

price Money

Koszt tej opcji.

Oto przykład elementu 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

Definiuje informacje powiązane z FulfillmentInfo.

W tej tabeli podano 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 ten parametr jest widoczny, wskazuje zamówienie dostawy.

pickup Grupa 2 PickupInfo

Jeśli ten atrybut jest dostępny, wskazuje zamówienie z odbiorem.

Obraz

W tej tabeli podano właściwości typu Image:

Właściwość Typ Opis
sourceUrl String

To pole jest wymagane.

Adres URL obrazu. Minimalny rozmiar obrazu to 72 x 72 piksele. Aby uzyskać najlepszy efekt, użyj obrazu, który ma co najmniej 216 x 216 pikseli. Obraz musi mieć mniej niż 6 MB i 64 megapiksele.

LineItem

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

W tej tabeli podano właściwości typu LineItem:

Właściwość Typ Opis
id String

Wymagane, gdy 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. Wartość identyfikatora jest określana przez dostawcę w przypadku elementu zamówienia w elemencie ProposedOrder (ProposedOrder.otherItems[0].id), który służy do dodawania elementów takich jak opłaty za dostawę i podatki. Na przykład w koszyku znajdują się 2 identyczne produkty z różnymi instrukcjami przygotowania (np. 2 średnia pizza z różnymi dodatkami). W tym przypadku oba produkty mają ten sam podstawowy identyfikator oferty. Gdy wysyłasz żądanie aktualizacji zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora jako elementu odróżniającego. Inaczej mówiąc, jeśli jedna z pizzy zostanie odrzucona, ponieważ nie ma określonej dodatku, identyfikator pomoże Google określić, do której pozycji w kolejności się odnosi. To pole jest wymagane, ale nie w innych elementach.

name String

To pole jest wymagane.

Nazwa elementu zamówienia. Jest to ciąg widoczny dla użytkowników. Jeśli to możliwe, powinien być jak w zdaniu (np. „Opłata za dostawę”, „Opłata za obsługę” czy „Podatek”). Pole jest ograniczone do 100 znaków dla użytkowników.

type LineItemType

To pole jest wymagane.

quantity Liczba całkowita

Wymagane, gdy type = "REGULAR".

Uwzględniona liczba produktów. Nie dotyczy elementu ProposedOrder.otherItems.

description String

Opis produktu.

price Price

To pole jest wymagane.

Cena produktu lub elementów. Ta wartość odzwierciedla łączną cenę wszystkich towarów lub usług w przypadku danego elementu zamówienia (czyli dodaj koszt dodatków i pomnóż przez ilość). Przykład: jeśli produkt za 10 zł ma liczbę 3, cena wyniesie 30 zł. Cena jednej pizzy w cenie podstawowej 5 PLN i za dopłatą to 6 PLN. W przypadku 2 piz (ilość = 2) w cenie podstawowej wynoszącej 5 zł i z dodatkiem w wysokości 1 zł, cena wyniesie 12 zł. Każdy element zamówienia powinien mieć cenę, nawet jeśli wynosi „0”. Gdy typem jest DISCOUNT, określ wartość jako ujemną (np. „-2”).

subLines Lista<SublineNote>

Opcjonalny i prawidłowy tylko wtedy, gdy typ to „REGULAR” (REGULARNE). W tym polu w prośbach o dokonanie płatności i przesłanie zamówienia może pojawić się uwagi użytkownika dotyczące konkretnego produktu. Upewnij się, że sprzedawca otrzyma notatkę, gdy zostanie ona podana. Będzie on widoczny w żądaniu jako subLines[0].note, który jest jedyną wartością podaną w tym polu, jeśli znajduje się ona w żądaniu.

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

offerId String

Wymagane, gdy type = "REGULAR".

Identyfikator oferty elementu MenuItem dla tego produktu. Nie dotyczy elementu ProposedOrder.otherItems.

extension FoodItemExtension

Definiuje dodatki do produktów spożywczych.

Oto przykład elementu 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 ma te możliwe wartości:

  • REGULAR: element zamówienia dotyczący towarów. Dotyczy Cart.lineItems.
  • TAX: element zamówienia podatku. 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 opłatami. Powszechnie zarezerwowane dla metody 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 zawierający 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 do zamawiania jedzenia. Typ Location jest używany w Cart tylko do wskazywania miejsca docelowego zamówienia dostawy. Ostateczna lokalizacja jest też widoczna w elemencie TransactionDecisionValue, jeśli użytkownik złoży zamówienie. W przypadku zamówień z opcją odbioru lokalizacja w ogóle nie jest podana (nawet pusta).

W tej tabeli podano właściwości typu Location:

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

Wyświetlany 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

uwagi o lokalizacji, np. kody do bramy. Nazwa powinna mieć maksymalnie 500 znaków.

Przykład: Gate code is #111

Oto przykład elementu 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

W tej tabeli podano właściwości typu Merchant:

Właściwość Typ Opis
id String

Identyfikator sprzedawcy. Jeśli zostanie określony, pasuje do identyfikatora Restaurant.@id w pliku danych restauracji.

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

name String

To pole jest wymagane.

Nazwa sprzedawcy widoczna dla użytkownika.

Przykład: Falafel Bite

Oto przykład elementu Merchant:

Przykład

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

Pieniądze

W tej tabeli podano właściwości typu Money:

Właściwość Typ Opis
currencyCode String

To pole jest wymagane.

Trzyliterowy kod waluty w formacie ISO 4217.

Przykład: USD

units String

Całkowite jednostki kwoty. Jeśli np. kod waluty to „PLN”, jednostka „1” to 1 dolar amerykański.

Przykład: 36

nanos Liczba całkowita

Liczba nano (10^-9) jednostek 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 liczba jednostek jest dodatnia, nano wartość musi być dodatnia lub wynosić zero. Jeśli jednostka wynosi 0, wartość nano może być liczbą dodatnią, 0 lub ujemną. Jeśli jednostka jest ujemna, nanos musi być liczbą ujemną lub zerem. Na przykład -1,75 USD jest przedstawione jako jednostki = -1,a nanos = -750 000 000.

Przykład: 730000000

Oto przykład elementu Money:

Przykład 1

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

Przykład 2

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

Zamów

Zawiera ostateczne zamówienie z podatkami, opłatami i kosztami dostawy oraz dane karty. Ten obiekt jest odbierany przez Twoje działanie w: Submit AppRequest.

W tej tabeli podano właściwości typu Order:

Właściwość Typ Opis
finalOrder ProposedOrder

To pole jest wymagane.

Proponowana kolejność, która spowodowała to zamówienie.

googleOrderId String

To pole jest 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

To pole jest wymagane.

Data i godzina utworzenia zamówienia.

paymentInfo PaymentInfo

To pole jest wymagane.

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

Oto przykład elementu 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 tabeli poniżej opisujemy pola typu OrderUpdate, które występują w polu AppResponse.

W tej tabeli podano właściwości typu OrderUpdate:

Właściwość Typ Opis
actionOrderId String

To pole jest wymagane.

Unikalny identyfikator zamówienia w systemie integratora używany do identyfikowania zamówienia, dla którego wysyłana jest aktualizacja. Jeśli nie podasz parametru billing.user_visible_order_id w elemencie OrderUpdate dla zamówienia typu „CREATED”, tym identyfikatorem będzie wpisany identyfikator widoczny użytkownika na karcie zamówienia Google.

orderState OrderState

To pole jest wymagane.

Nowy stan zamówienia.

lineItemUpdates Map<ciąg znaków, LineItemUpdate>
updateTime Sygnatura czasowa ISO

To pole jest wymagane.

Godzina aktualizacji zamówienia.

orderManagementActions Lista<OrderManagementAction>

Działania po zamówieniu, np. kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia.

Może zawierać nie mniej niż 1 element i maksymalnie 6 elementów.

rejectionInfo RejectionInfo

Wymagane, gdy orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Wymagane, gdy orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

To pole zostało wycofane.

fulfillmentInfo FulfillmentInfo

To pole zostało wycofane.

receipt Receipt

Wymagane, gdy orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

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

totalPrice Price

Łączna cena zamówienia.

infoExtension FoodOrderUpdateExtension

Definiuje dodatkowe szczegóły aktualizacji zamówienia, takie jak odstęp między szacowanym czasem dostawy lub odbioru.

Oto przykład elementu 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

W tej tabeli podano 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 jest jak najwcześniejszy. Więcej informacji: https://pl.wikipedia.org/wiki/ISO_8601#Connectedd_date_and_time_representations Użyj tych wartości, aby zaktualizować szacowany czas odbioru w momencie płatności.

Przykład: PT90M

Oto przykład elementu PickupInfo:

Przykład

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

W tej tabeli podano właściwości typu PostalAddress:

Właściwość Typ Opis
regionCode String

To pole jest wymagane.

Dwuliterowy kod kraju.

Przykład: US

postalCode String

Kod pocztowy.

Przykład: 94043

administrativeArea String

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

Przykład: CA

locality String

Miasto lub miejscowość w tej lokalizacji. W regionach świata, w których miejscowości nie są dobrze zdefiniowane lub nie mieszczą się w tej strukturze, nie określaj ich, 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. To pole nie powinno być modyfikowane, ponieważ może zawierać niejasne lokalizacje.

Przykład: [ "1350 Charleston Road" ]

recipients List<String>

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

Oto przykład elementu PostalAddress:

Przykład

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

Cena

W tej tabeli podano właściwości typu Price:

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

To pole jest wymagane.

Kod kuponu promocyjnego.

amount Money

To pole jest wymagane.

Promocja

W tej tabeli podano właściwości typu Promotion:

Właściwość Typ Opis
coupon String

To pole jest wymagane.

Kod kuponu promocyjnego.

ProposedOrder

W tej tabeli podano właściwości typu ProposedOrder:

Właściwość Typ Opis
id String

Opcjonalny identyfikator proponowanego zamówienia.

cart Cart

To pole jest wymagane.

Elementy użytkownika.

otherItems Lista<LineItem>

Produkty dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Inne produkty mogą też zawierać napiwki lub rabaty dodane przez użytkownika.

Maksymalna liczba elementów to 10.

image Image

Obraz powiązany z proponowanym zamówieniem.

totalPrice Price

To pole jest wymagane.

Łączna cena proponowanego zamówienia.

extension FoodOrderExtension

To pole jest wymagane.

Definiuje informacje o realizacji zamówień jedzenia.

disclaimers Lista<Disclaimer>

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

Oto przykład elementu 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

W tej tabeli podano właściwości typu SublineNote:

Właściwość Typ Opis
note String

To pole jest wymagane.

Sygnatura czasowa

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

TransactionDecisionValue

Zawiera Order.

W tej tabeli podano właściwości typu TransactionDecisionValue:

Właściwość Typ Opis
order Order

To pole jest wymagane.

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

Oto przykład elementu 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

W tej tabeli podano 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>

To pole jest wymagane.

Zawiera oczekiwane argumenty umożliwiające płatność za koszyk.

Musi zawierać dokładnie 1 produkt.

Oto przykład elementu 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 obiekt AppRequest z intencją actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

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

Rozmowa

Element Conversation występuje tylko w jednej sesji. W razie potrzeby możesz w niej połączyć kilka działań Checkout i SubmitOrder.

W tej tabeli podano właściwości typu Conversation:

Właściwość Typ Opis
conversationId String

To pole jest wymagane.

Unikalny identyfikator rozmowy.

Oto przykład elementu Conversation:

Przykład

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Dane wejściowe

Oczekiwane argumenty realizacji koszyka.

W tej tabeli podano właściwości typu Input:

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

To pole jest wymagane.

Ustaw „actions.foodordering.intent.CheckOUT” w przypadku wiadomości z prośbą o zamówienie lub „actions.intent.TRANSACTION_DECISION” w przypadku wiadomości z prośbą o zamówienie.

arguments Lista<Argument>

To pole jest wymagane.

Zawiera koszyk na zakupy lub zamówienie do złożenia

Musi zawierać dokładnie 1 produkt.

Argument

Zawiera szczegółowe informacje na temat produktów spożywczych, które użytkownik chce wypróbować. W przypadku płatności można użyć tylko rozszerzenia. Przy składaniu zamówienia można wykorzystać tylko wartość transactionDecisionValue

W tej tabeli podano 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 do złożenia oraz dane do płatności.

Odpowiedź dotycząca realizacji zamówienia

AppResponse

W tej tabeli podano właściwości typu AppResponse:

Właściwość Typ Opis
expectUserResponse Stała

Ustaw na „false” (fałsz).

Wartość: False

finalResponse FinalResponse

To pole jest wymagane.

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

Oto przykład elementu 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 prośbę o płatność koszyka lub wiadomość SubmitOrderRequestMessage.

W tej tabeli podano właściwości typu FinalResponse:

Właściwość Typ Opis
richResponse RichResponse

To pole jest wymagane.

Zawiera Twoją odpowiedź na wiadomość CheckoutRequestMessage lub SubmitOrderRequestMessage.

CheckoutResponse

W tej tabeli podano właściwości typu CheckoutResponse:

Właściwość Typ Opis
proposedOrder ProposedOrder

To pole jest wymagane.

Proponowane zamówienie do użycia w ramach transakcji.

paymentOptions PaymentOptions

To pole jest wymagane.

Domyślna opcja płatności wybrana dla użytkownika.

additionalPaymentOptions Lista<PaymentOptions>

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

Oto przykład elementu 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 prośbę o płatność koszyka lub wiadomość SubmitOrderRequestMessage.

W tej tabeli podano właściwości typu Item:

Właściwość Typ Opis
structuredResponse StructuredResponse

To pole jest wymagane.

RichResponse

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

W tej tabeli podano właściwości typu RichResponse:

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

To pole jest wymagane.

Musi zawierać dokładnie 1 produkt.

StructuredResponse

W przypadku wiadomości CheckoutResponseMessage może to być jedna z następujących wartości: CheckoutResponse Wskazuje pomyślną transakcję. LUB FoodErrorExtension: oznacza błąd podczas płatności. Odpowiedź może zawierać poprawione elementy ProposedOrder i PaymentOptions lub komunikat o błędzie bez PaymentOptions. W przypadku elementu SubmitOrderResponseMessage dostępna jest tylko wartość orderUpdate.

W tej tabeli podano 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

Zakupione produkty plus podatki i rabaty.

error Grupa 2 FoodErrorExtension

Błędy zaobserwowane w produktach w koszyku. W zależności od charakteru błędu ta właściwość może zawierać poprawione elementy ProposedOrder i PaymentOptions lub po prostu komunikat o błędzie bez PaymentOptions.

orderUpdate Grupa 3 OrderUpdate

Aktualizacje zamówień asynchronicznych

W tej sekcji opisujemy ogólne typy, które składają się na żądania i odpowiedzi związane z typową interakcją wbudowaną w funkcje zamawiania jedzenia.

AsyncOrderUpdateRequestMessage

Powiadamia użytkownika o zmianach po złożeniu i potwierdzeniu zamówienia. Możesz na przykład powiadomić użytkownika, że zamówienie jest w trakcie transportu lub że zmieniła się cena. Więcej szczegółów w

W tej tabeli podano właściwości typu AsyncOrderUpdateRequestMessage:

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

Wskazuje, że zamówienie, w którego przypadku wysłano tę aktualizację, jest płatnością w trybie piaskownicy.

customPushMessage CustomPushMessage

To pole jest wymagane.

Zawiera wartość OrderUpdate dla żądania.

Oto przykład elementu 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 żądanie AsyncOrderUpdateRequestMessage, Google w odpowiedzi ze stanem HTTP 200 i pustą treścią. W przypadku niepowodzenia aktualizacji Google poinformuje Cię o przyczynach niepowodzenia aktualizacji.

Rodzaje aktualizacji zamówień

Przycisk

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

W tej tabeli podano właściwości typu Button:

Właściwość Typ Opis
title String

To pole jest wymagane.

Etykieta wyświetlana. Aby reklamy były prawidłowo renderowane, używaj wielkości liter o długości do 30 znaków.

Przykład: Contact us

openUrlAction OpenUrlAction

To pole jest wymagane.

Oto przykład elementu Button:

Przykład

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

CancellationInfo

W tej tabeli podano właściwości typu CancellationInfo:

Właściwość Typ Opis
reason String

To pole jest wymagane.

Możliwa do wyświetlenia przyczyna odrzucenia, gdy element OrderState.state ma wartość „CANCELLED”.

Przykład: Restaurant closed

Oto przykład elementu CancellationInfo:

Przykład

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ten typ podaje użytkownikowi szacowany czas, po którym zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Wysyłaj to rozszerzenie w polu OrderUpdate, jeśli informacje są dostępne lub ulegną zmianie od czasu ostatniego wysłania.

Podaj ostrożne szacunki dla przedziału czasu realizacji, aby konsekwentnie spełniać oczekiwania użytkowników. Jeśli np. zamówienie ma zostać dostarczone dziś o 13:00, musisz przesłać szacowany odstęp czasu zgodny ze zmianami wynikającymi z warunków na drodze, np. dzisiaj, od 12:45 do 13:15.

Czas trwania lub sygnatura czasowa zgodnego z normą ISO 8601 jest interpretowana jako odstęp czasu od updateTime elementu OrderUpdate (w zasadzie „teraz”) do updateTime plus duration. Nie używaj tego formatu, chyba że „teraz” jest uzasadnione.

Odstęp w standardzie ISO 8601 oznacza odstęp czasu od początku do końca przedziału czasu.

W tej tabeli podano właściwości typu FoodOrderUpdateExtension:

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

Typ tego rozszerzenia. To pole zawsze ma wartość „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 stałemu czasowi. Dopuszczalne konwencje to: Interwały, Czasy trwania i Daty/godziny. To pole można wysłać w elemencie SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy te informacje staną się dostępne lub gdy nastąpi zmiana, np. wcześniejsze lub opóźnione przyloty.

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 jest jeden błąd na koszyk lub produkt. Użyj FoodOrderUpdateExtension.FoodOrderErrors w przypadku błędów, których nie da się zdefiniować w informacjach o odrzuceniu.

Może zawierać nie mniej niż 1 element.

Oto przykład elementu 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

W tej tabeli podano 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 szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

pickupTime Grupa 2 Sygnatura czasowa ISO

Użyj wartości szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

Oto przykład elementu FulfillmentInfo:

Przykład 1

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

Przykład 2

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

InTransitInfo

W tej tabeli podano właściwości typu InTransitInfo:

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

Użyj wartości szacunkowaFulfillmentTimeIso8601 w komunikacie FoodOrderingUpdateExtension

Oto przykład elementu InTransitInfo:

Przykład

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

LineItemUpdate

W tej tabeli podano właściwości typu LineItemUpdate:

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

Powód zmiany. Wymagane w przypadku zmian cen.

Oto przykład elementu LineItemUpdate:

Przykład

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

OpenUrlAction

W tej tabeli podano właściwości typu OpenUrlAction:

Właściwość Typ Opis
url String

To pole jest wymagane.

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

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

OrderManagementAction

Funkcja zarządzania zamówieniami umożliwia użytkownikom korzystanie z pomocy posprzedażowej. Należy ją wysyłać na adres OrderUpdate w złożonym zamówieniu AppResponse. Kolejne działania związane z zarządzaniem zamówieniami (AsyncOrderUpdateRequestMessage) wysyłane w przypadku konkretnego zamówienia mogą być różne w zależności od stanu.

Na przykład w stanie „UTWORZONO” ciąg CUSTOMER_SERVICE może wskazywać Twój numer telefonu do obsługi klienta. Następnie w stanie „POTWIERDZONO” CUSTOMER_SERVICE może zmienić numer telefonu na numer restauracji, jeśli będzie to najlepszy punkt kontaktu dla klienta. Podobnie gdy zamówienie będzie miało stan „SPEŁNIONE”, CUSTOMER_SERVICE może podać Ci adres e-mail do kontaktu z zespołem pomocy.

W tej tabeli podano właściwości typu OrderManagementAction:

Właściwość Typ Opis
type OrderManagementActionType

To pole jest wymagane.

button Button

To pole jest wymagane.

Oto przykład elementu 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

Definiuje typy powiązane z OrderManagementAction.

Typ OrderManagementActionType ma te możliwe wartości:

  • CUSTOMER_SERVICE: adres e-mail lub numer kontaktowy obsługi klienta, który będzie wyświetlany na stronie potwierdzenia zamówienia. To pole jest wymagane. Prefiks openUrlAction.url musi mieć wartość „mailto”, „tel”, „http” lub „https”.
  • EMAIL: działanie e-maila tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć wartość „mailto”.
  • CALL_DRIVER: wywołanie działania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć postać „tel”.
  • CALL_RESTAURANT: wywołanie działania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi mieć postać „tel”.

OrderState

Obecny stan zamówienia. Każda wartość state w kolumnie OrderState odpowiada też stanowi zakupu na stronie myaccount.google.com.

W tej tabeli podano właściwości typu OrderState:

Właściwość Typ Opis
state OrderStateEnum

To pole jest wymagane.

label String

To pole jest wymagane.

Widoczny dla użytkowników ciąg znaków wyświetlany w konkretnym stanie. Stosuj wielkość liter jak w zdaniu.

Przykład: Your order has been received

Oto przykład elementu OrderState:

Przykład

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

OrderStateEnum

Definiuje typy powiązane z OrderState.

Typ OrderStateEnum ma te możliwe wartości:

  • CREATED: zamówienie utworzone przez integratora i oczekiwanie na potwierdzenie przez usługodawcę. Odpowiada on stanowi zakupu „Zamówione”.
  • CONFIRMED: zamówienie potwierdzone przez dostawcę i aktywne. Odpowiada to stanowi zakupu „Zaakceptowano”.
  • REJECTED: zamówienie odrzucone przez integratora lub dostawcę. Odpowiada to stanowi „Odrzucony”.
  • CANCELLED: użytkownik anulował zamówienie. Odpowiada on stanowi zakupu „Anulowany”.
  • IN_PREPARATION: jedzenie jest przygotowywane. Odpowiada to stanowi zakupu „Nieznany stan”.
  • READY_FOR_PICKUP: jedzenie jest gotowe do odbioru. Odpowiada to stanowi zakupu „Gotowe do odbioru”.
  • IN_TRANSIT: zamówienie jest dostarczane. Odpowiada to stanowi zakupu „W toku”.
  • FULFILLED: użytkownik otrzymał zamówienie. Odpowiada to stanowi zakupu „Odebrany”.

Rachunek

Wyślij ten typ w zleceniu AppResponse, gdzie OrderState to „POTWIERDZONO”, „FULFILLED” lub „IN_TRANSIT”. Wyślij potwierdzenie, gdy userVisibleOrderId będzie dostępny. Nie musisz wysyłać potwierdzenia za każdym razem.

W tej tabeli podano właściwości typu Receipt:

Właściwość Typ Opis
userVisibleOrderId String

To pole jest wymagane.

Wymagane, jeśli zamówienie ma stan „CONFIRMED”, „IN_TRANSIT” lub „FULFILLED”. To pole to identyfikator tego zamówienia (zwykle identyfikator zamówienia w restauracji) widoczny zarówno na rachunku integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość użycia tego identyfikatora do odwołania się do zamówienia na obsługę klienta u dostawcy i integratora. Wystarczy, że podasz ten identyfikator tylko raz dla danego elementu OrderUpdate. Dopóki nie zostanie podany, parametr actionOrderId to parametr userVisibleOrderId. Na przykład nie możesz mieć parametru userVisibleOrderId, dopóki restauracja nie potwierdzi zamówienia. Po potwierdzeniu musisz wysłać żądanie AsyncOrderUpdateRequestMessage z poleceniem OrderUpdate i potwierdzeniem.

Oto przykład elementu Receipt:

Przykład

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

W tej tabeli podano właściwości typu RejectionInfo:

Właściwość Typ Opis
type RejectionType

To pole jest wymagane.

reason String

Przyczyna odrzucenia używana do logowania wewnętrznego. To pole jest niewidoczne dla użytkowników.

Oto przykład elementu RejectionInfo:

Przykład

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

RejectionType

Typ RejectionType ma te możliwe wartości:

  • INELIGIBLE: użytkownik nie kwalifikuje się ze względu na problemy związane z zasadami lub ryzykiem.
  • PAYMENT_DECLINED: wystąpił problem z przetwarzaniem płatności.
  • UNAVAILABLE_SLOT: zamówienia nie można zrealizować przy zamówieniu z wyprzedzeniem określonym przez 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 opisujemy rodzaje płatności związane z zamawianiem jedzenia.

ActionProvidedPaymentOptions

Wymagania dotyczące formy płatności z konkretnym działaniem.

W tej tabeli podano właściwości typu ActionProvidedPaymentOptions:

Właściwość Typ Opis
paymentType PaymentType

To pole jest wymagane.

displayName String

To pole jest wymagane.

Nazwa instrumentu płatniczego widoczna na potwierdzeniu.

Przykład: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dodatkowe dane dla elementu paymentType „ON_FULFILLMENT”. Możesz na przykład użyć tego pola, aby określić, czy w ramach realizacji transakcji realizowana jest płatność gotówką czy kartą płatniczą.

Oto przykład elementu ActionProvidedPaymentOptions:

Przykład

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

AllowedAuthMethods

Typ AllowedAuthMethods ma te możliwe wartości:

  • PAN_ONLY: metoda 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, w którym karta traci ważność.

AllowedCardNetworks

Typ AllowedCardNetworks ma te możliwe 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.

W tej tabeli podano 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 i kod pocztowy. PEŁNA: imię i nazwisko, ulica i numer domu, miejscowość, region, kod kraju, kod pocztowy.

Oto przykład elementu 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.

W tej tabeli podano właściwości typu CardParameters:

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

To pole jest wymagane.

Pola obsługiwane do uwierzytelniania transakcji kartą.

Może zawierać nie mniej niż 1 element.

allowedCardNetworks Lista<AllowedCardNetworks>

To pole jest wymagane.

Sieci kart, które są obsługiwane przez Ciebie i Google Pay API.

Może zawierać nie mniej niż 1 element.

billingAddressRequired Wartość logiczna

Ustaw „true”, jeśli wymagasz adresu rozliczeniowego. Poproś o adres rozliczeniowy tylko wtedy, gdy jest wymagany do przetworzenia transakcji. Dodatkowe żądania danych mogą powodować błędy w procesie płatności i obniżać współczynniki 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 usługi TimesofMoney, lub „false” (fałsz) w przypadku wszystkich innych firm obsługujących płatności.

Oto przykład elementu 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

W tej tabeli podano właściwości typu GoogleProvidedPaymentInstrument:

Właściwość Typ Opis
instrumentToken String

To pole jest wymagane.

Ciąg znaków zakodowany algorytmem Base64 zawierający token płatności służący do obciążania użytkownika za pomocą firmy obsługującej Google Pay zgodnie z wcześniej określoną wartością GoogleProvidedPaymentOptions.

billingAddress PostalAddress

Adres rozliczeniowy powiązany z płatnością.

Oto przykład elementu 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.

W tej tabeli podano właściwości typu GoogleProvidedPaymentOptions:

Właściwość Typ Opis
facilitationSpecification String

Plik JSON PaymentDataRequest 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 facilitationSpecification. Typ sieci kart obsługiwanych przez agenta.

To pole zostało wycofane.

prepaidCardDisallowed Wartość logiczna

Zamiast tego użyj facilitationSpecification. Określa, czy karta przedpłacona jako forma płatności jest dopuszczana.

To pole zostało wycofane.

billingAddressRequired Wartość logiczna

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

To pole zostało wycofane.

tokenizationParameters TokenizationParameters

To pole zostało wycofane.

Oto przykład elementu 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.

W tej tabeli podano właściwości typu MerchantInfo:

Właściwość Typ Opis
merchantId String

Identyfikator sprzedawcy w Google wydany przez Google Pay.

merchantName String

To pole jest 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 elementu PaymentType „ON_FULFILLMENT”.

W tej tabeli podano 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.

Oto przykład elementu OnFulfillmentPaymentData:

Przykład

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

Parametry

Definiuje typy powiązane z TokenizationParameters.

W tej tabeli podano właściwości typu Parameters:

Właściwość Typ Opis
gateway String

To pole jest wymagane.

Przykład: braintree

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

Oto przykład elementu 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.

W tej tabeli podano właściwości typu PaymentDataRequest:

Właściwość Typ Opis
apiVersion Stała

To pole jest wymagane.

Główna wersja interfejsu API.

Wartość: 2

apiVersionMinor Stała

To pole jest wymagane.

Pomocnicza wersja interfejsu API.

Wartość: 0

merchantInfo MerchantInfo

To pole jest wymagane.

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

allowedPaymentMethods Lista<PaymentMethod>

To pole jest wymagane.

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

transactionInfo TransactionInfo

To pole jest wymagane.

Szczegółowe informacje o autoryzacji transakcji w zależności od tego, czy użytkownik wyraził zgodę na transakcję. To pole zawiera łączną cenę i stan ceny.

Oto przykład elementu 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.

W tej tabeli podano właściwości typu PaymentInfo:

Właściwość Typ Opis
displayName String

To pole jest wymagane.

Widoczna dla użytkownika nazwa instrumentu płatniczego, która będzie widoczna na potwierdzeniu.

paymentType PaymentType

To pole jest wymagane.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

Oto przykład elementu 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.

W tej tabeli podano właściwości typu PaymentMethod:

Właściwość Typ Opis
type Stała

To pole jest wymagane.

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

Wartość: CARD

parameters CardParameters

To pole jest wymagane.

Parametry niezbędne do skonfigurowania podanej formy płatności.

tokenizationSpecification TokenizationSpecification

To pole jest wymagane.

Skonfiguruj konto lub dostawcę usług odszyfrowywania, aby otrzymać dane do płatności. Ta właściwość jest wymagana w przypadku formy płatności CARD.

Oto przykład elementu 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

W tej tabeli podano 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 wykluczające się z actionProvidedOptions. Użyj go do płatności online za pomocą gPay.

actionProvidedOptions Grupa 2 ActionProvidedPaymentOptions

Wzajemnie wykluczające się z googleProvidedOptions. Użyj dla opcji „gotówka przy odbiorze” lub „płatność za realizację”.

Oto przykład elementu 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 ma te możliwe wartości:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Typ PaymentType ma te możliwe wartości:

  • PAYMENT_CARD: element GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: element ActionProvidedPaymentOptions.

SupportedCardNetworks

Definiuje typy powiązane z GoogleProvidedPaymentOptions.

Typ SupportedCardNetworks ma te możliwe wartości:

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

TokenizationParameters

Definiuje typy powiązane z: GoogleProvidedPaymentOptions.

W tej tabeli podano właściwości typu TokenizationParameters:

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

To pole jest wymagane.

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

parameters Parameters

Zamiast tego użyj facilitationSpecification.

TokenizationSpecification

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

W tej tabeli podano właściwości typu TokenizationSpecification:

Właściwość Typ Opis
type Stała

To pole jest wymagane.

parameters Parameters

To pole jest wymagane.

Oto przykład elementu 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 wykorzystywany do wyświetlania okna autoryzacji płatności.

W tej tabeli podano właściwości typu TransactionInfo:

Właściwość Typ Opis
currencyCode String

To pole jest wymagane.

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

transactionId String

Unikalny identyfikator, który określa próbę dokonania 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 Stała

To pole jest wymagane.

Użyj wartości „ESTIMATED” jako wartości 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

To pole jest wymagane.

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

Oto przykład elementu TransactionInfo:

Przykład

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