Schemat działań realizacji

Na tej stronie opisaliśmy ładunek usługi internetowej realizacji zamówień (Order with Google API) podczas pracy z wbudowanym interfejsem Order API z funkcją Order API. Jeśli chcesz, aby te informacje były czytelne dla komputera, możesz pobrać schemat JSON.

Typy baz

Koszyk

Zawiera szczegóły zamówienia oraz informacje o tym, czy prośba dotyczy odbioru lub dostawy. Koszyk zawiera również szczegóły dostawy, niepewność i adres dostawy. Obiekt Cart jest definiowany w pliku Checkout AppRequest.f. Umieszczasz kopię koszyka w elemencie Checkout AppResponse

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

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

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

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

id Ciąg

Opcjonalny identyfikator koszyka.

merchant Merchant

Sprzedawca powiązany z tym koszykiem.

lineItems ListaLineItem>

Wymagany.

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

Musi mieć nie więcej niż 1 element.

promotions ListaPromotion>

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

notes Ciąg

Uwagi na temat zamówienia lub instrukcji dostawy.

extension FoodCartExtension

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

Ten przykład pokazuje element Cart:

Przykład 1

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

Przykład 2

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

Kontakt

Określa szczegóły osoby odbierającej zamówienie. Jest ona dostępna tylko w interfejsie AppResponse.

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

Właściwość Typ Opis
displayName Ciąg

Imię i nazwisko osoby odbierającej zamówienie, która ma być wyświetlana. Użyj tego pola, jeśli nie określono właściwości firstName i LastName.

Przykład: Lovefood Ordering

email Ciąg

Adres e-mail osoby odbierającej zamówienie.

Przykład: ilovefood@example.com

firstName Ciąg

Imię osoby odbierającej zamówienie.

Przykład: Lovefood

lastName Ciąg

Imię i nazwisko osoby odbierającej zamówienie.

Przykład: Ordering

phoneNumber Ciąg

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

Przykład: +16501234567

emailVerified Wartość logiczna

Wskazuje, czy osoba, która otrzymała zamówienie, jest zalogowana przy użyciu swojego konta Google.

Ten przykład pokazuje element Contact:

Przykład

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

Niestandardowa wiadomość push

Zawiera element OrderUpdate dla żądania.

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

Właściwość Typ Opis
orderUpdate OrderUpdate

Wymagany.

Zaktualizowano informacje o zamówieniu.

Ten przykład pokazuje element CustomPushMessage:

Przykład

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

Informacje o dostawie

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

Właściwość Typ Opis
deliveryTimeIso8601 Ciąg

Szacowany czas dostawy w formacie sygnatury czasowej ISO 8601: "{year}–{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" lub czas trwania: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Na przykład PT90M trwa 90 minut. Wartość domyślna ,"PT0M" wskazuje, że preferowany czas dostawy jest najwcześniejszy. Patrz: https://pl.wikipedia.org/wiki/ISO_8601#Połączona_data_i_czasowa_prezentacje. Służy do aktualizowania przewidywanego czasu dostawy w odpowiedzi na płatność.

Przykład: PT90M

Ten przykład pokazuje element DeliveryInfo:

Przykład

{
  "deliveryTimeIso8601": "PT90M"
}

Wyłączenie odpowiedzialności

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

Właściwość Typ Opis
predefinedMessage PredefinedMessage

Wymagany.

Aby wyświetlać wstępnie zdefiniowane komunikaty o wyłączeniu odpowiedzialności podczas 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ę kwotą od N do M za zamówienie.

feePercent Number

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

feePercentRange FeePercentRange

Partner obciąży sprzedawcę opłatą od N% do M% za zamówienie.

Ten przykład pokazuje element Disclaimer:

Przykład 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Przykład 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Przykład 3

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

Przykład 4

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

Przykład 5

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

Przykład 6

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

Błąd

Typ Error może mieć następujące wartości:

  • CLOSED: restauracja jest zamknięta w momencie zamawiania.
  • NO_CAPACITY: brak dostępnej usługi (np. przerwa w działaniu usługi z powodu szczytu czasu oczekiwania).
  • NO_COURIER_AVAILABLE: nie można przetworzyć zamówienia z powodu ograniczonego dostępu.
  • REQUIREMENTS_NOT_MET: nie zostały spełnione ograniczenia dotyczące przyjmowania zamówienia (np. minimalny rozmiar koszyka).
  • UNAVAILABLE_SLOT: zamówienie nie może zostać zrealizowane w późniejszym terminie określonym przez DeliveryInfo lub odbioru.
  • OUT_OF_SERVICE_AREA: zamówienia nie można dostarczyć na adres użytkownika.
  • PROMO_EXPIRED: nie można zastosować promocji, ponieważ wygasła.
  • PROMO_NOT_APPLICABLE: ogólny kod błędu służący do wyłapywania wszystkich przypadków niepowodzenia zastosowania kodu promocyjnego, jeśli nie pasuje do niego żaden inny kod promocyjny.
  • PROMO_NOT_RECOGNIZED: nie udało się rozpoznać kodu kuponu.
  • PROMO_ORDER_INELIGIBLE: bieżące zamówienie nie kwalifikuje się do tego kuponu.
  • PROMO_USER_INELIGIBLE: obecny użytkownik nie kwalifikuje się do tego kuponu.
  • AVAILABILITY_CHANGED: produkt nie jest już dostępny lub nie ma wystarczającej liczby elementów, aby zrealizować żądanie.
  • INCORRECT_PRICE: błędy w opłatach lub łączny koszt.
  • INVALID: element zamówienia, element FulfillmentOption lub promocja zawierają nieprawidłowe dane.
  • NOT_FOUND: nie można znaleźć elementu zamówienia, opcji realizacji ani promocji.
  • PRICE_CHANGED: cena produktu uległa zmianie.

ZakresOpłaty

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

Właściwość Typ Opis
minFeeAmount Money

Dolna granica opłaty została pobrana.

maxFeeAmount Money

Górna granica opłaty została pobrana.

Zakreszakresuopłaty

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

