Schemat działań związanych z realizacją

Na tej stronie znajdziesz opis ładunku usługi internetowej realizacji zamówienia (interfejs API służący do zamawiania produktów od początku do końca) podczas pracy z interfejsem API służącym do zamawiania produktów od początku do końca z wbudowaną akcją. Wersję tych informacji czytelną dla komputera możesz pobrać w formie schematu JSON.

Typy podstaw

Koszyk

Zawiera szczegóły zamówienia oraz informację, czy prośba dotyczy odbioru czy dostawy. Koszyk zawiera też szczegóły dostawy, napiwek i adres dostawy. Obiekt Cart jest zdefiniowany w pliku Checkout AppRequest.f. W pliku Checkout AppResponse znajduje się kopia koszyka.

W tabeli poniżej podano właściwości typu Cart:

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

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

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

id String

Opcjonalny identyfikator koszyka.

merchant Merchant

Sprzedawca powiązany z tym koszykiem.

lineItems List<LineItem>

Wymagane.

Lista towarów lub usług, które użytkownik zamawia.

W menu musi być co najmniej 1 pozycja.

promotions List<Promotion>

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

notes String

Uwagi dotyczące zamówienia lub instrukcji dostawy.

extension FoodCartExtension

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

Ten przykład przedstawia element Cart:

Przykład 1

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

Przykład 2

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

Kontakt

Określa szczegóły osoby, która odbiera zamówienie. Jest ona dostępna tylko w AppResponse.

W tabeli poniżej podano właściwości typu Contact:

Właściwość Typ Opis
displayName String

Imię i nazwisko osoby odbierającej zamówienie, które ma być wyświetlane. Użyj tego pola, jeśli nie podasz atrybutów firstName i lastName.

Przykład: Lovefood Ordering

email String

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

Przykład: ilovefood@example.com

firstName String

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

Przykład: Lovefood

lastName String

Nazwisko osoby, która odbiera 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 odbierająca zamówienie jest zalogowana na swoje konto Google.

Ten przykład przedstawia element Contact:

Przykład

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

CustomPushMessage

Zawiera OrderUpdate żądania.

W tabeli poniżej podano właściwości typu CustomPushMessage:

Właściwość Typ Opis
orderUpdate OrderUpdate

Wymagane.

zaktualizowane informacje o zamówieniu;

Ten przykład przedstawia element CustomPushMessage:

Przykład

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

DeliveryInfo

W tabeli poniżej podano właściwości typu DeliveryInfo:

Właściwość Typ Opis
deliveryTimeIso8601 String

Przewidywany czas dostawy w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub formacie czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania 90 minut. Wartość domyślna „PT0M” wskazuje, że preferowany czas dostawy to jak najszybciej. Źródło: https://pl.wikipedia.org/wiki/ISO_8601#Połączone_odzwierciedlenie_daty_i_czasu. Użyj tego, aby zaktualizować szacowany czas dostawy w odpowiedzi na proces płatności.

Przykład: PT90M

Ten przykład przedstawia element DeliveryInfo:

Przykład

{
  "deliveryTimeIso8601": "PT90M"
}

Wyłączenie odpowiedzialności

W tabeli poniżej podano właściwości typu Disclaimer:

Właściwość Typ Opis
predefinedMessage PredefinedMessage

Wymagane.

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

feeAmount Money

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

feeAmountRange FeeAmountRange

Partner obciąży restaurację opłatą w wysokości N–M zł za zamówienie.

feePercent Number

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

feePercentRange FeePercentRange

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

Ten przykład przedstawia element Disclaimer:

Przykład 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Przykład 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Przykład 3

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

Przykład 4

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

Przykład 5

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

Przykład 6

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

Błąd

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

  • CLOSED: restauracja jest zamknięta w momencie składania zamówienia.
  • NO_CAPACITY: brak dostępnej pojemności usługi (np. tymczasowa przerwa z powodu godzin szczytu).
  • NO_COURIER_AVAILABLE: nie można zrealizować zamówienia z powodu ograniczonej liczby pracowników odpowiedzialnych za dostawę.
  • REQUIREMENTS_NOT_MET: nie zostały spełnione ograniczenia dotyczące przyjęcia zamówienia (np. minimalna wielkość koszyka).
  • UNAVAILABLE_SLOT: zamówienie nie może zostać zrealizowane w czasie określonym w danych DeliveryInfo lub PickupInfo.
  • OUT_OF_SERVICE_AREA: zamówienia nie można dostarczyć na adres użytkownika.
  • PROMO_EXPIRED: nie udało się zastosować rabatu, ponieważ promocja wygasła.
  • PROMO_NOT_APPLICABLE: ogólny kod błędu, który obejmuje wszystkie przypadki nieudanego zastosowania kodu promocyjnego, jeśli żaden z innych kodów błędów kodu promocyjnego nie pasuje.
  • PROMO_NOT_RECOGNIZED: kod kuponu nie został rozpoznany.
  • PROMO_ORDER_INELIGIBLE: bieżące zamówienie nie kwalifikuje się do tego kuponu.
  • PROMO_USER_INELIGIBLE: obecny użytkownik nie kwalifikuje się do korzystania z tego kuponu.
  • AVAILABILITY_CHANGED: produkt jest niedostępny lub jest zbyt mała liczba produktów, aby zrealizować żądanie.
  • INCORRECT_PRICE: błędy dotyczące cen opłat lub łącznej kwoty.
  • INVALID: element zamówienia, opcja realizacji lub promocja zawierają nieprawidłowe dane.
  • NOT_FOUND: nie można znaleźć elementu lineItem, opcji realizacji zamówienia ani promocji.
  • PRICE_CHANGED: cena produktu uległa zmianie.

FeeAmountRange

W tabeli poniżej 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 tabeli poniżej podano właściwości typu FeePercentRange:

Właściwość Typ Opis
minFeePercent Number

Dolna granica procentu naliczonej opłaty.

maxFeePercent Number

Górna granica procentu opłaty.

FoodCartExtension

Zawiera informacje o użytkowniku, np. preferencje dotyczące realizacji.

W tabeli poniżej podano właściwości typu FoodCartExtension:

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

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

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

contact Contact

Dane kontaktowe osoby, która odbiera zamówienie. Szczegóły obejmują imię i nazwisko, numer telefonu oraz adres e-mail.