Właściwość Typ Opis
minFeePercent Number

Dolna granica procentowej opłaty.

maxFeePercent Number

Górna granica procentowej opłaty.

Rozszerzenie koszyka

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

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

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

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

Wymagany.

Preferencja realizacji zamówień przez użytkownika.

location Location

W polu CheckoutRequestMessage to pole określa adres dostawy. Jest on wymagany, jeśli zamówienie dotyczy dostawy. To zamówienie nie zawiera informacji o zamówieniach na wynos lub z odbiorem.

Ten przykład pokazuje element FoodCartExtension:

Przykład 1

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

Przykład 2

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

Rozszerzenie błędu jedzenia

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

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

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

Wymagany.

Typ tego rozszerzenia.

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

foodOrderErrors ListaFoodOrderError>

Wymagany.

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

Musi mieć nie więcej niż 1 element.

correctedProposedOrder ProposedOrder

Wymagane, jeśli właściwość 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" jest wymagana.

Nowe proponowane rozwiązanie z poprawkami. Zwraca ten obiekt, jeśli w pierwotnym proponowanym zamówieniu występują błędy, które można odzyskać. Błąd można na przykład zaobserwować w przypadku zmiany ceny co najmniej jednego elementu zamówienia w koszyku. Błędy, które można przywrócić w przypadku prawidłowego zamówienia w propozycjach, są zaawansowane na etapie potwierdzenia, zamiast wymagać od użytkownika sprawdzenia koszyka.

paymentOptions PaymentOptions

Wymagane, jeśli właściwość 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" jest wymagana.

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

additionalPaymentOptions ListaPaymentOptions>

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

Ten przykład pokazuje element FoodErrorExtension:

Przykład

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

Rozszerzenie FoodItem

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

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

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

Wymagany.

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

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

options ListaFoodItemOption>

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

Ten przykład pokazuje element FoodItemExtension:

Przykład

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

Opcja jedzenia

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

Właściwość Typ Opis
id Ciąg

Unikalny identyfikator przypisany przez Google. Gdy wysyłasz parametr FoodOrderError lub AsyncOrderUpdateRequest, użyj tego pola, aby rozróżnić, jeśli koszyk zawiera więcej niż jeden produkt o tym samym identyfikatorze „offerId”.

Przykład: 39231093

offerId Ciąg

Identyfikator oferty.

Przykład: 912835081

name Ciąg

Nazwa opcji.

Przykład: Honey Mustard

price Money
note Ciąg

Uwaga dotycząca opcji.

quantity Number

Liczba opcji to „elementy”.

Przykład: 3

subOptions ListaFoodItemOption>

Opcje podrzędne, jeśli istnieją.

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

Ten przykład pokazuje element FoodItemOption:

Przykład 1

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

Przykład 2

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

Błąd zamówienia jedzenia

Zawiera szczegóły błędów w CheckoutResponse.

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

Właściwość Typ Opis
error Error

Wymagany.

id Ciąg

Wymagane, jeśli właściwość error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND" jest wymagana.

To pole jest wymagane w przypadku błędów na poziomie produktu. Jest to przypisany do Google element zamówienia (ItemItem.id) w przypadku dań w menu oraz parametr FoodItemOption.id w przypadku dodatków.

description Ciąg

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

updatedPrice Money

Wymagane, jeśli właściwość error = "PRICE_CHANGED" jest wymagana.

Nowa cena produktu, który spowodował błąd. Ta funkcja jest wymagana tylko wtedy, gdy błąd to "PRICE_CHANGED".

availableQuantity Liczba całkowita

Wymagane, jeśli właściwość error = "INVALID", or "NOT_FOUND" jest wymagana.

Nowa dostępna ilość produktu, która spowodowała wystąpienie błędu. Ta funkcja jest wymagana tylko wtedy, gdy błąd "INVALID" lub "NOT_FOUND". Wartość w przypadku parametrów "INVALID" i "NOT_FOUND" powinna wynosić zero.

Ten przykład pokazuje element FoodOrderError:

Przykład 1

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

Przykład 2

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

Rozszerzenie zamawiania jedzenia

Zawiera informacje o realizacji zamówienia.

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

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

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

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

availableFulfillmentOptions ListaFulfillmentOption>

Określa dostępne opcje realizacji zamówienia.

optinForRemarketing Wartość logiczna

Prośba użytkownika o włączenie kanałów marketingowych. Domyślnie nie możesz wysyłać treści marketingowych bez zgody użytkownika. Jeśli tak, możesz zasubskrybować konto użytkownika. Jeśli atrybut optinForRemarketing ma wartość fałsz lub jest nieobecny, musisz zachować stan subskrypcji w systemie w niezmienionej postaci. Użytkownicy nie mogą zrezygnować z usług Google za pomocą funkcji anulowania subskrypcji dostępnej w Twoich kanałach marketingowych. Ta flaga występuje tylko w funkcji SubmitOrderRequestMessage.

Ten przykład pokazuje element FoodOrderExtension:

Przykład 1

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

Przykład 2

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

Opcja realizacji

Możesz użyć obiektu FulfillmentOption w następujący sposób:
  • W tagach Checkout AppRequest i Submit AppRequest właściwość Cart.extension.fulfillmentPreference: przechowuje preferencje użytkownika (dostarczanie lub odbiór). Cena zawsze wynosi 0 w momencie wysłania prośby o płatność.
  • W polu Checkout AppResponse właściwość ProposedOrder.extension.availableFulfillmentOptions określa co najmniej 1 opcję dostawy (obecnie dostępna jest tylko 1 opcja). Opcję domyślną określa się jako LineItem w ProposedOrder.otherItems. Pole offerId z FulfillmentOption powinno być zgodne z identyfikatorem LineItem określonym w polu ProposedOrder.otherItems.

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

Właściwość Typ Opis
offerId Ciąg

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

fulfillmentInfo FulfillmentOptionInfo

Wymagany.

expiresAt Sygnatura czasowa ISO

Czas, w którym opcja realizacji zamówień wygasa.

price Money

Koszt tej opcji.

Ten przykład pokazuje element FulfillmentOption:

Przykład

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

FulfillmentOptionInfo

Określa informacje związane z: FulfillmentInfo.

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

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

Jeśli jest określony, wskazuje kolejność dostawy.

pickup Grupa 2 PickupInfo

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

Obraz

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

Właściwość Typ Opis
sourceUrl Ciąg

Wymagany.

Adres URL obrazu. Minimalny rozmiar obrazu to 72 x 72 piksele. Najlepsze efekty daje obraz o rozmiarze co najmniej 216 x 216 pikseli. Obraz musi być mniejszy niż 6 MB i 64 megapiksele.

Element zamówienia

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

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

Właściwość Typ Opis
id Ciąg

Wymagane, jeśli właściwość type = "REGULAR" jest wymagana.

W przypadku elementu zamówienia w koszyku (PropositionOrder.cart.lineItems[0].id) jest to unikalny identyfikator utworzony przez Google podczas tworzenia zamówienia. W przypadku elementu zamówienia w ofercie pakietowej (propozycjaZamówienie.Inne_elementy[0].id), który służy do dodawania produktów takich jak opłaty za dostawę i podatki, wartość identyfikatora jest zdefiniowana przez dostawcę. Na przykład w koszyku znajdują się 2 takie same produkty z różnymi instrukcjami dotyczącymi przygotowania (np. 2 średnie pizze z różnymi zestawami dodatków). W tym przypadku oba elementy mają taki sam podstawowy identyfikator oferty. Gdy przesyłasz prośbę o aktualizację zamówienia, aby wskazać, że produkt został odrzucony, użyj tego identyfikatora jako identyfikatora. Innymi słowy, jeśli jedna z pizzy zostanie odrzucona z powodu braku jej dodatku, identyfikator pomoże Google określić, o które zamówienie chodzi. To pole jest wymagane oprócz innych elementów.

name Ciąg

Wymagany.

Nazwa elementu zamówienia. Jest to ciąg widoczny dla użytkownika i w miarę możliwości powinien być zapisany jak w zdaniu (np. "opłata za dostawę" "opłata za obsługę" &"Tax"). W przypadku użytkowników pole jest ograniczone do 100 znaków.

type LineItemType

Wymagany.

quantity Liczba całkowita

Wymagane, jeśli właściwość type = "REGULAR" jest wymagana.

Liczba uwzględnionych produktów. Nie dotyczy PropositionOrder.otherItems.

description Ciąg

Opis produktu.

price Price

Wymagany.

Cena elementu. Ta wartość to łączna cena wszystkich towarów lub usług powiązanych z danym elementem zamówienia (czyli podaj koszt wszystkich dodatków i pomnóż ją przez liczbę sztuk). Na przykład: jeśli produkt o wartości 10 PLN ma liczbę 3, cena będzie wynosić 30 PLN. Cena wynosi 6 USD za jedną pizzę z ceną podstawową w wysokości 5 USD i dodatkiem 1 USD. Cena wynosi 12 USD za 2 pizze (ilość = 2) z ceną podstawową (5 zł) i z dodatkiem 1 zł. Każdy element zamówienia powinien zawierać cenę, nawet jeśli &"0". Gdy typ to DISCOUNT, podaj wartość jako ujemną (np. "-2").

subLines ListaSublineNote>

Opcjonalne i tylko wtedy, gdy typ jest "REGULAR". W tym polu w żądaniach płatności i przesłania zamówienia można wysłać informację o produkcie od użytkownika. Upewnij się, że sprzedawca otrzymuje notatkę, gdy ją otrzyma. W żądaniu znajdzie się ona jako wiersz podrzędny[0].note, czyli jedyna wartość podana w tym polu, jeśli znajduje się ona w żądaniu.

Musi mieć maksymalnie 1 element.

offerId Ciąg

Wymagane, jeśli właściwość type = "REGULAR" jest wymagana.

Identyfikator oferty w menu elementu. Nie dotyczy PropositionOrder.otherItems.

extension FoodItemExtension

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

Ten przykład pokazuje element LineItem:

Przykład 1

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

Przykład 2

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

Typ elementu zamówienia

Typ LineItemType może mieć następujące wartości:

  • REGULAR: element zamówienia towaru. Dotyczy Cart.lineItems.
  • TAX: element zamówienia podatkowego Dotyczy proponowanego zamówienia.inneelementy.
  • DISCOUNT: element zamówienia ze zniżką. Pamiętaj, że cena powinna być ujemna. Dotyczy proponowanego zamówienia.inneelementy.
  • GRATUITY: element zamówienia z nagrodą. Zasadniczo zarezerwowane dla elementu SubmitOrderRequestMessage przeznaczonego dla użytkownika. Dotyczy proponowanego zamówienia.inneelementy.
  • DELIVERY: element zamówienia do zrealizowania. Dotyczy proponowanego zamówienia.inneelementy.
  • SUBTOTAL: częściowy element zamówienia. Dotyczy proponowanego zamówienia.inneelementy.
  • FEE: dodatkowy element zamówienia nieobjęty innymi typami. Dotyczy proponowanego zamówienia.inneelementy.

Lokalizacja

Określa adres do zamawiania jedzenia. Typ Location jest używany w Cart do wskazywania tylko miejsca docelowego zamówienia dostawy. Ostateczna lokalizacja występuje też w TransactionDecisionValue, jeśli użytkownik złoży zamówienie. W przypadku zamówień z odbiorem lokalizacja nie jest brana pod uwagę (nawet jest pusta).

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

Właściwość Typ Opis
coordinates Coordinates
formattedAddress Ciąg

Wyświetlany adres lokalizacji.

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

postalAddress PostalAddress
zipCode Ciąg

Przykład: 90210

city Ciąg

Nazwa miasta.

Przykład: Los Angeles

notes Ciąg

Uwagi o lokalizacji, np. kody do bram. Może mieć maksymalnie 500 znaków.

Przykład: Gate code is #111

Ten przykład pokazuje element Location:

Przykład

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