fulfillmentPreference FulfillmentOption

Wymagane.

preferencje użytkownika dotyczące realizacji zamówienia;

location Location

W polu CheckoutRequestMessage to pole określa adres dostawy, który jest wymagany, jeśli zamówienie ma być dostarczone. W przypadku zamówień na wynos lub do odbioru to pole nie jest uwzględniane w wiadomości.

Ten przykład przedstawia element FoodCartExtension:

Przykład 1

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

Przykład 2

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

FoodErrorExtension

Identyfikuje co najmniej 1 błąd, który wystąpił podczas przetwarzania żądania. W tej tabeli opisujemy pola typu FoodErrorExtension. Błędy można przesyłać w formie CheckoutResponse.

W tabeli poniżej podano właściwości typu FoodErrorExtension:

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

Wymagane.

Typ tego rozszerzenia.

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

foodOrderErrors List<FoodOrderError>

Wymagane.

Tablica obiektów FoodOrderError, które opisują występujące błędy. Zalecamy 1 błąd na koszyk lub produkt.

W menu musi być co najmniej 1 pozycja.

correctedProposedOrder ProposedOrder

Wymagane, jeśli foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

nowe ProposedOrder z poprawkami; Zwracaj ten obiekt, jeśli w pierwotnym obiekcie ProposedOrder występują błędy, które można naprawić. Na przykład zmiana ceny co najmniej jednego elementu zamówienia w koszyku jest błędem, który można naprawić. Odwracalne błędy z ważnym elementem ProposedOrder są przesyłane do etapu potwierdzenia zamiast wymagać od użytkownika sprawdzenia koszyka.

paymentOptions PaymentOptions

Wymagane, jeśli foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

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

additionalPaymentOptions List<PaymentOptions>

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

Ten przykład przedstawia element FoodErrorExtension:

Przykład

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

FoodItemExtension

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

W tabeli poniżej podano właściwości typu FoodItemExtension:

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

Wymagane.

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

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

options List<FoodItemOption>

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

Ten przykład przedstawia element FoodItemExtension:

Przykład

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

FoodItemOption

W tabeli poniżej podano właściwości typu FoodItemOption:

Właściwość Typ Opis
id String

Unikalny identyfikator przypisany przez Google. Gdy wysyłasz FoodOrderError lub AsyncOrderUpdateRequest, użyj tego pola, aby rozróżnić przypadki, gdy koszyk zawiera więcej niż 1 element o tej samej wartości offerId.

Przykład: 39231093

offerId String

Identyfikator oferty produktu.

Przykład: 912835081

name String

Nazwa opcji.

Przykład: Honey Mustard

price Money
note String

Uwaga dotycząca opcji.

quantity Number

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

Przykład: 3

subOptions List<FoodItemOption>

Opcje podrzędne, jeśli występują.

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

Ten przykład przedstawia element FoodItemOption:

Przykład 1

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

Przykład 2

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

FoodOrderError

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

W tabeli poniżej podano właściwości typu FoodOrderError:

Właściwość Typ Opis
error Error

Wymagane.

id String

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

To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to identyfikator przypisany przez Google do pozycji menu lub opcji produktu spożywczego.

description String

Opis błędu. Ten opis służy do wewnętrznego rejestrowania danych i nie jest widoczny dla użytkowników.

updatedPrice Money

Wymagane, jeśli error = "PRICE_CHANGED".

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

availableQuantity Liczba całkowita

Wymagane, jeśli error = "INVALID", or "NOT_FOUND".

nowa dostępna liczba sztuk produktu, który spowodował błąd; Jest to wymagane tylko wtedy, gdy błąd to „INVALID” lub „NOT_FOUND”. Wartość powinna wynosić 0 w przypadku wartości „INVALID” i „NOT_FOUND”.

Ten przykład przedstawia element FoodOrderError:

Przykład 1

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

Przykład 2

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

FoodOrderExtension

Zawiera informacje o wypełnieniu zamówienia.

W tabeli poniżej podano właściwości typu FoodOrderExtension:

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

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

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

availableFulfillmentOptions List<FulfillmentOption>

Reprezentuje dostępne opcje realizacji zamówienia.

optinForRemarketing Wartość logiczna

prośba użytkownika o dołączenie do kanałów marketingowych, Domyślnie nie możesz wysyłać treści marketingowych bez zgody użytkownika. Jeśli opcja optinForRemarketing ma wartość true, możesz subskrybować użytkownika. Jeśli opcja optinForRemarketing ma wartość false lub nie występuje, musisz zachować stan subskrypcji w swoim systemie. Użytkownicy nie mogą zrezygnować z remarketingu przez Google, tylko za pomocą funkcji anulowania subskrypcji dostępnej w Twoich kanałach marketingowych. Ta flaga jest obecna tylko w SubmitOrderRequestMessage.

Ten przykład przedstawia element FoodOrderExtension:

Przykład 1

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

Przykład 2

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

FulfillmentOption

Obiekt FulfillmentOption możesz używać na te sposoby:
  • W elementach Checkout AppRequestSubmit AppRequest:Cart.extension.fulfillmentPreference: przechowuje preferencje użytkownika (dostawę lub odbiór). Cena zawsze wynosi 0, gdy wysyłane jest żądanie płatności.
  • W elementach Checkout AppResponse: ProposedOrder.extension.availableFulfillmentOptions: określa co najmniej jedną opcję dostawy (obecnie obsługiwana jest tylko jedna opcja). Opcja domyślna jest określana jako LineItem w ProposedOrder.otherItems. offerId obiektu FulfillmentOption powinien być zgodny z identyfikatorem LineItem podanym w ProposedOrder.otherItems.

W tabeli poniżej podano właściwości typu FulfillmentOption:

Właściwość Typ Opis
offerId String

Unikalny identyfikator tej opcji realizacji, jeśli występuje.

fulfillmentInfo FulfillmentOptionInfo

Wymagane.

expiresAt Sygnatura czasowa ISO

Czas, w którym ta opcja realizacji wygasa.

price Money

Koszt tej opcji.

Ten przykład przedstawia element FulfillmentOption:

Przykład

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

FulfillmentOptionInfo

Określa informacje związane z FulfillmentInfo.