Sprzedawca

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

Właściwość Typ Opis
id Ciąg

Identyfikator sprzedawcy. Jeśli jest określony, pasuje do pliku Restauracja.@id w pliku danych restauracji.

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

name Ciąg

Wymagany.

Widoczna dla użytkownika nazwa sprzedawcy.

Przykład: Falafel Bite

Ten przykład pokazuje element Merchant:

Przykład

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

Pieniądze

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

Właściwość Typ Opis
currencyCode Ciąg

Wymagany.

Trzyliterowy kod waluty w formacie ISO 4217.

Przykład: USD

units Ciąg

Całe jednostki. Na przykład: jeśli „currencyCode” to "USD", "1" jednostka to 1 USD.

Przykład: 36

nanos Liczba całkowita

Liczba jednostek nano (10^–9) kwoty. Wartość musi zawierać się w zakresie od -999 999 999 do +999 999 999 włącznie. Zastosuj następujące reguły: jeśli jednostki są dodatnie, nanos muszą być dodatnie lub wynosić zero. Jeśli wartość wynosi zero, nanos może być liczbą dodatnią, zero lub ujemną. Jeśli jednostki są ujemne, nanos musi być dodatnie lub zero. Na przykład $-1.75 jest przedstawiane jako jednostki = -1, a nanos = -750 000 000.

Przykład: 730000000

Ten przykład pokazuje element Money:

Przykład 1

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

Przykład 2

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

Zamówienie

Zawiera ostateczne zamówienie, w tym podatki, opłaty i opłaty za dostawę, a także informacje o płatności. Ten obiekt otrzymuje Twoje działanie w: Submit AppRequest.

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

Właściwość Typ Opis
finalOrder ProposedOrder

Wymagany.

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

googleOrderId Ciąg

Wymagany.

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

orderDate Sygnatura czasowa ISO

Wymagany.

Data i godzina utworzenia zamówienia.

paymentInfo PaymentInfo

Wymagany.

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

Ten przykład pokazuje element Order:

Przykład

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

Aktualizacja zamówienia

W poniższej tabeli opisano pola typu OrderUpdate zawartego w AppResponse.

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

Właściwość Typ Opis
actionOrderId Ciąg

Wymagany.

Unikalny identyfikator zamówienia w systemie integratora, który służy do identyfikowania kolejności wysyłania aktualizacji. Jeśli parametr order.user_visible_order_id nie zostanie podany co najmniej raz w polu OrderUpdate dla zamówienia &CREATED;CREATED" ten identyfikator będzie identyfikatorem wejściowym wyświetlanym na karcie zamówienia Google.

orderState OrderState

Wymagany.

Nowy stan zamówienia.

lineItemUpdates Mapa<ciąg, LineItemUpdate>
updateTime Sygnatura czasowa ISO

Wymagany.

Godzina aktualizacji zamówienia.

orderManagementActions ListaOrderManagementAction>

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

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

rejectionInfo RejectionInfo

Wymagane, jeśli właściwość orderState.state = "REJECTED" jest wymagana.

cancellationInfo CancellationInfo

Wymagane, jeśli właściwość orderState.state = "CANCELLED" jest wymagana.

inTransitInfo InTransitInfo

To pole zostało wycofane.

fulfillmentInfo FulfillmentInfo

To pole zostało wycofane.

receipt Receipt

Wymagane, jeśli właściwość orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP" jest wymagana.

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

totalPrice Price

Łączna cena zamówienia.

infoExtension FoodOrderUpdateExtension

Określa więcej szczegółów dotyczących aktualizacji zamówienia, takich jak czas oczekiwania na szacowany czas dostawy lub odbioru.

Ten przykład pokazuje element OrderUpdate:

Przykład

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

Informacje o odbiorze

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

Właściwość Typ Opis
pickupTimeIso8601 Ciąg

Szacowany czas odbioru w formacie sygnatury czasowej ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" lub czas trwania: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Na przykład PT90M trwa 90 minut. Wartość domyślna ,"PT0M" wskazuje, że preferowany czas odbioru jest możliwy jak najszybciej. Patrz: https://pl.wikipedia.org/wiki/ISO_8601#Połączona_data_i_czasowa_prezentacje. Służy do aktualizowania szacowanego czasu odbioru w momencie płatności.

Przykład: PT90M

Ten przykład pokazuje element PickupInfo:

Przykład

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

Właściwość Typ Opis
regionCode Ciąg

Wymagany.

Dwuliterowy kod kraju.

Przykład: US

postalCode Ciąg

Kod pocztowy.

Przykład: 94043

administrativeArea Ciąg

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

Przykład: CA

locality Ciąg

Miasto (lub miejscowość). W regionach świata, w którym miasta nie są poprawnie zdefiniowane lub nie pasują do tej struktury, nie określaj lokalizacji i użyj pola addressLines (Wiersz adresu).

Przykład: Mountain View

addressLines Lista<gt;

Co najmniej jedna linia, której możesz użyć do określenia adresu ulicy. Nie należy modyfikować tego pola, ponieważ może ono zawierać nieznane miejsca.

Przykład: [ "1350 Charleston Road" ]

recipients Lista<gt;

Lista adresatów zamówienia. To pole jest dostępne tylko w adresie rozliczeniowym.

Ten przykład pokazuje element PostalAddress:

Przykład

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

Cena

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

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

Wymagany.

Kod kuponu promocyjnego.

amount Money

Wymagany.

Promocja

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

Właściwość Typ Opis
coupon Ciąg

Wymagany.

Kod kuponu promocyjnego.

Zaproponowane zamówienie

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

Właściwość Typ Opis
id Ciąg

Opcjonalny identyfikator proponowanego zamówienia.

cart Cart

Wymagany.

Elementy użytkownika.

otherItems ListaLineItem>

Produkty dodane przez dostawcę, takie jak opłaty za dostawę, inne opłaty i podatki. Inne elementy mogą też zawierać nieuzasadnione lub zniżki dodane przez użytkownika.

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

image Image

Obraz powiązany z proponowanym zamówieniem.

totalPrice Price

Wymagany.

Łączna cena proponowanego zamówienia.

extension FoodOrderExtension

Wymagany.

Określa informacje o realizacji zamówień dotyczących jedzenia.

disclaimers ListaDisclaimer>

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

Ten przykład pokazuje element ProposedOrder:

Przykład

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

Notatka podrzędna

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

Właściwość Typ Opis
note Ciąg

Wymagany.

Sygnatura czasowa

Data i godzina w następującym formacie: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

Wartość decyzji transakcji

Zawiera Order.

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

Właściwość Typ Opis
order Order

Wymagany.

Zamówienie zostanie złożone ze szczegółami płatności.

Ten przykład pokazuje element TransactionDecisionValue:

Przykład

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

Prośba o realizację

Żądanie aplikacji

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

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

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

conversation Conversation
inputs ListaInput>

Wymagany.

Zawiera oczekiwane argumenty dotyczące sprawdzenia koszyka.

Musi zawierać dokładnie 1 element.

Ten przykład pokazuje element AppRequest:

Przykład 1

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

Przykład 2

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

Komunikat prośby o płatność

CheckoutRequestMessage to AppRequest z intencją actions.foodordering.intent.CHECKOUT.

Prześlij wiadomość z żądaniem

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

Rozmowa

Typ Conversation jest unikalny tylko dla jednej sesji. W razie potrzeby możesz połączyć wiele działań Checkout i SubmitOrder.

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

Właściwość Typ Opis
conversationId Ciąg

Wymagany.

Unikalny identyfikator rozmowy.

Ten przykład pokazuje element Conversation:

Przykład

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Wprowadź tekst

Oczekiwane argumenty przy sprawdzaniu koszyka.

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

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

Wymagany.

Ustaw jako „"actions.foodordering.intent.CheckOUT&quot” w przypadku wiadomości z prośbą o dokonanie płatności LUB „"actions.intent.TRANSACTION_DECISION"”.

arguments ListaArgument>

Wymagany.

Zawiera koszyk, który należy sprawdzić lub zamówienie

Musi zawierać dokładnie 1 element.

Argument

Zawiera szczegółowe informacje o produktach, które użytkownik chce kupić. W momencie płatności można użyć tylko rozszerzenia. W przypadku zamówienia obowiązuje tylko wartość „DeDesionsionValue”

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

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

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

transactionDecisionValue Grupa 2 TransactionDecisionValue

Zawiera zamówienie, które należy złożyć, oraz szczegóły płatności.

Odpowiedź dotycząca realizacji zamówienia

Odpowiedź aplikacji

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

Właściwość Typ Opis
expectUserResponse Const

Ustaw wartość „false”.

Wartość: False

finalResponse FinalResponse

Wymagany.

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

Ten przykład pokazuje element AppResponse:

Przykład 1

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

Przykład 2

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

Przykład 3

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

Przykład 4

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

Komunikat odpowiedzi

CheckoutResponseMessage to AppResponse z checkoutResponse lub error w StructuredResponse.

Prześlij wiadomość z odpowiedzią

SubmitOrderResponseMessage to AppResponse z orderUpdate w StructuredResponse.

Ostateczna odpowiedź

Twoja odpowiedź na płatność lub zawartość koszyka.

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

Właściwość Typ Opis
richResponse RichResponse

Wymagany.

Zawiera Twoją odpowiedź na element CheckoutRequestMessage lub SubmitOrderRequestMessage.

Odpowiedź na płatność

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

Właściwość Typ Opis
proposedOrder ProposedOrder

Wymagany.

Proponowane zamówienie dla transakcji.

paymentOptions PaymentOptions

Wymagany.

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

additionalPaymentOptions ListaPaymentOptions>

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

Ten przykład pokazuje element CheckoutResponse:

Przykład

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

Element

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

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

Właściwość Typ Opis
structuredResponse StructuredResponse

Wymagany.

Odpowiedź multimedialna

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

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

Właściwość Typ Opis
items ListaItem>

Wymagany.

Musi zawierać dokładnie 1 element.

Uporządkowana odpowiedź

W przypadku elementu CheckoutResponseMessage możesz wybrać jedną z tych opcji: CheckoutResponse wskazuje udany proces płatności. LUB FoodErrorExtension: oznacza błąd podczas płatności. Odpowiedź może zawierać poprawione elementy PropositionOrder i PaymentOptions lub komunikat o błędzie bez PaymentOptions. W przypadku elementu SubmitOrderResponseMessage obowiązuje tylko orderorder.

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

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

Zaznaczono produkty oraz podatki i rabaty.

error Grupa 2 FoodErrorExtension

Zaobserwowane błędy w koszykach. W zależności od rodzaju błędu ta właściwość może zawierać poprawione wartości PropositionOrder i PaymentOptions lub tylko komunikat o błędzie bez PaymentOptions.

orderUpdate Grupa 3 OrderUpdate

Asynchroniczne aktualizacje zamówień

W tej sekcji opisujemy typy ogólne, które składają się na żądania i odpowiedzi typowej wbudowanej interakcji polegającej na zamawianiu jedzenia.

ASyncOrderUpdateRequestMessage

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

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

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

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

customPushMessage CustomPushMessage

Wymagany.

Zawiera element OrderUpdate dla żądania.

Ten przykład pokazuje element AsyncOrderUpdateRequestMessage:

Przykład

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

ASyncOrderUpdateResponseMessage

Gdy uda Ci się wysłać żądanie AsyncOrderUpdateRequestMessage, Google wyśle w odpowiedzi odpowiedź HTTP 200 i puste treści. Jeśli aktualizacja się nie powiedzie, otrzymasz odpowiedź od Google z informacjami, dlaczego tak się stało.

Rodzaje aktualizacji zamówień

Przycisk

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

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

Właściwość Typ Opis
title Ciąg

Wymagany.

Wyświetlaną etykietę. Aby zapewnić prawidłowe renderowanie, używaj wielkich liter po 30 znaków.

Przykład: Contact us

openUrlAction OpenUrlAction