W tabeli poniżej 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

W przypadku, gdy jest obecny, wskazuje zamówienie dostawy.

pickup Grupa 2 PickupInfo

Wskazanie zamówienia na odbiór.

Obraz

W tabeli poniżej podano właściwości typu Image:

Właściwość Typ Opis
sourceUrl String

Wymagane.

Adres URL obrazu. Obraz powinien mieć co najmniej 72 x 72 piksele. Aby osiągnąć najlepsze rezultaty, użyj obrazu, który ma co najmniej 216 × 216 pikseli. Obraz nie może być większy niż 6 MB i 64 megapiksele.

LineItem

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

W tabeli poniżej podano właściwości typu LineItem:

Właściwość Typ Opis
id String

Wymagane, jeśli type = "REGULAR".

W przypadku pozycji w koszyku (ProposedOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. W przypadku elementu zamówienia w usłudze ProposedOrder (ProposedOrder.otherItems[0].id), która służy do dodawania elementów takich jak opłaty za dostawę i podatki, wartość atrybutu id jest definiowana przez dostawcę. Na przykład w koszyku znajdują się 2 te same produkty z różnymi instrukcjami przygotowania (np. 2 średnie pizze z różnymi dodatkami). W tym przypadku oba produkty mają ten sam identyfikator oferty podstawowej. Gdy wysyłasz prośbę o zaktualizowanie zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora jako elementu rozróżniającego. Innymi słowy, jeśli jedna z pizz zostanie odrzucona, ponieważ brakuje na niej określonego dodatku, identyfikator pomoże Google określić, który produkt w zamówieniu jest objęty reklamacją. To pole jest wymagane z wyjątkiem innych elementów.

name String

Wymagane.

Nazwa elementu zamówienia. Jest to widoczny dla użytkownika ciąg tekstowy, który w miarę możliwości powinien być zapisany wielkimi literami (np. „Opłata za dostawę”, „Opłata za usługę”, „Podatek”). W przypadku użytkowników pole jest ograniczone do 100 znaków.

type LineItemType

Wymagane.

quantity Liczba całkowita

Wymagane, jeśli type = "REGULAR".

Liczba uwzględnionych elementów. Nie dotyczy ProposedOrder.otherItems.

description String

Opis produktu.

price Price

Wymagane.

Cena produktu lub produktów. Ta wartość odzwierciedla łączną cenę wszystkich towarów lub usług w przypadku tego elementu zamówienia (czyli dodaje koszt wszelkich dodatków i mnoży przez liczbę). Przykład: jeśli produkt o wartości 10 PLN ma ilość 3, cena wyniesie 30 PLN. Cena jednej pizzy o cenie podstawowej 5 USD i dodatku 1 USD wynosi 6 USD. W przypadku 2 pizzy (ilość = 2) o cenie podstawowej 5 zł i dodatku 1 zł za każdą pizzę cena wynosi 12 zł. Każdy element zamówienia powinien mieć cenę, nawet jeśli wynosi ona „0”. Jeśli typ to DISCOUNT, podaj wartość jako liczbę ujemną (np. „-2”).

subLines List<SublineNote>

Opcjonalny i ważny tylko wtedy, gdy typ to „REGULAR”. W tym polu w ramach prośby o płatność i prośby o przesłanie zamówienia użytkownik może przesłać notatkę dotyczącą konkretnego produktu. Upewnij się, że sprzedawca otrzyma notatę. Będzie ono widoczne w żądaniu jako subLines[0].note, czyli jedyna wartość podana w tym polu, jeśli jest obecna w żądaniu.

Nie może zawierać więcej niż 1 element.

offerId String

Wymagane, jeśli type = "REGULAR".

Identyfikator oferty menu dla produktu. Nie dotyczy ProposedOrder.otherItems.

extension FoodItemExtension

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

Ten przykład przedstawia element LineItem:

Przykład 1

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

Przykład 2

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

LineItemType

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

  • REGULAR: element zamówienia „Towary”. Dotyczy Cart.lineItems.
  • TAX: element zamówienia dotyczący podatku. Dotyczy ProposedOrder.otherItems.
  • DISCOUNT: element zamówienia dotyczący rabatu. Pamiętaj, że cena powinna być ujemna. Dotyczy ProposedOrder.otherItems.
  • GRATUITY: element zamówienia dotyczący napiwku. Zazwyczaj zarezerwowane dla SubmitOrderRequestMessage w przypadku napiwku wybranego przez użytkownika. Dotyczy ProposedOrder.otherItems.
  • DELIVERY: element zamówienia dostawy. Dotyczy ProposedOrder.otherItems.
  • SUBTOTAL: pozycja wiersza z sumą częściową. Dotyczy ProposedOrder.otherItems.
  • FEE: dodatkowy element zamówienia, którego nie można przypisać do innych typów. Dotyczy ProposedOrder.otherItems.

Lokalizacja

Określa adres do zamawiania jedzenia. Typ Location jest używany w Cart, aby wskazać tylko miejsce docelowe zamówienia dostawy. Zatwierdzona lokalizacja jest też widoczna w TransactionDecisionValue, jeśli użytkownik złoży zamówienie. W przypadku zamówień z odbiorem w punkcie lokalizacja nie jest wcale uwzględniona (nawet pusta).

W tabeli poniżej podano właściwości typu Location:

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

Wyświetl adres lokalizacji.

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

postalAddress PostalAddress
zipCode String

Przykład: 90210

city String

Nazwa miasta.

Przykład: Los Angeles

notes String

notatki dotyczące lokalizacji, takie jak kody bramy; Tekst nie może mieć więcej niż 500 znaków.

Przykład: Gate code is #111

Ten przykład przedstawia element Location:

Przykład

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

Sprzedawca

W tabeli poniżej podano właściwości typu Merchant:

Właściwość Typ Opis
id String

Identyfikator sprzedawcy. Jeśli jest podany, pasuje do wartości Restaurant.@id w pliku danych o restauracjach.

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

name String

Wymagane.

Nazwa sprzedawcy widoczna dla użytkowników.

Przykład: Falafel Bite

Ten przykład przedstawia element Merchant:

Przykład

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

Pieniądze

W tabeli poniżej podano właściwości typu Money:

Właściwość Typ Opis
currencyCode String

Wymagane.

Trzyliterowy kod waluty w formacie ISO 4217.

Przykład: USD

units String

Całkowita kwota. Jeśli np. kod waluty to „PLN”, to jednostka „1” to 1 złoty.

Przykład: 36

nanos Liczba całkowita

Liczba nano (10^-9) jednostek kwoty. Wartość musi mieścić się w przedziale od -999 999 999 do +999 999 999 (włącznie). Stosuj te reguły: jeśli jednostki są dodatnie, nanos muszą być dodatnie lub równe 0. Jeśli jednostki mają wartość zero, nanos mogą być dodatnie, równe zero lub ujemne. Jeśli jednostki są ujemne, nanos musi być ujemny lub równy zero. Na przykład wartość -1,75 USD jest reprezentowana jako units = -1 i nanos = -750 000 000.

Przykład: 730000000

Ten przykład przedstawia element Money:

Przykład 1

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

Przykład 2

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

Zamówienie

Zawiera ostateczne zamówienie, w tym podatki, opłaty i koszty dostawy, a także informacje o płatności. Ten obiekt jest odbierany przez Twoje działanie w ramach Submit AppRequest.

W tabeli poniżej podano właściwości typu Order:

Właściwość Typ Opis
finalOrder ProposedOrder

Wymagane.

Proponowane zamówienie, które spowodowało zamówienie.

googleOrderId String

Wymagane.

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

orderDate Sygnatura czasowa ISO

Wymagane.

Data i godzina utworzenia zamówienia.

paymentInfo PaymentInfo

Wymagane.

Informacje o płatności za to zamówienie.

Ten przykład przedstawia element Order:

Przykład

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

OrderUpdate

W tabeli poniżej opisano pola typu OrderUpdate, które są uwzględniane w AppResponse.

W tabeli poniżej podano właściwości typu OrderUpdate:

Właściwość Typ Opis
actionOrderId String

Wymagane.

Unikalny identyfikator zamówienia w systemie integratora, który służy do identyfikacji zamówienia, dla którego wysyłane jest powiadomienie. Jeśli w przypadku zamówienia o stanie „CREATED” w tagu orderUpdate nie podano tagu receipt.user_visible_order_id, w karcie zamówienia w Google wyświetli się podany przez użytkownika identyfikator.

orderState OrderState

Wymagane.

Nowy stan zamówienia.

lineItemUpdates Map<String, LineItemUpdate>
updateTime Sygnatura czasowa ISO

Wymagane.

Czas zaktualizowania zamówienia.

orderManagementActions List<OrderManagementAction>

Działania po złożeniu zamówienia, takie jak kontakt z zespołem pomocy i wyświetlanie szczegółów zamówienia.

Musisz mieć co najmniej 1 element i nie więcej niż 6 elementów.

rejectionInfo RejectionInfo

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

cancellationInfo CancellationInfo

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

inTransitInfo InTransitInfo

To pole zostało wycofane.

fulfillmentInfo FulfillmentInfo

To pole zostało wycofane.

receipt Receipt

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

W potwierdzeniu podaj widoczny dla użytkownika identyfikator zamówienia.

totalPrice Price

Łączna cena zamówienia.

infoExtension FoodOrderUpdateExtension

Określa więcej szczegółów aktualizacji zamówienia, takich jak przedział czasu dostawy lub odbioru.

Ten przykład przedstawia element OrderUpdate:

Przykład

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

PickupInfo

W tabeli poniżej podano właściwości typu PickupInfo:

Właściwość Typ Opis
pickupTimeIso8601 String

Przewidywany czas odbioru w formacie sygnatury czasowej ISO 8601: „{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” lub formacie czasu trwania: „P(n)Y(n)M(n)DT(n)H(n)M(n)S”. Na przykład PT90M oznacza czas trwania 90 minut. Wartość domyślna „PT0M” oznacza, że preferowany czas odbioru to jak najszybciej. Źródło: https://pl.wikipedia.org/wiki/ISO_8601#Połączone_odzwierciedlenie_daty_i_czasu. Użyj tego, aby zaktualizować szacowany czas odbioru podczas odpowiedzi na proces płatności.

Przykład: PT90M

Ten przykład przedstawia element PickupInfo:

Przykład

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

W tabeli poniżej podano właściwości typu PostalAddress:

Właściwość Typ Opis
regionCode String

Wymagane.

Dwuliterowy kod kraju.

Przykład: US

postalCode String

Kod pocztowy.

Przykład: 94043

administrativeArea String

Najwyższy podział administracyjny, który jest używany w przypadku adresów pocztowych w kraju lub regionie. Może to być stan, prowincja, obwód lub prefektura.

Przykład: CA

locality String

Miasto lub miejscowość, w której znajduje się lokalizacja. W regionach świata, w których miejscowości nie są dobrze zdefiniowane lub nie pasują do tej struktury, nie określaj miejscowości, a zamiast tego użyj pola addressLines.

Przykład: Mountain View

addressLines List<String>

Co najmniej 1 wiersz, za pomocą którego możesz określić adres ulicy. Nie należy modyfikować tego pola, ponieważ może ono zawierać niejasne miejscowości.

Przykład: [ "1350 Charleston Road" ]

recipients List<String>

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

Ten przykład przedstawia element PostalAddress:

Przykład

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

Cena

W tabeli poniżej podano właściwości typu Price:

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

Wymagane.

Kod kuponu promocyjnego.

amount Money

Wymagane.

Promocja

W tabeli poniżej podano właściwości typu Promotion:

Właściwość Typ Opis
coupon String

Wymagane.

Kod kuponu promocyjnego.

ProposedOrder

W tabeli poniżej podano właściwości typu ProposedOrder:

Właściwość Typ Opis
id String

Opcjonalny identyfikator proponowanego zamówienia.

cart Cart

Wymagane.

Produkty użytkownika.

otherItems List<LineItem>

Elementy dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Elementy te mogą też zawierać napiwek lub rabat dodany przez użytkownika.

Nie może zawierać więcej niż 10 elementów.

image Image

Obraz powiązany z zaproponowanym zamówieniem.

totalPrice Price

Wymagane.

Łączna cena proponowanego zamówienia.

extension FoodOrderExtension

Wymagane.

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

disclaimers List<Disclaimer>

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

Ten przykład przedstawia element ProposedOrder:

Przykład

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

SublineNote

W tabeli poniżej podano właściwości typu SublineNote:

Właściwość Typ Opis
note String

Wymagane.

Sygnatura czasowa

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

TransactionDecisionValue

Zawiera Order.

W tabeli poniżej podano właściwości typu TransactionDecisionValue:

Właściwość Typ Opis
order Order

Wymagane.

zamówienie z danymi do płatności,

Ten przykład przedstawia element TransactionDecisionValue:

Przykład

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

Prośba o realizację

AppRequest

W tabeli poniżej podano właściwości typu AppRequest:

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

Wskazuje, czy kolejne transakcje są przeprowadzane w piaskownicy.

conversation Conversation
inputs List<Input>

Wymagane.

Zawiera oczekiwane argumenty do zapłaty za koszyk.

Musi zawierać dokładnie 1 element.

Ten przykład przedstawia element AppRequest:

Przykład 1

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

Przykład 2

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

CheckoutRequestMessage

CheckoutRequestMessage to AppRequestz zamiarem actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

SubmitOrderRequestMessage to AppRequestz zamiarem actions.foodordering.intent.TRANSACTION_DECISION.

Rozmowa

Conversation jest unikalny tylko dla jednej sesji. W razie potrzeby możesz użyć tej funkcji do połączenia ze sobą wielu działań Checkout i SubmitOrder.

W tabeli poniżej podano właściwości typu Conversation:

Właściwość Typ Opis
conversationId String

Wymagane.

Unikalny identyfikator rozmowy.

Ten przykład przedstawia element Conversation:

Przykład

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Dane wejściowe

Argumenty oczekiwane podczas sprawdzania koszyka.

W tabeli poniżej podano właściwości typu Input:

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

Wymagane.

Ustaw wartość „actions.foodordering.intent.CHECKOUT” w przypadku wiadomości z prośbą o płatność LUB „actions.intent.TRANSACTION_DECISION” w przypadku wiadomości z prośbą o złożenie zamówienia.

arguments List<Argument>

Wymagane.

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

Musi zawierać dokładnie 1 element.

Argument

Zawiera informacje o produktach spożywczych, które użytkownik chce sprawdzić. W przypadku płatności ważny jest tylko termin wygaśnięcia. W przypadku przesyłania zamówienia liczy się tylko wartość transactionDecisionValue.

W tabeli poniżej 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óły produktów spożywczych, które użytkownik chce sprawdzić.

transactionDecisionValue Grupa 2 TransactionDecisionValue

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

Odpowiedź na prośbę o realizację

AppResponse

W tabeli poniżej podano właściwości typu AppResponse:

Właściwość Typ Opis
expectUserResponse Const

Ustaw na wartość „fałsz”.

Wartość: False

finalResponse FinalResponse

Wymagane.

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

Ten przykład przedstawia element AppResponse:

Przykład 1

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

Przykład 2

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

Przykład 3

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

Przykład 4

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

CheckoutResponseMessage

CheckoutResponseMessage to AppResponse z elementem checkoutResponse lub errorStructuredResponse.

SubmitOrderResponseMessage

SubmitOrderResponseMessage to AppResponse z orderUpdate w StructuredResponse.

FinalResponse

Twoja odpowiedź na proces płatności w koszyku lub wiadomość SubmitOrderRequestMessage.

W tabeli poniżej podano właściwości typu FinalResponse:

Właściwość Typ Opis
richResponse RichResponse

Wymagane.

Zawiera odpowiedź na wiadomość CheckoutRequestMessage lub SubmitOrderRequestMessage.

CheckoutResponse

W tabeli poniżej podano właściwości typu CheckoutResponse:

Właściwość Typ Opis
proposedOrder ProposedOrder

Wymagane.

Proponowana kolejność do użycia w ramach transakcji.

paymentOptions PaymentOptions

Wymagane.

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

additionalPaymentOptions List<PaymentOptions>

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

Ten przykład przedstawia element CheckoutResponse:

Przykład

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

Element

Zawiera Twoją odpowiedź na proces płatności w koszyku lub wiadomość SubmitOrderRequestMessage.

W tabeli poniżej podano właściwości typu Item:

Właściwość Typ Opis
structuredResponse StructuredResponse

Wymagane.

RichResponse

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

W tabeli poniżej podano właściwości typu RichResponse:

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

Wymagane.

Musi zawierać dokładnie 1 element.

StructuredResponse

W przypadku CheckoutResponseMessage może to być jedna z tych wartości: CheckoutResponse oznacza, że proces płatności został zakończony. LUB FoodErrorExtension: wskazuje błąd podczas płatności. Odpowiedź może zawierać poprawione ProposedOrder i PaymentOptions lub komunikat o błędzie bez opcji płatności. W przypadku elementu SubmitOrderResponseMessage prawidłowy jest tylko element orderUpdate.

W tabeli poniżej 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

Zamówione produkty wraz z podatkami i rabatami.

error Grupa 2 FoodErrorExtension

W elementach koszyka występują błędy. W zależności od rodzaju błędu ta właściwość może zawierać poprawione wartości ProposedOrder i PaymentOptions lub tylko komunikat o błędzie bez wartości PaymentOptions.

orderUpdate Grupa 3 OrderUpdate

Asynchroniczne aktualizacje zamówień

W tej sekcji opisano typy ogólne, które stanowią prośby i odpowiedzi w ramach typowej interakcji z wbudowanym działaniem polegającym na zamawianiu jedzenia.

AsyncOrderUpdateRequestMessage

powiadamia użytkownika o zmianach po przesłaniu i potwierdzeniu zamówienia. Możesz na przykład powiadomić użytkownika, że zamówienie jest w drodze lub że zmieniła się cena. Więcej informacji znajdziesz w:

W tabeli poniżej podano właściwości typu AsyncOrderUpdateRequestMessage:

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

Wskazuje, że zamówienie, którego dotyczyła ta aktualizacja, to płatność w piaskownicy.

customPushMessage CustomPushMessage

Wymagane.

Zawiera informacje o zmianie zamówienia.

Ten przykład przedstawia element AsyncOrderUpdateRequestMessage:

Przykład

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

AsyncOrderUpdateResponseMessage

Po przesłaniu żądania AsyncOrderUpdateRequestMessage Google odpowie z kodem stanu HTTP 200 i pustym ciałem. Jeśli nie uda się zaktualizować zamówienia, Google odpowie, dlaczego nie udało się to.

Typy aktualizacji zamówień

Przycisk

Określa element interfejsu użytkownika, który możesz dodać, aby umożliwić interakcję z użytkownikiem.

W tabeli poniżej podano właściwości typu Button:

Właściwość Typ Opis
title String

Wymagane.

Etykieta wyświetlania. Aby zapewnić prawidłowe renderowanie, używaj małych liter w 30 znakach lub mniej.

Przykład: Contact us

openUrlAction OpenUrlAction

Wymagane.

Ten przykład przedstawia element Button:

Przykład

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

CancellationInfo

W tabeli poniżej podano właściwości typu CancellationInfo:

Właściwość Typ Opis
reason String

Wymagane.

Wyświetlany tekst wyjaśniający przyczynę odrzucenia, gdy stan OrderState.state to „CANCELLED”.

Przykład: Restaurant closed

Ten przykład przedstawia element CancellationInfo:

Przykład

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Ten typ zapewnia użytkownikowi przybliżony przedział czasu, w którym zamówienie zostanie dostarczone lub będzie gotowe do odbioru. Wysyłaj to rozszerzenie w ramach OrderUpdate, gdy tylko informacje są dostępne lub zmieniły się od ostatniego wysłania.

Podaj ostrożne oszacowanie przedziału czasu realizacji, aby stale spełniać oczekiwania użytkowników. Jeśli na przykład przewidywany czas dostawy zamówienia to 13:00, należy przesłać przewidywany przedział czasu, który uwzględnia wahania spowodowane na przykład natężeniem ruchu drogowego, np. 12:45–13:15.

Czas trwania lub sygnatura czasowa w formacie ISO 8601 jest interpretowana jako przedział czasu od updateTime OrderUpdate (czyli w gruncie rzeczy „teraz”) do updateTime plus duration. Nie używaj tego formatu, chyba że „teraz” jest rzeczywiście rozsądnym oczekiwaniem.

Przedział ISO 8601 jest interpretowany jako przedział od początku do końca.

W tabeli poniżej podano właściwości typu FoodOrderUpdateExtension:

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

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

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

estimatedFulfillmentTimeIso8601 String

Przewidywany czas dostawy lub gotowości do odbioru zamówienia. Ciąg znaków musi być w formacie ISO 8601 i odpowiadać intervalom, a nie pojedynczym stałym momentom. Dopuszczalne konwencje to: Intervals (przedziały), Durations (czas trwania) i Dates/Times (daty i godziny). To pole może być wysyłane w ramach wiadomości SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy informacje staną się dostępne lub nastąpi zmiana, np. wcześniejszy lub późniejszy przyjazd.

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

foodOrderErrors List<FoodOrderError>

Opisuje błędy, które wystąpiły po złożeniu zamówienia. Zalecamy 1 błąd na koszyk lub produkt. Użyj rozszerzenia FoodOrderUpdateExtension.FoodOrderErrors w przypadku błędów, których nie obejmuje element RejectionInfo.

W menu musi być co najmniej 1 pozycja.

Ten przykład przedstawia element FoodOrderUpdateExtension:

Przykład 1

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

Przykład 2

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

FulfillmentInfo

W tabeli poniżej 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żywanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate

pickupTime Grupa 2 Sygnatura czasowa ISO

Używanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate

Ten przykład przedstawia element FulfillmentInfo:

Przykład 1

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

Przykład 2

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

InTransitInfo

W tabeli poniżej podano właściwości typu InTransitInfo:

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

Używanie atrybutu estimatedFulfillmentTimeIso8601 w wiadomości rozszerzenia FoodOrderingUpdate

Ten przykład przedstawia element InTransitInfo:

Przykład

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

LineItemUpdate

W tabeli poniżej podano właściwości typu LineItemUpdate:

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

Powód zmiany. Wymagany w przypadku zmian cen.

Ten przykład przedstawia element LineItemUpdate:

Przykład

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

OpenUrlAction

W tabeli poniżej podano właściwości typu OpenUrlAction:

Właściwość Typ Opis
url String

Wymagane.

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

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

OrderManagementAction

Zarządzanie zamówieniem umożliwia użytkownikom uzyskanie pomocy po złożeniu zamówienia i powinno być wysyłane w każdym OrderUpdate w ramach procesu przesyłania zamówienia AppResponsei w każdym kolejnym AsyncOrderUpdateRequestMessage. Działania związane z zarządzaniem zamówieniem wysyłane w przypadku konkretnego zamówienia mogą się różnić w zależności od stanu.

Na przykład w stanie „CREATED” CUSTOMER_SERVICE może wskazywać numer telefonu do obsługi klienta. Następnie w stanie „POTWIERDZONO” CUSTOMER_SERVICEmoże zmienić się na numer telefonu restauracji, jeśli jest to najlepszy sposób na kontakt z klientem. Podobnie, gdy zamówienie ma stan „WYPEŁNIONE”, CUSTOMER_SERVICE może sprawdzić Twój adres e-mail pomocy.

W tabeli poniżej podano właściwości typu OrderManagementAction:

Właściwość Typ Opis
type OrderManagementActionType

Wymagane.

button Button

Wymagane.

Ten przykład przedstawia element OrderManagementAction:

Przykład 1

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

Przykład 2

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

OrderManagementActionType

Definiuje typy związane z OrderManagementAction.

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

  • CUSTOMER_SERVICE: adres e-mail lub numer kontaktowy obsługi klienta, który ma być wyświetlany na stronie potwierdzenia zamówienia. To pole jest wymagane. Prefiks openUrlAction.url musi być równy „mailto”, „tel”, „http” lub „https”.
  • EMAIL: działanie wysyłania e-maila tylko na stronie z informacjami o zamówieniu. Prefiks openUrlAction.url musi być „mailto”.
  • CALL_DRIVER: wywołanie akcji tylko na stronie z informacjami o zamówieniu. Prefiks openUrlAction.url musi być „tel”.
  • CALL_RESTAURANT: wywołanie akcji tylko na stronie z informacjami o zamówieniu. Prefiks openUrlAction.url musi być „tel”.

OrderState

Bieżący stan zamówienia. Każda wartość stateOrderState odpowiada też stanowi zakupu na stronie myaccount.google.com.

W tabeli poniżej podano właściwości typu OrderState:

Właściwość Typ Opis
state OrderStateEnum

Wymagane.

label String

Wymagane.

Wyświetlany przez użytkownika ciąg znaków reprezentujący stan. Stosuje się w nim wielkości liter jak w zdaniu.

Przykład: Your order has been received

Ten przykład przedstawia element OrderState:

Przykład

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

OrderStateEnum

Definiuje typy związane z OrderState.

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

  • CREATED: zamówienie utworzone przez integratora i oczekujące na potwierdzenie przez dostawcę. Odpowiada zamówieniu o stanie „Zamówione”.
  • CONFIRMED: zamówienie zostało potwierdzone przez dostawcę i jest aktywne. Odpowiada statusowi zakupu „Zaakceptowano”.
  • REJECTED: zamówienie zostało odrzucone przez integratora lub dostawcę. Odpowiada statusowi zakupu „Odrzucony”.
  • CANCELLED: użytkownik anulował zamówienie. Odpowiada statusowi zakupu „Anulowany”.
  • IN_PREPARATION: jedzenie jest przygotowywane. Odpowiada stanowi zakupu „Stan nieznany”.
  • READY_FOR_PICKUP: jedzenie jest gotowe do odbioru. Odpowiada statusowi zakupu „Gotowy do odbioru”.
  • IN_TRANSIT: zamówienie jest dostarczane. Odpowiada ono stanowi „W toku” w przypadku zakupu.
  • FULFILLED: użytkownik otrzymał to, co zamówił. Odpowiada statusowi zakupu „Odebrano”.

Rachunek

Prześlij ten typ w zamówieniu AppResponse, gdzie OrderState to „CONFIRMED”, „FULFILLED” lub „IN_TRANSIT”. Wyślij potwierdzenie w momencie udostępnienia userVisibleOrderId. Nie musisz już przesyłać rachunku w kolejnych aktualizacjach.

W tabeli poniżej podano właściwości typu Receipt:

Właściwość Typ Opis
userVisibleOrderId String

Wymagane.

Wymagany, jeśli zamówienie ma stan „CONFIRMED”, „IN_TRANSIT” lub „FULFILLED”. To pole to pojedynczy identyfikator tego zamówienia widoczny dla użytkownika (zazwyczaj identyfikator zamówienia restauracji), wyświetlany zarówno na paragonie integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość użycia tego identyfikatora, aby odnieść się do swojego zamówienia w kontaktach z obsługą klienta dostawcy i integratora. Ten identyfikator musisz podać tylko raz w ramach danego wywołania metody OrderUpdate. Dopóki nie zostanie podany, actionOrderId ma wartość userVisibleOrderId. Na przykład możesz nie mieć userVisibleOrderId, dopóki zamówienie nie zostanie potwierdzone przez restaurację. Po potwierdzeniu musisz wysłać wiadomość AsyncOrderUpdateRequestMessage z zamówieniem i rachunkiem.

Ten przykład przedstawia element Receipt:

Przykład

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

W tabeli poniżej podano właściwości typu RejectionInfo:

Właściwość Typ Opis
type RejectionType

Wymagane.

reason String

Powód odrzucenia używany do rejestrowania wewnętrznego. To pole nie jest widoczne dla użytkowników.

Ten przykład przedstawia element RejectionInfo:

Przykład

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

RejectionType

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

  • INELIGIBLE: użytkownik nie kwalifikuje się ze względu na kwestie związane z zasadami lub ryzykiem.
  • PAYMENT_DECLINED: wystąpił problem z przetwarzaniem płatności.
  • UNAVAILABLE_SLOT: zamówienie nie może zostać zrealizowane w czasie określonym w danych DeliveryInfo lub PickupInfo.
  • PROMO_NOT_APPLICABLE: wystąpił problem z promocją.
  • UNKNOWN: dowolny inny powód.

Typy związane z płatnościami

W tej sekcji opisano typy związane z płatnościami, które są używane do realizacji zamówień jedzenia.

ActionProvidedPaymentOptions

Wymagania dotyczące formy płatności podanej w działaniu.

W tabeli poniżej podano właściwości typu ActionProvidedPaymentOptions:

Właściwość Typ Opis
paymentType PaymentType

Wymagane.

displayName String

Wymagane.

Nazwa instrumentu płatności wyświetlana na potwierdzeniu.

Przykład: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dodatkowe dane dla typu płatności „ON_FULFILLMENT”. Możesz na przykład użyć tego pola, aby określić, czy podczas realizacji zamówienia akceptowane są płatności gotówką czy kartą.

Ten przykład przedstawia element ActionProvidedPaymentOptions:

Przykład

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

AllowedAuthMethods

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

  • PAN_ONLY: metoda uwierzytelniania przypisana do kart płatniczych, które są zapisane 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 może mieć te wartości:

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

BillingAddressParameters

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

W tabeli poniżej podano właściwości typu BillingAddressParameters:

Właściwość Typ Opis
format String

Format adresu rozliczeniowego niezbędny do zrealizowania transakcji. MIN: imię i nazwisko, kod kraju, kod pocztowy. PEŁNY: imię i nazwisko, ulica i numer domu, miejscowość, region, kod kraju, kod pocztowy.

Ten przykład przedstawia element BillingAddressParameters:

Przykład 1

{
  "format": "MIN"
}

Przykład 2

{
  "format": "FULL"
}

CardParameters

Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.

W tabeli poniżej podano właściwości typu CardParameters:

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

Wymagane.

Pola obsługiwane podczas uwierzytelniania transakcji kartą.

W menu musi być co najmniej 1 pozycja.

allowedCardNetworks List<AllowedCardNetworks>

Wymagane.

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

W menu musi być co najmniej 1 pozycja.

billingAddressRequired Wartość logiczna

Ustaw jako true, jeśli wymagasz adresu rozliczeniowego. Żądanie adresu rozliczeniowego wysyłaj tylko wtedy, gdy jest to niezbędne do obsługi transakcji. Więcej żądań danych może powodować błędy w procesie płatności i obniżenie współczynnika konwersji.

billingAddressParameters BillingAddressParameters

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

cvcRequired Wartość logiczna

Ustaw na „PRAWDA”, jeśli używasz TimesofMoney, i na „FAŁSZ” w przypadku wszystkich innych systemów płatności.

Ten przykład przedstawia element CardParameters:

Przykład 1

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

Przykład 2

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

GoogleProvidedPaymentInstrument

W tabeli poniżej podano właściwości typu GoogleProvidedPaymentInstrument:

Właściwość Typ Opis
instrumentToken String

Wymagane.

Ciąg znaków zakodowany w formacie Base64, zawierający token płatności umożliwiający obciążenie użytkownika za pomocą procesora Google Pay, zgodnie z wcześniej określonymi opcjami płatności Google.

billingAddress PostalAddress

adres rozliczeniowy do celów płatności;

Ten przykład przedstawia element GoogleProvidedPaymentInstrument:

Przykład

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

GoogleProvidedPaymentOptions

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

W tabeli poniżej podano właściwości typu GoogleProvidedPaymentOptions:

Właściwość Typ Opis
facilitationSpecification String

Obiekt JSON PaymentDataRequest jako ciąg znaków. Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.

supportedCardNetworks List<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 jest dozwolona jako forma płatności.

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.

Ten przykład przedstawia element GoogleProvidedPaymentOptions:

Przykład 1

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

Przykład 2

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

Przykład 3

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

MerchantInfo

Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.

W tabeli poniżej podano właściwości typu MerchantInfo:

Właściwość Typ Opis
merchantId String

Identyfikator sprzedawcy w Google wystawiany przez Google Pay.

merchantName String

Wymagane.

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

OnFulfillmentPaymentData

Użyj tego obiektu, aby wysłać dodatkowe dane dla typu płatności „ON_FULFILLMENT”.

W tabeli poniżej podano właściwości typu OnFulfillmentPaymentData:

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

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

Ten przykład przedstawia element OnFulfillmentPaymentData:

Przykład

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

Parametry

Definiuje typy związane z TokenizationParameters.

W tabeli poniżej podano właściwości typu Parameters:

Właściwość Typ Opis
gateway String

Wymagane.

Przykład: braintree

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

Ten przykład przedstawia element Parameters:

Przykład 1

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

Przykład 2

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

PaymentDataRequest

Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.

W tabeli poniżej podano właściwości typu PaymentDataRequest:

Właściwość Typ Opis
apiVersion Const

Wymagane.

Główna wersja interfejsu API.

Wartość: 2

apiVersionMinor Const

Wymagane.

Pomocnicza wersja interfejsu API.

Wartość: 0

merchantInfo MerchantInfo

Wymagane.

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

allowedPaymentMethods List<PaymentMethod>

Wymagane.

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

transactionInfo TransactionInfo

Wymagane.

Szczegóły autoryzacji transakcji na podstawie tego, czy użytkownik zgodził się na transakcję. To pole zawiera łączną cenę i stan ceny.

Ten przykład przedstawia element PaymentDataRequest:

Przykład

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

PaymentInfo

Informacje o płatnościach za zamówienie.

W tabeli poniżej podano właściwości typu PaymentInfo:

Właściwość Typ Opis
displayName String

Wymagane.

Wiodą dla użytkownika nazwa instrumentu płatniczego, która ma być wyświetlana na paragonie.

paymentType PaymentType

Wymagane.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

Ten przykład przedstawia element PaymentInfo:

Przykład 1

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

Przykład 2

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

PaymentMethod

Wykorzystaj ten obiekt, aby skonfigurować obsługę Google Pay API w swojej witrynie.

W tabeli poniżej podano właściwości typu PaymentMethod:

Właściwość Typ Opis
type Const

Wymagane.

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

Wartość: CARD

parameters CardParameters

Wymagane.

Parametry niezbędne, aby skonfigurować podaną formę płatności.

tokenizationSpecification TokenizationSpecification

Wymagane.

Skonfiguruj konto lub dostawcę usług odszyfrowywania, który ma otrzymywać dane karty. Ta właściwość jest wymagana w przypadku formy płatności KARTA.

Ten przykład przedstawia element PaymentMethod:

Przykład

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

PaymentOptions

W tabeli poniżej 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

Wyklucza się z opcją actionProvidedOptions. Używaj go do płatności online za pomocą Google Pay.

actionProvidedOptions Grupa 2 ActionProvidedPaymentOptions

Wzajemnie wyklucza się z opcją googleProvidedOptions. Użyj tego w przypadku „zapłaty przy odbiorze” lub „zapłaty po zrealizowaniu zamówienia”.

Ten przykład przedstawia element PaymentOptions:

Przykład 1

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

Przykład 2

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

Przykład 3

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

PaymentOptionsEnums

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

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

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

  • PAYMENT_CARD: opcje płatności udostępnione przez Google.
  • ON_FULFILLMENT: dotyczy opcji płatności określonych przez działanie.

SupportedCardNetworks

Definiuje typy związane z GoogleProvidedPaymentOptions.

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

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

TokenizationParameters

Określa typy związane z GoogleProvidedPaymentOptions.

W tabeli poniżej podano właściwości typu TokenizationParameters:

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

Wymagane.

Zamiast tego użyj facilitationSpecification. Dopuszczalne 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 tabeli poniżej podano właściwości typu TokenizationSpecification:

Właściwość Typ Opis
type Const

Wymagane.

parameters Parameters

Wymagane.

Ten przykład przedstawia element TokenizationSpecification:

Przykład 1

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

Przykład 2

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

TransactionInfo

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

W tabeli poniżej podano właściwości typu TransactionInfo:

Właściwość Typ Opis
currencyCode String

Wymagane.

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

transactionId String

Unikalny identyfikator, po którym można rozpoznać 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, jeśli wysyłasz wywołania zwrotne do interfejsu Google Transaction Events API.

totalPriceStatus Const

Wymagane.

Jako domyślny typ użyj wartości „ESTIMATED” (Szacowany). Łączna cena może zostać dostosowana na podstawie szczegółów odpowiedzi, takich jak podatek od sprzedaży określany na podstawie adresu rozliczeniowego.

Wartość: ESTIMATED

totalPrice String

Wymagane.

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

Ten przykład przedstawia element TransactionInfo:

Przykład

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