Wymagany.

Ten przykład pokazuje element Button:

Przykład

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

Informacje o anulowaniu

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

Właściwość Typ Opis
reason Ciąg

Wymagany.

Wyświetlany tekst powodu odrzucenia, gdy OrderState.state to "CANCELLED".

Przykład: Restaurant closed

Ten przykład pokazuje element CancellationInfo:

Przykład

{
  "reason": "Insufficient inventory"
}

Rozszerzenie zamawiania jedzenia

Ten typ określa użytkownika szacowanego czasu, w którym zamówienie zostanie dostarczone lub gotowe do odbioru. Wyślij to rozszerzenie w pliku OrderUpdate, gdy informacje są dostępne lub uległy zmianie od czasu ostatniego wysłania.

Zachowaj ostrożne szacunki dla okresu realizacji, aby oczekiwania użytkowników były spójne. Jeśli np. szacowana data dostawy zamówienia to 13:00, wyślij szacowany przedział czasowy, który odpowiada wahaniom związanym z natężeniem ruchu (np. dzisiaj o 12:45 i 13:15).

Czas trwania lub sygnatura czasowa ISO 8601 jest interpretowana jako odstęp czasu od updateTime w OrderUpdate (w skrócie &"now") do updateTime plus duration. Nie używaj tego formatu, chyba że „oczekiwano” i „oczekiwano”

Przedział ISO 8601 oznacza interwał od początku do końca przedziału czasu.

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

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

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

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

estimatedFulfillmentTimeIso8601 Ciąg

Szacunkowy czas, w którym zamówienie zostanie dostarczone lub gotowe do odbioru. Ciąg musi mieć format ISO 8601 i musi odpowiadać przedziałowi, a nie pojedynczemu czasowi stałemu. Akceptowane konwencje: przedziały czasu, czasy trwania oraz daty i godziny. To pole można wysłać w funkcji SubmitOrderResponseMessage lub AsyncOrderUpdateRequestMessage, gdy informacje są dostępne lub zaczyna się zmiana, np. w trakcie wcześniejszego lub opóźnionego przyjazdu.

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

foodOrderErrors ListaFoodOrderError>

Opisuje błędy, które wystąpiły po zamówieniu. Zalecany jeden błąd na koszyk lub produkt. W przypadku błędów, których nie dotyczy odrzucenie informacji, użyj FoodOrderUpdateExtension.FoodOrderErrors.

Musi mieć nie więcej niż 1 element.

Ten przykład pokazuje element FoodOrderUpdateExtension:

Przykład 1

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

Przykład 2

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

Informacje o realizacji

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

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

Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension

pickupTime Grupa 2 Sygnatura czasowa ISO

Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension

Ten przykład pokazuje element FulfillmentInfo:

Przykład 1

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

Przykład 2

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

Informacje o transporcie publicznym

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

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

Użyj wartości szacunkowychFulfillmentTimeIso8601 w FoodFoodingUpdateExtension

Ten przykład pokazuje element InTransitInfo:

Przykład

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

Aktualizacja elementu

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

Właściwość Typ Opis
orderState OrderState
price Price
reason Ciąg

Powód zmiany. Wymagany w przypadku zmian cen.

Ten przykład pokazuje element LineItemUpdate:

Przykład

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

Działanie typu OpenUrl

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

Właściwość Typ Opis
url Ciąg

Wymagany.

Działanie polegające na kliknięciu przycisku. Lista odpowiednich prefiksów zależy od typu orderManagementActionType. "EMAIL": prefiks musi mieć postać "mailto". "CALL": prefiksem musi być "tel". "CUSTOMER_SERVICE": Prefiks musi mieć postać "mailto", "tel", "http" lub "https".

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

Działanie zarządzania zamówieniem

Zarządzanie zamówieniami pozwala użytkownikom korzystać z pomocy po otrzymaniu zamówienia. Powinny być wysyłane do każdego OrderUpdate w ramach zamówienia złożonego w AppResponse oraz do kolejnych AsyncOrderUpdateRequestMessage działań związanych z zarządzaniem zamówieniami wysyłanych 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 odwoływać się do Twojego numeru telefonu do obsługi klienta. Następnie, w stanie „POTWIERDŹ”, CUSTOMER_SERVICE może zmienić się w numer telefonu do restauracji, jeśli będzie to najlepszy punkt kontaktu dla klienta. Podobnie, gdy zamówienie jest w stanie „"FULFILLED"”, CUSTOMER_SERVICE może podać Twoje adresy e-mail pomocy.

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

Właściwość Typ Opis
type OrderManagementActionType

Wymagany.

button Button

Wymagany.

Ten przykład pokazuje element OrderManagementAction:

Przykład 1

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

Przykład 2

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

Typ czynności zarządzania

Określa typy powiązane z OrderManagementAction.

Typ OrderManagementActionType może mieć następujące wartości:

  • CUSTOMER_SERVICE: numer e-mail lub numer kontaktowy obsługi klienta wyświetlany na stronie potwierdzenia zamówienia. To jest wymagane. Prefiks openUrlAction.url musi mieć format "mailto", "tel", "http" lub "https".
  • EMAIL: działanie e-maila dotyczy tylko strony szczegółów zamówienia. Prefiks openUrlAction.url musi zawierać "mailto".
  • CALL_DRIVER: działanie wywołania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi być "tel".
  • CALL_RESTAURANT: działanie wywołania tylko na stronie szczegółów zamówienia. Prefiks openUrlAction.url musi być "tel".

Stan zamówienia

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

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

Właściwość Typ Opis
state OrderStateEnum

Wymagany.

label Ciąg

Wymagany.

Widoczny dla 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 pokazuje element OrderState:

Przykład

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

OrderStateEnum,

Określa typy powiązane z OrderState.

Typ OrderStateEnum może mieć następujące wartości:

  • CREATED: zamówienie zostało utworzone przez integratora i oczekuje na potwierdzenie przez dostawcę. Odpowiada &zamówieniu i stanie zakupu.
  • CONFIRMED: zamówienie potwierdzone przez dostawcę i aktywne. Odpowiada stanowi „Zaakceptowano” i „Zakup”.
  • REJECTED: zamówienie zostało odrzucone przez integratora lub dostawcę. Odpowiada stanowi „Odrzucono i odrzucono”.
  • CANCELLED: użytkownik anulował zamówienie. Odpowiada &kupionemu i stanowi zakupu.
  • IN_PREPARATION: przygotowujemy jedzenie. Odpowiada &stanowi nieznany stan zakupu.
  • READY_FOR_PICKUP: jedzenie jest gotowe do odbioru. Odpowiada &stanowi „Gotowy do odbioru”.
  • IN_TRANSIT: przesyłka jest dostarczana. Odpowiada statusowi „W toku” i „Zakup”.
  • FULFILLED: użytkownik otrzymał to, co zostało zamówione. Odpowiada &kupionemu i stanie zakupu.

Rachunek

Wyślij ten typ w przesłanym zamówieniu AppResponse, gdzie OrderState to „"CONFIRMED", "FULFILLED" lub "IN_TRANSIT". Wyślij rachunek, gdy userVisibleOrderId będzie dostępny. Nie będzie trzeba wysyłać rachunku za każdym razem.

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

Właściwość Typ Opis
userVisibleOrderId Ciąg

Wymagany.

Wymagane, jeśli zamówienie to "CONFIRMED", "IN_TRANSIT" lub "FULFILLED". To pole zawiera pojedynczy identyfikator zamówienia widoczny dla użytkownika (zazwyczaj jest to identyfikator zamówienia restauracji) wyświetlany zarówno na rachunku integratora, jak i na karcie zamówienia Google. Użytkownik musi mieć możliwość korzystania z tego identyfikatora w celu odwołania się do zamówienia klienta od dostawcy i integratora. Wystarczy, że podasz ten identyfikator tylko raz w danej aktualizacji zamówienia. Dopóki nie zostanie podany, actionactionId to uservisibleOrderId. Na przykład identyfikator użytkownika widoczny dla użytkowników może nie być widoczny do momentu potwierdzenia zamówienia przez restaurację. Po potwierdzeniu wyślij wiadomość AsyncOrderUpdateRequestMessage z zamówieniem zamówienia i potwierdzeniem.

Ten przykład pokazuje element Receipt:

Przykład

{
  "userVisibleOrderId": "userVisibleId1234"
}

Informacje o odrzuceniu

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

Właściwość Typ Opis
type RejectionType

Wymagany.

reason Ciąg

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

Ten przykład pokazuje element RejectionInfo:

Przykład

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

Typ odrzucenia

Typ RejectionType może mieć następujące wartości:

  • INELIGIBLE: użytkownik nie może korzystać z tej usługi z powodu wątpliwości dotyczących zasad lub ryzyka.
  • PAYMENT_DECLINED: wystąpił problem z przetwarzaniem płatności.
  • UNAVAILABLE_SLOT: zamówienie nie może zostać zrealizowane w późniejszym terminie określonym przez DeliveryInfo lub odbioru.
  • PROMO_NOT_APPLICABLE: wystąpił problem z promocją.
  • UNKNOWN: dowolny inny powód.

Rodzaje związane z płatnościami

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

ActionProvidedPaymentOptions

Wymagania dotyczące formy płatności opartej na działaniu.

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

Właściwość Typ Opis
paymentType PaymentType

Wymagany.

displayName Ciąg

Wymagany.

Nazwa instrumentu płatniczego widoczna na rachunku.

Przykład: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Dodatkowe dane dla typu płatności "ON_FULFILLMENT". W tym polu możesz na przykład określić, czy w przypadku realizacji transakcji gotówka lub karta mają być obsługiwane.

Ten przykład pokazuje element ActionProvidedPaymentOptions:

Przykład

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

AllowedAuthMethods

Typ AllowedAuthMethods może mieć następujące wartości:

  • PAN_ONLY: metoda uwierzytelniania powiązana z kartami płatniczymi zapisanymi na koncie Google użytkownika. Dane o zwróconej płatności obejmują numer konta osobistego (PAN) z miesiącem wygaśnięcia i datą ważności.

AllowedCardNetworks.

Typ AllowedCardNetworks może mieć następujące wartości:

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

Parametry karty

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

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

Właściwość Typ Opis
allowedAuthMethods Lista>

Wymagany.

Pola obsługiwane przy uwierzytelnianiu transakcji kartą.

Musi mieć nie więcej niż 1 element.

allowedCardNetworks ListaAllowedCardNetworks>

Wymagany.

co najmniej jedną sieć kart, która jest też obsługiwana przez Google Pay API.

Musi mieć nie więcej niż 1 element.

billingAddressRequired Wartość logiczna

Ustaw jako prawda, jeśli wymagasz adresu rozliczeniowego. Adres rozliczeniowy należy wysyłać tylko wtedy, gdy jest to konieczne do przetworzenia transakcji. Dodatkowe żądania danych mogą utrudniać proces płatności i obniżać współczynniki konwersji.

cvcRequired Wartość logiczna

Ustaw wartość „true”, jeśli korzystasz z TimeofMoney, czyli „false” w przypadku wszystkich innych firm obsługujących płatności.

Ten przykład pokazuje element CardParameters:

Przykład

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

GoogleProvidedPaymentInstrument.

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

Właściwość Typ Opis
instrumentToken Ciąg

Wymagany.

Podstawowy zakodowany ciąg 64 zawierający token płatności służący do obciążania użytkownika płatnością za pomocą firmy obsługującej płatności Google Pay zgodnie z wcześniej opisanymi kryteriami GoogleProvidedPaymentOptions.

billingAddress PostalAddress

Adres rozliczeniowy na potrzeby płatności.

Ten przykład pokazuje element GoogleProvidedPaymentInstrument:

Przykład

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

Opcje GoogleProvidedPaymentOptions

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

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

Właściwość Typ Opis
facilitationSpecification Ciąg

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

supportedCardNetworks ListaSupportedCardNetworks>

Zamiast tego użyj metody facicytionSpecification. Typ sieci kart obsługiwanych przez agenta.

To pole zostało wycofane.

prepaidCardDisallowed Wartość logiczna

Zamiast tego użyj metody facicytionSpecification. Określa, czy karta przedpłacona może być używana jako forma płatności.

To pole zostało wycofane.

billingAddressRequired Wartość logiczna

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

To pole zostało wycofane.

tokenizationParameters TokenizationParameters

To pole zostało wycofane.

Ten przykład pokazuje element GoogleProvidedPaymentOptions:

Przykład 1

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

Przykład 2

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

Przykład 3

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

Informacje o sprzedawcy

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

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

Właściwość Typ Opis
merchantId Ciąg

Identyfikator sprzedawcy Google wydany przez Google Pay.

merchantName Ciąg

Wymagany.

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

BigtableFulfillment

Za pomocą tego obiektu możesz przesłać dodatkowe dane dla elementu PaymentType &ONTFONFILLMENT".

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

Właściwość Typ Opis
supportedPaymentOptions ListaPaymentOptionsEnums>

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

Ten przykład pokazuje element OnFulfillmentPaymentData:

Przykład

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

Parametry

Określa typy powiązane z TokenizationParameters.

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

Właściwość Typ Opis
gateway Ciąg

Wymagany.

Przykład: braintree

gatewayMerchantId Ciąg
[additionalKey: string] Ciąg Dodatkowe pary klucz-wartość

Ten przykład pokazuje element Parameters:

Przykład 1

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

Przykład 2

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

Żądanie GTM

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

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

Właściwość Typ Opis
apiVersion Const

Wymagany.

Główna wersja interfejsu API.

Wartość: 2

apiVersionMinor Const

Wymagany.

Drobna wersja interfejsu API.

Wartość: 0

merchantInfo MerchantInfo

Wymagany.

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

allowedPaymentMethods ListaPaymentMethod>

Wymagany.

Określa obsługę co najmniej jednej formy płatności obsługiwanej przez Google Pay API.

transactionInfo TransactionInfo

Wymagany.

Szczegółowe informacje o autoryzacji transakcji na podstawie tego, czy użytkownik ją zaakceptuje. To pole zawiera łączną cenę i stan ceny.

Ten przykład pokazuje element PaymentDataRequest:

Przykład

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

Dane karty

Informacje o płatności dotyczące zamówienia.

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

Właściwość Typ Opis
displayName Ciąg

Wymagany.

Nazwa instrumentu płatniczego widoczna dla użytkownika widoczna na rachunku.

paymentType PaymentType

Wymagany.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token, którego można użyć przez działanie. Określ to tylko wtedy, gdy w usłudze CheckoutResponseMessage została podana opcja GoogleProvidedPaymentOptions.

Ten przykład pokazuje element PaymentInfo:

Przykład 1

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

Przykład 2

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

Forma płatności

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

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

Właściwość Typ Opis
type Const

Wymagany.

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

Wartość: CARD

parameters CardParameters

Wymagany.

Parametry wymagane do skonfigurowania podanej formy płatności.

tokenizationSpecification TokenizationSpecification

Wymagany.

Skonfiguruj dostawcę konta lub odszyfrowywania, aby otrzymywać dane karty. Właściwość ta jest wymagana dla formy płatności CARD.

Ten przykład pokazuje element PaymentMethod:

Przykład

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

Opcje płatności

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

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

Wzajemnie wykluczające się z akcją actionProvidedOptions. Użyj jej do płatności online za pomocą gPay.

actionProvidedOptions Grupa 2 ActionProvidedPaymentOptions

Wzajemnie wykluczające się z metodą googleProvidedOptions. Użyj go, aby otrzymać kwotę „gotówka na dostawę” lub „zapłać za realizację”.

Ten przykład pokazuje element PaymentOptions:

Przykład 1

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

Przykład 2

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

Opcje płatności

Typ PaymentOptionsEnums może mieć następujące wartości:

  • Cash
  • Card
  • UPI
  • Paytm

Typ płatności

Typ PaymentType może mieć następujące wartości:

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

ObsługiwaneKartyKarty

Określa typy powiązane z GoogleProvidedPaymentOptions.

Typ SupportedCardNetworks może mieć następujące wartości:

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

Parametry tokenizacji

Określa typy związane z GoogleProvidedPaymentOptions.

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

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

Wymagany.

Zamiast tego użyj metody facicytionSpecification. Dozwolony jest typ tokenów.

parameters Parameters

Zamiast tego użyj metody facicytionSpecification.

Specyfikacja tokenizacji

Ten obiekt umożliwia skonfigurowanie konta, na które mają być wysyłane informacje o płatnościach.

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

Właściwość Typ Opis
type Const

Wymagany.

parameters Parameters

Wymagany.

Ten przykład pokazuje element TokenizationSpecification:

Przykład 1

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

Przykład 2

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

Informacje o transakcjach

Ten obiekt opisuje transakcję, która określa zdolność płatnika. Jest on używany do wyświetlenia okna autoryzacji płatności.

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

Właściwość Typ Opis
currencyCode Ciąg

Wymagany.

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

transactionId Ciąg

Unikalny identyfikator próby transakcji. Sprzedawcy mogą używać istniejących identyfikatorów lub generować określony identyfikator na potrzeby prób dokonania transakcji w Google Pay. To pole jest wymagane, gdy wywołania zwrotne są wysyłane do interfejsu API transakcji Google.

totalPriceStatus Const

Wymagany.

Użyj wartości &ESTT Łączna cena może zostać dostosowana na podstawie szczegółów odpowiedzi, takich jak podatek od sprzedaży obliczany na podstawie adresu rozliczeniowego.

Wartość: ESTIMATED

totalPrice Ciąg

Wymagany.

Łączna wartość pieniężna transakcji z opcjonalną dokładnością dziesiętną z dwoma miejscami po przecinku. To pole powinno mieć taką samą wartość jak koszyka.totalPrice.

Ten przykład pokazuje element TransactionInfo:

Przykład

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