Skema tindakan pemenuhan

Halaman ini menjelaskan payload layanan web fulfillment (Ordering End-to-End API) saat menggunakan API Tindakan Bawaan Pemesanan End-to-End. Untuk versi informasi yang dapat dibaca mesin, Anda dapat mendownload skema JSON.

Jenis Dasar

Keranjang

Berisi detail pesanan, serta apakah permintaan tersebut ditujukan untuk pengambilan atau pengantaran. Keranjang juga berisi detail pengiriman, bonus, dan alamat pengiriman. Objek Cart ditentukan dalam Checkout AppRequest.f Anda menyertakan salinan keranjang di Checkout AppResponse

Tabel berikut mencantumkan properti untuk jenis Cart:

Properti Type Deskripsi
@type Konstanta

Jenis objek ini. Hapus kolom ini jika objek Keranjang induk adalah bagian dari ProposaldOrder.

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

id String

ID opsional keranjang.

merchant Merchant

Penjual yang berafiliasi dengan keranjang ini.

lineItems Daftar<LineItem>

Wajib diisi.

Daftar barang atau layanan yang dipesan pengguna.

Harus memiliki tidak kurang dari 1 item.

promotions Daftar<Promotion>

Promosi yang diterapkan di keranjang ini. Saat ini, hanya satu promosi yang didukung.

notes String

Catatan tentang pesanan atau petunjuk pengiriman.

extension FoodCartExtension

Menentukan detail tentang pengguna, seperti preferensi fulfillment.

Contoh berikut menunjukkan elemen Cart:

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

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

Kontak

Menentukan detail tentang orang yang menerima pesanan. Fitur ini hanya tersedia di AppResponse.

Tabel berikut mencantumkan properti untuk jenis Contact:

Properti Type Deskripsi
displayName String

Nama pengguna yang menerima pesanan, sesuai dengan yang ingin Anda tampilkan. Gunakan kolom ini jika firstName dan lastName tidak ditentukan.

Contoh: Lovefood Ordering

email String

Alamat email orang yang menerima pesanan.

Contoh: ilovefood@example.com

firstName String

Nama depan orang yang menerima pesanan.

Contoh: Lovefood

lastName String

Nama belakang pengguna yang menerima pesanan.

Contoh: Ordering

phoneNumber String

Nomor telepon orang yang menerima pesanan, termasuk kode negara.

Contoh: +16501234567

emailVerified Boolean

Menunjukkan apakah orang yang menerima pesanan login dengan Akun Google-nya atau tidak.

Contoh berikut menunjukkan elemen Contact:

Contoh

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

CustomPushMessage

Berisi OrderUpdate untuk permintaan.

Tabel berikut mencantumkan properti untuk jenis CustomPushMessage:

Properti Type Deskripsi
orderUpdate OrderUpdate

Wajib diisi.

Memperbarui informasi pesanan.

Contoh berikut menunjukkan elemen CustomPushMessage:

Contoh

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

DeliveryInfo

Tabel berikut mencantumkan properti untuk jenis DeliveryInfo:

Properti Type Deskripsi
deliveryTimeIso8601 String

Perkiraan waktu pengiriman, dalam format stempel waktu ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" atau format durasi: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Misalnya, PT90M mewakili durasi 90 menit. Nilai defaultnya ,"PT0M", menunjukkan bahwa waktu pengiriman yang diinginkan adalah sesegera mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Gabungkand_date_and_time_representations. Gunakan fitur ini untuk memperbarui perkiraan waktu pengiriman selama respons checkout.

Contoh: PT90M

Contoh berikut menunjukkan elemen DeliveryInfo:

Contoh

{
  "deliveryTimeIso8601": "PT90M"
}

Pernyataan penyangkalan

Tabel berikut mencantumkan properti untuk jenis Disclaimer:

Properti Type Deskripsi
predefinedMessage PredefinedMessage

Wajib diisi.

Untuk menampilkan pesan pernyataan penyangkalan yang telah ditentukan saat checkout.

feeAmount Money

Partner akan menagih biaya sebesar N kepada penjual untuk pesanan ini.

feeAmountRange FeeAmountRange

Partner akan menagih biaya restoran sebesar N hingga M per pesanan.

feePercent Number

Partner akan menagih biaya N% kepada penjual untuk pesanan ini.

feePercentRange FeePercentRange

Partner akan menagih biaya N% hingga M% kepada penjual per pesanan.

Contoh berikut menunjukkan elemen Disclaimer:

Contoh 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

Contoh 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

Contoh 3

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

Contoh 4

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

Contoh 5

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

Contoh 6

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

Error

Jenis Error memiliki kemungkinan nilai berikut:

  • CLOSED: Restoran tutup pada saat pemesanan.
  • NO_CAPACITY: Kapasitas layanan tidak tersedia (misalnya, pemadaman sementara karena waktu puncak penggunaan).
  • NO_COURIER_AVAILABLE: Tidak dapat memproses pesanan karena terbatasnya staf pengiriman.
  • REQUIREMENTS_NOT_MET: Batasan untuk menerima pesanan belum terpenuhi (misalnya, ukuran keranjang minimum).
  • UNAVAILABLE_SLOT: Pesanan tidak dapat dipenuhi pada waktu yang telah ditentukan sebelumnya oleh DeliveryInfo atau PickupInfo.
  • OUT_OF_SERVICE_AREA: Pesanan tidak dapat dikirim ke alamat pengguna.
  • PROMO_EXPIRED: Tidak dapat diterapkan karena promosi telah berakhir.
  • PROMO_NOT_APPLICABLE: Kode error umum untuk menangkap semua kasus kegagalan dalam menerapkan kode promo, jika tidak ada error kode promo lain yang cocok.
  • PROMO_NOT_RECOGNIZED: Kode kupon tidak dikenal.
  • PROMO_ORDER_INELIGIBLE: Pesanan saat ini tidak memenuhi syarat untuk kupon ini.
  • PROMO_USER_INELIGIBLE: Pengguna saat ini tidak memenuhi syarat untuk kupon ini.
  • AVAILABILITY_CHANGED: Item tidak lagi tersedia, atau tidak cukup item untuk memenuhi permintaan.
  • INCORRECT_PRICE: Kesalahan harga dalam biaya atau total.
  • INVALID: LineItem, FulfillmentOption, atau Promosi berisi data yang tidak valid.
  • NOT_FOUND: LineItem, FulfillmentOption, atau Promosi tidak dapat ditemukan.
  • PRICE_CHANGED: Harga item telah berubah.

FeeAmountRange

Tabel berikut mencantumkan properti untuk jenis FeeAmountRange:

Properti Type Deskripsi
minFeeAmount Money

Batas bawah jumlah biaya yang ditagih..

maxFeeAmount Money

Batas atas jumlah biaya yang dikenakan..

FeePercentRange

Tabel berikut mencantumkan properti untuk jenis FeePercentRange:

Properti Type Deskripsi
minFeePercent Number

Batas bawah persentase biaya yang dikenakan.

maxFeePercent Number

Batas atas persentase biaya yang ditagihkan.

FoodCartExtension

Berisi detail tentang pengguna, seperti preferensi fulfillment.

Tabel berikut mencantumkan properti untuk jenis FoodCartExtension:

Properti Type Deskripsi
@type Konstanta

Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

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

contact Contact

Informasi kontak orang yang menerima pesanan. Detail mencakup nama, nomor telepon, dan alamat email pengguna.

fulfillmentPreference FulfillmentOption

Wajib diisi.

Preferensi pemenuhan pesanan pengguna.

location Location

Di CheckoutRequestMessage, kolom ini menentukan alamat pengiriman, yang diperlukan jika pesanan ditujukan untuk pengiriman. Untuk pesanan yang ditujukan untuk dibawa pulang atau diambil, kolom ini tidak disertakan dalam pesan.

Contoh berikut menunjukkan elemen FoodCartExtension:

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

Contoh 2

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

FoodErrorExtension

Mengidentifikasi satu atau beberapa error yang terjadi saat memproses permintaan. Tabel berikut menjelaskan kolom jenis FoodErrorExtension. Error dapat dikirim dalam CheckoutResponse.

Tabel berikut mencantumkan properti untuk jenis FoodErrorExtension:

Properti Type Deskripsi
@type Konstanta

Wajib diisi.

Jenis ekstensi ini.

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

foodOrderErrors Daftar<FoodOrderError>

Wajib diisi.

Array objek FoodOrderError yang mendeskripsikan error yang terjadi. Satu error yang direkomendasikan per keranjang atau per item.

Harus memiliki tidak kurang dari 1 item.

correctedProposedOrder ProposedOrder

Wajib diisi saat 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".

Pesanan yang Diusulkan baru dengan koreksi. Tampilkan objek ini jika ada error yang dapat dipulihkan dalam Perlindungan Mengusulkan Pesanan asli. Misalnya, perubahan harga satu atau beberapa item baris dalam keranjang adalah error yang dapat dipulihkan. Error yang dapat dipulihkan dengan ProposaldOrder yang valid akan diteruskan ke tahap konfirmasi, sehingga pengguna tidak perlu meninjau keranjangnya.

paymentOptions PaymentOptions

Wajib diisi saat 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".

Opsi pembayaran default dipilih untuk pengguna.

additionalPaymentOptions Daftar<PaymentOptions>

Opsi pembayaran alternatif yang tersedia bagi pengguna.

Contoh berikut menunjukkan elemen FoodErrorExtension:

Contoh

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

FoodItemExtension

Menentukan add-on untuk item makanan.

Tabel berikut mencantumkan properti untuk jenis FoodItemExtension:

Properti Type Deskripsi
@type Konstanta

Wajib diisi.

Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodItemExtension".

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

options Daftar<FoodItemOption>

Opsi dapat berupa item add-on atau grup add-on yang berisi serangkaian add-on.

Contoh berikut menunjukkan elemen FoodItemExtension:

Contoh

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

FoodItemOption

Tabel berikut mencantumkan properti untuk jenis FoodItemOption:

Properti Type Deskripsi
id String

ID unik yang ditetapkan oleh Google. Saat Anda mengirim FoodOrderError atau AsyncOrderUpdateRequest, gunakan kolom ini untuk membedakan jika keranjang berisi lebih dari satu item dengan offerId yang sama.

Contoh: 39231093

offerId String

ID penawaran untuk item.

Contoh: 912835081

name String

Nama opsi.

Contoh: Honey Mustard

price Money
note String

Catatan terkait dengan opsi.

quantity Number

Untuk opsi yang berupa item, jumlah item.

Contoh: 3

subOptions Daftar<FoodItemOption>

Sub-opsi untuk opsi, jika ada.

Contoh: [ { "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 } ]

Contoh berikut menunjukkan elemen FoodItemOption:

Contoh 1

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

Contoh 2

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

FoodOrderError

Berisi detail tentang error di CheckoutResponse.

Tabel berikut mencantumkan properti untuk jenis FoodOrderError:

Properti Type Deskripsi
error Error

Wajib diisi.

id String

Wajib diisi saat error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

Kolom ini wajib diisi untuk error tingkat item. Ini adalah LineItem.id yang ditetapkan Google untuk item menu atau FoodItemOption.id untuk add-on.

description String

Deskripsi error. Deskripsi ini ditujukan untuk logging internal dan tidak dapat dilihat oleh pengguna.

updatedPrice Money

Wajib diisi saat error = "PRICE_CHANGED".

Harga baru item yang menyebabkan error. Perubahan ini diperlukan hanya jika pesan error adalah "PRICE_CHANGE".

availableQuantity Bilangan Bulat

Wajib diisi saat error = "INVALID", or "NOT_FOUND".

Jumlah item baru yang tersedia yang menyebabkan error. Kolom ini hanya diperlukan jika error adalah "INVALID" atau "NOT_FOUND". Nilai harus nol untuk "INVALID" dan "NOT_FOUND".

Contoh berikut menunjukkan elemen FoodOrderError:

Contoh 1

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

Contoh 2

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

FoodOrderExtension

Berisi info pemenuhan pesanan.

Tabel berikut mencantumkan properti untuk jenis FoodOrderExtension:

Properti Type Deskripsi
@type Konstanta

Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension".

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

availableFulfillmentOptions Daftar<FulfillmentOption>

Menampilkan opsi fulfillment yang tersedia untuk pesanan.

optinForRemarketing Boolean

Permintaan pengguna untuk ikut serta dalam saluran pemasaran Anda. Secara default, Anda tidak dapat mengirimkan konten pemasaran tanpa persetujuan pengguna. Jika optinForPemasaran Ulang benar, Anda dapat membuat pengguna berlangganan. Jika optinForMarketing salah atau tidak ada, Anda harus mempertahankan status subscription dalam sistem Anda apa adanya. Pengguna tidak dapat memilih untuk tidak ikut melalui Google, hanya melalui fungsi berhenti berlangganan yang disediakan di saluran pemasaran Anda. Tanda ini hanya ada di SubmitOrderRequestMessage.

Contoh berikut menunjukkan elemen FoodOrderExtension:

Contoh 1

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

Contoh 2

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

FulfillmentOption

Anda dapat menggunakan objek FulfillmentOption dengan cara berikut:
  • Di Checkout AppRequest dan Submit AppRequest, Cart.extension.fulfillmentPreference: Menyimpan preferensi pengguna (pesan antar atau ambil). Harganya selalu 0 saat permintaan checkout dikirim.
  • Di Checkout AppResponse, ProposedOrder.extension.availableFulfillmentOptions: Menentukan satu atau beberapa opsi penayangan (saat ini, hanya satu opsi yang didukung). Anda menentukan opsi default sebagai LineItem di ProposedOrder.otherItems. offerId dari FulfillmentOption harus cocok dengan ID LineItem yang ditentukan di ProposedOrder.otherItems.

Tabel berikut mencantumkan properti untuk jenis FulfillmentOption:

Properti Type Deskripsi
offerId String

ID unik untuk opsi pemenuhan pesanan ini, jika ada.

fulfillmentInfo FulfillmentOptionInfo

Wajib diisi.

expiresAt Stempel Waktu ISO

Waktu saat opsi pemenuhan ini berakhir.

price Money

Biaya opsi ini.

Contoh berikut menunjukkan elemen FulfillmentOption:

Contoh

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

FulfillmentOptionInfo

Menentukan informasi yang terkait dengan FulfillmentInfo.

Tabel berikut mencantumkan properti untuk jenis FulfillmentOptionInfo:

Properti Type Deskripsi
Hanya salah satu dari grup properti berikut yang diperlukan.
delivery Grup 1 DeliveryInfo

Jika ada, menunjukkan urutan pengiriman.

pickup Grup 2 PickupInfo

Jika ada, menunjukkan pesanan ambil sendiri.

Gambar

Tabel berikut mencantumkan properti untuk jenis Image:

Properti Type Deskripsi
sourceUrl String

Wajib diisi.

URL untuk gambar. Minimal, gambar harus berukuran 72x72 piksel. Untuk hasil terbaik, gunakan gambar yang berukuran minimal 216x216 piksel. Gambar harus berukuran kurang dari 6 MB dan 64 megapiksel.

LineItem

Menentukan isi keranjang (Cart.lineItems) atau biaya tambahan untuk pesanan (ProposedOrder.otherItems).

Tabel berikut mencantumkan properti untuk jenis LineItem:

Properti Type Deskripsi
id String

Wajib diisi saat type = "REGULAR".

Untuk LineItem di Keranjang (ProposaldOrder.cart.lineItems[0].id), ini adalah ID unik yang dibuat oleh Google saat membuat pesanan. Untuk LineItem dalam ProposaldOrder (ProposaldOrder.otherItems[0].id), yang digunakan untuk menambahkan item seperti biaya pengiriman dan pajak, nilai ID ditentukan oleh penyedia. Misalnya, dalam gerobak ada dua item yang sama dengan petunjuk penyiapan yang berbeda (seperti dua pizza berukuran sedang dengan set topping yang berbeda). Dalam hal ini, kedua item tersebut memiliki offerId dasar yang sama. Ketika Anda mengirimkan permintaan pembaruan pesanan untuk menunjukkan bahwa item ditolak, gunakan ID ini sebagai disambiguator. Dengan kata lain, jika salah satu pizza ditolak karena tidak memiliki topping tertentu, ID ini akan membantu Google menentukan item mana dalam pesanan yang Anda rujuk. Kolom ini wajib diisi kecuali di otherItems.

name String

Wajib diisi.

Nama item baris. Ini adalah string yang terlihat oleh pengguna, dan harus berupa kapitalisasi kalimat jika memungkinkan (seperti "Biaya pengiriman", "Tagihan layanan", "Pajak"). Kolom ini terpotong menjadi 100 karakter untuk pengguna.

type LineItemType

Wajib diisi.

quantity Bilangan Bulat

Wajib diisi saat type = "REGULAR".

Jumlah item yang disertakan. Tidak berlaku untuk Ajukan Pesanan.otherItems.

description String

Deskripsi item.

price Price

Wajib diisi.

Harga item atau item. Nilai ini mencerminkan total harga semua barang atau jasa untuk item baris ini (dengan kata lain, tambahkan biaya add-on dan kalikan dengan kuantitas). Misalnya: Jika item seharga $10 memiliki jumlah 3, harganya akan menjadi $30. Untuk satu pizza dengan harga dasar $5 dan add-on $1, harganya menjadi $6. Untuk dua pizza (jumlah = 2) dengan harga dasar $5 dan masing-masing dengan tambahan $1, harganya akan menjadi $12. Setiap LineItem harus memiliki harga, meskipun harganya adalah "0". Jika tipenya adalah DISCOUNT, tentukan nilai sebagai negatif (misalnya, "-2").

subLines Daftar<SublineNote>

Opsional dan hanya valid jika jenisnya "REGULAR". Catatan khusus item dari pengguna dapat dikirim dalam kolom ini dalam permintaan checkout dan permintaan pengiriman pesanan. Pastikan penjual menerima catatan saat catatan tersebut diberikan. Nilai akan ada dalam permintaan sebagai subLines[0].note, yang merupakan satu-satunya nilai yang diberikan di kolom ini saat ada dalam permintaan.

Tidak boleh lebih dari 1 item.

offerId String

Wajib diisi saat type = "REGULAR".

ID penawaran MenuItem untuk item. Tidak berlaku untuk Ajukan Pesanan.otherItems.

extension FoodItemExtension

Menentukan add-on untuk item makanan.

Contoh berikut menunjukkan elemen LineItem:

Contoh 1

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

Contoh 2

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

LineItemType

Jenis LineItemType memiliki kemungkinan nilai berikut:

  • REGULAR: Item baris barang. Berlaku untuk Cart.lineItems.
  • TAX: Item baris pajak. Berlaku untuk ProposaldOrder.otherItems.
  • DISCOUNT: Item baris diskon. Perhatikan bahwa harga harus negatif. Berlaku untuk ProposaldOrder.otherItems.
  • GRATUITY: Item baris Gratuity. Umumnya disimpan untuk SubmitOrderRequestMessage untuk tips yang dipilih pengguna. Berlaku untuk ProposaldOrder.otherItems.
  • DELIVERY: Item baris penayangan. Berlaku untuk ProposaldOrder.otherItems.
  • SUBTOTAL: Item baris subtotal. Berlaku untuk ProposaldOrder.otherItems.
  • FEE: Item baris tambahan yang tidak tercakup dalam jenis lain. Berlaku untuk ProposaldOrder.otherItems.

Lokasi

Menentukan alamat untuk pemesanan makanan. Jenis Location digunakan dalam Cart untuk menunjukkan tujuan pesanan pengiriman saja. Lokasi akhir juga ada di TransactionDecisionValue jika pengguna melakukan pemesanan. Untuk pesanan yang menentukan pengambilan, lokasi tidak disertakan sama sekali (bahkan tidak kosong).

Tabel berikut mencantumkan properti untuk jenis Location:

Properti Type Deskripsi
coordinates Coordinates
formattedAddress String

Tampilkan alamat lokasi.

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

postalAddress PostalAddress
zipCode String

Contoh: 90210

city String

Nama kota.

Contoh: Los Angeles

notes String

Catatan tentang lokasi, seperti kode gerbang. Panjang sandi harus 500 karakter atau kurang.

Contoh: Gate code is #111

Contoh berikut menunjukkan elemen Location:

Contoh

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

Penjual

Tabel berikut mencantumkan properti untuk jenis Merchant:

Properti Type Deskripsi
id String

ID penjual. Jika ditentukan, cocok dengan atribut Restaurant.@id dalam feed Restoran.

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

name String

Wajib diisi.

Nama penjual yang terlihat oleh pengguna.

Contoh: Falafel Bite

Contoh berikut menunjukkan elemen Merchant:

Contoh

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

Uang

Tabel berikut mencantumkan properti untuk jenis Money:

Properti Type Deskripsi
currencyCode String

Wajib diisi.

Kode mata uang 3 huruf dalam format ISO 4217.

Contoh: USD

units String

Seluruh unit jumlahnya. Misalnya, jika currencyCode adalah "USD", unit "1" adalah satu dolar AS.

Contoh: 36

nanos Bilangan Bulat

Jumlah satuan nano (10^-9) dari jumlah tersebut. Nilainya harus antara -999.999.999 dan +999.999.999, inklusif. Gunakan aturan berikut: Jika unit positif, nano harus positif atau nol. Jika unit bernilai nol, nano bisa positif, nol, atau negatif. Jika unit negatif, nano harus negatif atau nol. Misalnya $-1,75 direpresentasikan sebagai unit = -1 dan nanos = -750.000.000.

Contoh: 730000000

Contoh berikut menunjukkan elemen Money:

Contoh 1

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

Contoh 2

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

Pesan

Berisi pesanan akhir, termasuk pajak, biaya, dan ongkos kirim, serta informasi pembayaran. Objek ini diterima oleh tindakan Anda dalam Submit AppRequest.

Tabel berikut mencantumkan properti untuk jenis Order:

Properti Type Deskripsi
finalOrder ProposedOrder

Wajib diisi.

Pesanan yang diusulkan yang menyebabkan pesanan.

googleOrderId String

Wajib diisi.

ID Pesanan yang ditetapkan oleh Google. ID ini harus stabil selama seluruh siklus proses pesanan. ID ini tidak dapat dilihat oleh pengguna akhir.

orderDate Stempel Waktu ISO

Wajib diisi.

Tanggal dan waktu pesanan dibuat.

paymentInfo PaymentInfo

Wajib diisi.

Informasi pembayaran yang terkait dengan pembayaran untuk pesanan ini.

Contoh berikut menunjukkan elemen Order:

Contoh

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

OrderUpdate

Tabel berikut menjelaskan kolom jenis OrderUpdate yang disertakan dalam AppResponse.

Tabel berikut mencantumkan properti untuk jenis OrderUpdate:

Properti Type Deskripsi
actionOrderId String

Wajib diisi.

ID unik pesanan dalam sistem integrator yang digunakan untuk mengidentifikasi urutan pengiriman pembaruan. Jika signature.user_visible_order_id tidak diberikan setidaknya sekali di OrderUpdate untuk pesanan "CREATED", ID ini akan menjadi ID yang terlihat oleh pengguna yang dimasukkan dan ditampilkan di kartu pesanan Google.

orderState OrderState

Wajib diisi.

Status baru pesanan.

lineItemUpdates Peta<String, LineItemUpdate>
updateTime Stempel Waktu ISO

Wajib diisi.

Waktu saat pesanan diperbarui.

orderManagementActions Daftar<OrderManagementAction>

Tindakan setelah pemesanan seperti menghubungi dukungan dan melihat detail pesanan.

Harus memiliki tidak kurang dari 1 item dan tidak lebih dari 6 item.

rejectionInfo RejectionInfo

Wajib diisi saat orderState.state = "REJECTED".

cancellationInfo CancellationInfo

Wajib diisi saat orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

Kolom ini tidak digunakan lagi.

fulfillmentInfo FulfillmentInfo

Kolom ini tidak digunakan lagi.

receipt Receipt

Wajib diisi saat orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

Berikan ID pesanan yang terlihat oleh pengguna dalam tanda terima.

totalPrice Price

Total harga pesanan.

infoExtension FoodOrderUpdateExtension

Menentukan detail selengkapnya tentang pembaruan pesanan, seperti interval untuk perkiraan pengiriman atau pengambilan.

Contoh berikut menunjukkan elemen OrderUpdate:

Contoh

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

PickupInfo

Tabel berikut mencantumkan properti untuk jenis PickupInfo:

Properti Type Deskripsi
pickupTimeIso8601 String

Perkiraan waktu pengambilan, dalam format stempel waktu ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" atau format durasi: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". Misalnya, PT90M mewakili durasi 90 menit. Nilai defaultnya ,"PT0M", menunjukkan bahwa waktu pengambilan yang diinginkan adalah sesegera mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Gabungkand_date_and_time_representations. Gunakan opsi ini untuk memperbarui perkiraan waktu pengambilan selama respons checkout.

Contoh: PT90M

Contoh berikut menunjukkan elemen PickupInfo:

Contoh

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

Tabel berikut mencantumkan properti untuk jenis PostalAddress:

Properti Type Deskripsi
regionCode String

Wajib diisi.

Kode negara dua huruf.

Contoh: US

postalCode String

Kode pos.

Contoh: 94043

administrativeArea String

Subdivisi administratif tertinggi yang digunakan untuk alamat pos negara atau wilayah. Negara bagian, provinsi, oblast, atau prefektur.

Contoh: CA

locality String

Kota untuk lokasi ini. Di wilayah dunia dengan lokalitas yang tidak didefinisikan dengan baik atau tidak cocok dengan struktur ini, jangan tentukan lokalitas dan gunakan kolom addressLines sebagai gantinya.

Contoh: Mountain View

addressLines List<String>

Satu atau beberapa baris yang dapat Anda gunakan untuk menentukan alamat. Kolom ini tidak boleh diubah karena dapat berisi lokalitas yang tidak jelas.

Contoh: [ "1350 Charleston Road" ]

recipients List<String>

Daftar penerima pesanan. Kolom ini hanya tersedia di billingAddress.

Contoh berikut menunjukkan elemen PostalAddress:

Contoh

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

Harga

Tabel berikut mencantumkan properti untuk jenis Price:

Properti Type Deskripsi
type Enum [ "ESTIMATE", "ACTUAL" ]

Wajib diisi.

Kode kupon promosi.

amount Money

Wajib diisi.

Promosi

Tabel berikut mencantumkan properti untuk jenis Promotion:

Properti Type Deskripsi
coupon String

Wajib diisi.

Kode kupon promosi.

ProposedOrder

Tabel berikut mencantumkan properti untuk jenis ProposedOrder:

Properti Type Deskripsi
id String

ID opsional untuk pesanan yang diusulkan.

cart Cart

Wajib diisi.

Item pengguna.

otherItems Daftar<LineItem>

Item yang ditambahkan oleh penyedia, seperti ongkos kirim, biaya lain, dan pajak. Item lain juga dapat berisi diskon dan/atau diskon yang ditambahkan oleh pengguna.

Tidak boleh lebih dari 10 item.

image Image

Gambar yang terkait dengan pesanan yang diusulkan.

totalPrice Price

Wajib diisi.

Harga total pesanan yang diusulkan.

extension FoodOrderExtension

Wajib diisi.

Mendefinisikan informasi pemenuhan pesanan makanan.

disclaimers Daftar<Disclaimer>

Berhubungan dengan pesan pernyataan penyangkalan yang akan ditampilkan di UI sebelum pesanan dilakukan.

Contoh berikut menunjukkan elemen ProposedOrder:

Contoh

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

SublineNote

Tabel berikut mencantumkan properti untuk jenis SublineNote:

Properti Type Deskripsi
note String

Wajib diisi.

Stempel waktu

Tanggal dan waktu, dalam format berikut: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

Berisi Order.

Tabel berikut mencantumkan properti untuk jenis TransactionDecisionValue:

Properti Type Deskripsi
order Order

Wajib diisi.

Pesanan yang akan dilakukan dengan detail pembayaran.

Contoh berikut menunjukkan elemen TransactionDecisionValue:

Contoh

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

Permintaan Pemenuhan Pesanan

AppRequest

Tabel berikut mencantumkan properti untuk jenis AppRequest:

Properti Type Deskripsi
isInSandbox Boolean

Menunjukkan apakah transaksi berikutnya dilakukan di lingkungan sandbox.

conversation Conversation
inputs Daftar<Input>

Wajib diisi.

Berisi argumen yang diharapkan untuk memeriksa keranjang.

Harus memiliki tepat 1 item.

Contoh berikut menunjukkan elemen AppRequest:

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

Contoh 2

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

CheckoutRequestMessage

CheckoutRequestMessage adalah AppRequest dengan intent actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

SubmitOrderRequestMessage adalah AppRequest dengan intent actions.foodordering.intent.TRANSACTION_DECISION.

Percakapan

Conversation bersifat unik untuk satu sesi saja. Anda dapat menggunakannya untuk menautkan beberapa Tindakan Checkout dan SubmitOrder secara bersamaan jika diperlukan.

Tabel berikut mencantumkan properti untuk jenis Conversation:

Properti Type Deskripsi
conversationId String

Wajib diisi.

ID unik untuk percakapan.

Contoh berikut menunjukkan elemen Conversation:

Contoh

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

Input

Argumen yang diharapkan untuk melakukan check out keranjang.

Tabel berikut mencantumkan properti untuk jenis Input:

Properti Type Deskripsi
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

Wajib diisi.

Tetapkan ke "actions.foodordering.intent.CHECKOUT" untuk pesan permintaan checkout ATAU "actions.intent.TRANSACTION_DESISION" untuk mengirimkan pesan permintaan pesanan.

arguments Daftar<Argument>

Wajib diisi.

Berisi Keranjang untuk di-check out atau pesanan yang akan dilakukan

Harus memiliki tepat 1 item.

Argumen

Berisi detail tentang item makanan yang ingin diperiksa pengguna. Untuk checkout, hanya ekstensi yang berlaku. Untuk pengiriman pesanan, hanya transactionDecisionValue yang berlaku

Tabel berikut mencantumkan properti untuk jenis Argument:

Properti Type Deskripsi
Hanya salah satu dari grup properti berikut yang diperlukan.
extension Grup 1 Cart

Merinci item makanan yang ingin diperiksa pengguna.

transactionDecisionValue Grup 2 TransactionDecisionValue

Berisi pesanan yang akan dilakukan beserta detail pembayaran.

Respons Pemenuhan

AppResponse

Tabel berikut mencantumkan properti untuk jenis AppResponse:

Properti Type Deskripsi
expectUserResponse Konstanta

Tetapkan ke false (salah).

Nilai: False

finalResponse FinalResponse

Wajib diisi.

Berisi respons Anda terhadap checkout keranjang.

Contoh berikut menunjukkan elemen AppResponse:

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

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

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

Contoh 4

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

CheckoutResponseMessage

CheckoutResponseMessage adalah AppResponse dengan checkoutResponse atau error di StructuredResponse.

SubmitOrderResponseMessage

SubmitOrderResponseMessage adalah AppResponse dengan orderUpdate di StructuredResponse.

FinalResponse

Respons Anda terhadap checkout keranjang atau SubmitOrderRequestMessage.

Tabel berikut mencantumkan properti untuk jenis FinalResponse:

Properti Type Deskripsi
richResponse RichResponse

Wajib diisi.

Berisi respons Anda terhadap CheckoutRequestMessage atau SubmitOrderRequestMessage.

CheckoutResponse

Tabel berikut mencantumkan properti untuk jenis CheckoutResponse:

Properti Type Deskripsi
proposedOrder ProposedOrder

Wajib diisi.

Pesanan yang diusulkan digunakan untuk transaksi.

paymentOptions PaymentOptions

Wajib diisi.

Opsi pembayaran default dipilih untuk pengguna.

additionalPaymentOptions Daftar<PaymentOptions>

Opsi pembayaran alternatif yang tersedia bagi pengguna.

Contoh berikut menunjukkan elemen CheckoutResponse:

Contoh

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

Item

Berisi respons Anda terhadap checkout keranjang atau SubmitOrderRequestMessage.

Tabel berikut mencantumkan properti untuk jenis Item:

Properti Type Deskripsi
structuredResponse StructuredResponse

Wajib diisi.

RichResponse

Berisi respons Anda terhadap checkout keranjang.

Tabel berikut mencantumkan properti untuk jenis RichResponse:

Properti Type Deskripsi
items Daftar<Item>

Wajib diisi.

Harus memiliki tepat 1 item.

StructuredResponse

Untuk CheckoutResponseMessage, hal ini bisa berupa salah satu dari yang berikut: CheckoutResponse Menunjukkan checkout yang berhasil. ATAU FoodErrorExtension: Menunjukkan kegagalan selama checkout. Respons yang diberikan dapat berisi Mengajukan ProposaldOrder dan PaymentOptions yang telah diperbaiki atau pesan error tanpa PaymentOptions. Untuk SubmitOrderResponseMessage, hanya orderUpdate yang berlaku.

Tabel berikut mencantumkan properti untuk jenis StructuredResponse:

Properti Type Deskripsi
Hanya salah satu dari grup properti berikut yang diperlukan.
checkoutResponse Grup 1 CheckoutResponse

Memeriksa item ditambah pajak dan diskon.

error Grup 2 FoodErrorExtension

Error yang diamati di item keranjang. Bergantung pada sifat error, properti ini dapat menyertakan Mengajukan Pesanan dan Opsi Pembayaran yang telah diperbaiki, atau hanya pesan error tanpa PaymentOptions.

orderUpdate Grup 3 OrderUpdate

Pembaruan pesanan asinkron

Bagian ini menjelaskan jenis tingkat tinggi yang membentuk permintaan dan respons interaksi tindakan bawaan pemesanan makanan standar.

AsyncOrderUpdateRequestMessage

Memberi tahu pengguna tentang perubahan, setelah pesanan dikirimkan dan dikonfirmasi. Misalnya, Anda dapat memberi tahu pengguna bahwa pesanan sedang dalam pengiriman atau jika harga telah berubah. Untuk informasi selengkapnya, lihat

Tabel berikut mencantumkan properti untuk jenis AsyncOrderUpdateRequestMessage:

Properti Type Deskripsi
isInSandbox Boolean

Menunjukkan bahwa urutan pengiriman update ini adalah pembayaran sandbox.

customPushMessage CustomPushMessage

Wajib diisi.

Berisi OrderUpdate untuk permintaan.

Contoh berikut menunjukkan elemen AsyncOrderUpdateRequestMessage:

Contoh

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

Setelah Anda berhasil mengirim AsyncOrderUpdateRequestMessage, Google akan merespons dengan status HTTP 200 dan isi kosong. Jika update tidak berhasil, Google akan merespons dengan menyertakan detail tentang alasan kegagalan pembaruan pesanan.

Jenis pembaruan pesanan

Tombol

Mendefinisikan elemen antarmuka pengguna yang dapat Anda tambahkan untuk menyediakan interaksi pengguna.

Tabel berikut mencantumkan properti untuk jenis Button:

Properti Type Deskripsi
title String

Wajib diisi.

Label tampilan. Gunakan kapitalisasi kalimat dengan 30 karakter atau kurang untuk memastikan rendering yang tepat.

Contoh: Contact us

openUrlAction OpenUrlAction

Wajib diisi.

Contoh berikut menunjukkan elemen Button:

Contoh

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

CancellationInfo

Tabel berikut mencantumkan properti untuk jenis CancellationInfo:

Properti Type Deskripsi
reason String

Wajib diisi.

Alasan teks yang dapat ditampilkan untuk penolakan saat OrderState.state adalah "CANCELLED".

Contoh: Restaurant closed

Contoh berikut menunjukkan elemen CancellationInfo:

Contoh

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

Jenis ini memberi pengguna perkiraan interval terkait kapan pesanan akan dikirim atau siap diambil. Kirim ekstensi ini di OrderUpdate setiap kali informasi tersedia atau telah berubah sejak terakhir dikirim.

Berikan perkiraan konservatif untuk interval fulfillment sehingga ekspektasi pengguna dapat terpenuhi secara konsisten. Misalnya, jika pesanan diperkirakan akan dikirim hari ini pukul 13.00, Anda harus mengirimkan perkiraan interval yang konsisten dengan variasi karena kondisi lalu lintas, seperti hari ini pukul 12.45 hingga 13.15.

Durasi atau stempel waktu ISO 8601 diartikan sebagai interval dari updateTime OrderUpdate (pada dasarnya, "sekarang") ke updateTime ditambah duration. Jangan gunakan format ini kecuali jika "sekarang" merupakan ekspektasi yang wajar.

Interval ISO 8601 diinterpretasikan sebagai interval dari awal hingga akhir interval.

Tabel berikut mencantumkan properti untuk jenis FoodOrderUpdateExtension:

Properti Type Deskripsi
@type Konstanta

Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

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

estimatedFulfillmentTimeIso8601 String

Perkiraan waktu saat pesanan akan dikirim atau siap diambil. String harus dalam format ISO 8601 dan harus sesuai dengan interval, bukan waktu tetap tunggal. Konvensi yang dapat diterima adalah: Interval, Durasi, dan Tanggal/Waktu. Kolom ini dapat dikirim di SubmitOrderResponseMessage, atau AsyncOrderUpdateRequestMessage saat informasi tersedia atau ada perubahan, seperti kedatangan awal atau tertunda.

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

foodOrderErrors Daftar<FoodOrderError>

Menjelaskan error yang terjadi setelah pesanan. Satu error yang direkomendasikan per keranjang atau per item. Gunakan FoodOrderUpdateExtension.FoodOrderErrors untuk error yang tidak tercakup oleh RejectionInfo.

Harus memiliki tidak kurang dari 1 item.

Contoh berikut menunjukkan elemen FoodOrderUpdateExtension:

Contoh 1

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

Contoh 2

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

FulfillmentInfo

Tabel berikut mencantumkan properti untuk jenis FulfillmentInfo:

Properti Type Deskripsi
Hanya salah satu dari grup properti berikut yang diperlukan.
deliveryTime Grup 1 Stempel Waktu ISO

Menggunakan estimasiFulfillmentTimeIso8601 dalam pesan FoodOrderingUpdateExtension

pickupTime Grup 2 Stempel Waktu ISO

Menggunakan estimasiFulfillmentTimeIso8601 dalam pesan FoodOrderingUpdateExtension

Contoh berikut menunjukkan elemen FulfillmentInfo:

Contoh 1

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

Contoh 2

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

InTransitInfo

Tabel berikut mencantumkan properti untuk jenis InTransitInfo:

Properti Type Deskripsi
updatedTime Stempel Waktu ISO

Menggunakan estimasiFulfillmentTimeIso8601 dalam pesan FoodOrderingUpdateExtension

Contoh berikut menunjukkan elemen InTransitInfo:

Contoh

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

LineItemUpdate

Tabel berikut mencantumkan properti untuk jenis LineItemUpdate:

Properti Type Deskripsi
orderState OrderState
price Price
reason String

Alasan perubahan. Wajib ada untuk perubahan harga.

Contoh berikut menunjukkan elemen LineItemUpdate:

Contoh

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

OpenUrlAction

Tabel berikut mencantumkan properti untuk jenis OpenUrlAction:

Properti Type Deskripsi
url String

Wajib diisi.

Tindakan yang dipicu dengan mengklik atau menyentuh tombol. Daftar awalan yang berlaku bergantung pada orderManagementActionType. "EMAIL": Awalan harus "mailto". "PANGGIL": Awalan harus "tel". "CUSTOMER_SERVICE": Awalan harus "mailto", "tel", "http", atau "https".

Contoh: https://www.google.com

OrderManagementAction

Pengelolaan pesanan memungkinkan pengguna mendapatkan dukungan pascapesanan dan harus dikirim dalam setiap OrderUpdate dalam pesanan kirim AppResponse dan setiap AsyncOrderUpdateRequestMessage Tindakan pengelolaan pesanan berikutnya yang dikirim untuk pesanan tertentu dapat bervariasi berdasarkan status.

Misalnya, dalam status "CREATED", CUSTOMER_SERVICE mungkin merujuk ke telepon dukungan pelanggan Anda. Kemudian, dalam status "DIKONFIRMASI", CUSTOMER_SERVICE dapat berubah menjadi nomor telepon restoran jika nomor tersebut menjadi kontak (POC) terbaik bagi pelanggan. Demikian pula, setelah pesanan berada dalam status "FULFILLED", CUSTOMER_SERVICE dapat merujuk ke alamat email dukungan Anda.

Tabel berikut mencantumkan properti untuk jenis OrderManagementAction:

Properti Type Deskripsi
type OrderManagementActionType

Wajib diisi.

button Button

Wajib diisi.

Contoh berikut menunjukkan elemen OrderManagementAction:

Contoh 1

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

Contoh 2

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

OrderManagementActionType

Menentukan jenis yang terkait dengan OrderManagementAction.

Jenis OrderManagementActionType memiliki kemungkinan nilai berikut:

  • CUSTOMER_SERVICE: Email dan/atau nomor kontak layanan pelanggan yang akan ditampilkan di halaman konfirmasi pesanan. Ini wajib diisi. Awalan openUrlAction.url harus "mailto", "tel", "http", atau "https".
  • EMAIL: Tindakan email pada halaman detail pesanan saja. Awalan openUrlAction.url harus "mailto".
  • CALL_DRIVER: Tindakan panggilan telepon hanya pada halaman detail pesanan. Awalan openUrlAction.url harus "tel".
  • CALL_RESTAURANT: Tindakan panggilan telepon hanya pada halaman detail pesanan. Awalan openUrlAction.url harus "tel".

OrderState

Status pesanan saat ini. Setiap nilai state dari OrderState juga sesuai dengan status pembelian di myaccount.google.com.

Tabel berikut mencantumkan properti untuk jenis OrderState:

Properti Type Deskripsi
state OrderStateEnum

Wajib diisi.

label String

Wajib diisi.

String tampilan yang terlihat oleh pengguna untuk status. Gunakan kapitalisasi kalimat.

Contoh: Your order has been received

Contoh berikut menunjukkan elemen OrderState:

Contoh

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

OrderStateEnum

Menentukan jenis yang terkait dengan OrderState.

Jenis OrderStateEnum memiliki kemungkinan nilai berikut:

  • CREATED: Pesanan yang dibuat oleh integrator dan menunggu konfirmasi dari penyedia. Sesuai dengan status pembelian "Dipesan".
  • CONFIRMED: Pesanan dikonfirmasi oleh penyedia dan aktif. Sesuai dengan status pembelian "Diterima".
  • REJECTED: Pesanan ditolak oleh integrator atau penyedia. Terkait dengan status pembelian "Ditolak".
  • CANCELLED: Pengguna membatalkan pesanan. Sesuai dengan status pembelian "Dibatalkan".
  • IN_PREPARATION: Makanan sedang disiapkan. Berhubungan dengan status pembelian "Status tidak diketahui".
  • READY_FOR_PICKUP: Makanan siap diambil. Sesuai dengan status pembelian "Siap diambil".
  • IN_TRANSIT: Pesanan sedang dikirim. Sesuai dengan status pembelian "Dalam proses".
  • FULFILLED: Pengguna menerima produk yang telah dipesan. Sesuai dengan status pembelian "Diambil".

Tanda Terima

Kirim jenis ini dalam pesanan kirim AppResponse, dengan OrderState adalah "CONFIRMED", "FULFILLED", atau "IN_TRANSIT". Kirim tanda terima pada saat userVisibleOrderId tersedia. Anda tidak perlu terus mengirim tanda terima di pembaruan berikutnya.

Tabel berikut mencantumkan properti untuk jenis Receipt:

Properti Type Deskripsi
userVisibleOrderId String

Wajib diisi.

Wajib diisi jika pesanan adalah "CONFIRMED", "IN_TRANSIT", atau "FULFILLED". Kolom ini adalah satu ID yang dilihat pengguna untuk pesanan ini (biasanya ID pesanan restoran), yang ditampilkan di tanda terima integrator dan kartu pesanan Google. Pengguna harus dapat menggunakan ID ini untuk merujuk pesanan layanan pelanggannya kepada penyedia dan integrator. Anda hanya perlu memberikan ID ini satu kali dalam OrderUpdate tertentu. Sebelum diberikan, actionOrderId adalah userVisibleOrderId. Misalnya, Anda mungkin belum memiliki userVisibleOrderId hingga pesanan dikonfirmasi oleh restoran. Setelah dikonfirmasi, Anda harus mengirim AsyncOrderUpdateRequestMessage dengan OrderUpdate dan Tanda Terima.

Contoh berikut menunjukkan elemen Receipt:

Contoh

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

Tabel berikut mencantumkan properti untuk jenis RejectionInfo:

Properti Type Deskripsi
type RejectionType

Wajib diisi.

reason String

Alasan penolakan digunakan untuk logging internal. Kolom ini tidak dapat dilihat oleh pengguna.

Contoh berikut menunjukkan elemen RejectionInfo:

Contoh

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

RejectionType

Jenis RejectionType memiliki kemungkinan nilai berikut:

  • INELIGIBLE: Pengguna tidak memenuhi syarat karena masalah kebijakan atau risiko.
  • PAYMENT_DECLINED: Ada masalah dengan pemrosesan pembayaran.
  • UNAVAILABLE_SLOT: Pesanan tidak dapat dipenuhi pada waktu yang telah ditentukan sebelumnya oleh DeliveryInfo atau PickupInfo.
  • PROMO_NOT_APPLICABLE: Ada masalah dengan promosi.
  • UNKNOWN: Alasan lain.

Jenis terkait pembayaran

Bagian ini menjelaskan jenis terkait pembayaran yang digunakan untuk pemenuhan pemesanan makanan.

ActionProvidedPaymentOptions

Persyaratan untuk metode pembayaran yang disediakan tindakan.

Tabel berikut mencantumkan properti untuk jenis ActionProvidedPaymentOptions:

Properti Type Deskripsi
paymentType PaymentType

Wajib diisi.

displayName String

Wajib diisi.

Nama instrumen pembayaran yang ditampilkan di tanda terima.

Contoh: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

Data tambahan untuk jenis pembayaran "ON_FULFILLMENT". Misalnya, Anda dapat menggunakan kolom ini untuk menentukan apakah pembayaran dapat didukung dengan uang tunai atau kartu.

Contoh berikut menunjukkan elemen ActionProvidedPaymentOptions:

Contoh

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

AllowedAuthMethods

Jenis AllowedAuthMethods memiliki kemungkinan nilai berikut:

  • PAN_ONLY: Metode autentikasi yang terkait dengan kartu pembayaran yang disimpan di file di Akun Google pengguna. Data pembayaran yang ditampilkan mencakup nomor rekening pribadi (PAN) dengan bulan habis masa berlaku dan tahun habis masa berlaku.

AllowedCardNetworks

Jenis AllowedCardNetworks memiliki kemungkinan nilai berikut:

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

BillingAddressParameters

Objek ini memungkinkan Anda menetapkan kolom tambahan yang akan ditampilkan untuk alamat penagihan yang diminta.

Tabel berikut mencantumkan properti untuk jenis BillingAddressParameters:

Properti Type Deskripsi
format String

Format alamat penagihan diperlukan untuk menyelesaikan transaksi. MIN: Nama, kode negara, dan kode pos. LENGKAP: Nama, alamat jalan, lokalitas, wilayah, kode negara, dan kode pos.

Contoh berikut menunjukkan elemen BillingAddressParameters:

Contoh 1

{
  "format": "MIN"
}

Contoh 2

{
  "format": "FULL"
}

CardParameters

Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.

Tabel berikut mencantumkan properti untuk jenis CardParameters:

Properti Type Deskripsi
allowedAuthMethods List<Const>

Wajib diisi.

Kolom yang didukung untuk mengautentikasi transaksi kartu.

Harus memiliki tidak kurang dari 1 item.

allowedCardNetworks Daftar<AllowedCardNetworks>

Wajib diisi.

Satu atau beberapa jaringan kartu yang Anda dukung, yang juga didukung oleh Google Pay API.

Harus memiliki tidak kurang dari 1 item.

billingAddressRequired Boolean

Tetapkan ke true (benar) jika Anda memerlukan alamat penagihan. Hanya minta alamat penagihan jika diperlukan untuk memproses transaksi. Permintaan data tambahan dapat meningkatkan hambatan dalam proses checkout dan menyebabkan rasio konversi yang lebih rendah.

billingAddressParameters BillingAddressParameters

Kolom yang diharapkan akan ditampilkan jika billingAddressRequired ditetapkan ke true.

cvcRequired Boolean

Tetapkan ke true jika menggunakan TimesofMoney, salah untuk semua pemroses pembayaran lainnya.

Contoh berikut menunjukkan elemen CardParameters:

Contoh 1

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

Contoh 2

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

GoogleProvidedPaymentInstrument

Tabel berikut mencantumkan properti untuk jenis GoogleProvidedPaymentInstrument:

Properti Type Deskripsi
instrumentToken String

Wajib diisi.

String berenkode 64 dasar yang berisi token pembayaran untuk menagih pengguna dengan pemroses Google Pay yang berpartisipasi, sesuai dengan GoogleProvidedPaymentOptions yang ditentukan sebelumnya.

billingAddress PostalAddress

Alamat penagihan untuk pembayaran.

Contoh berikut menunjukkan elemen GoogleProvidedPaymentInstrument:

Contoh

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

GoogleProvidedPaymentOptions

Persyaratan untuk metode pembayaran yang disediakan Google.

Tabel berikut mencantumkan properti untuk jenis GoogleProvidedPaymentOptions:

Properti Type Deskripsi
facilitationSpecification String

JSON PaymentDataRequest sebagai string. Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.

supportedCardNetworks Daftar<SupportedCardNetworks>

Sebagai gantinya, gunakan facilitationSpecification. Jenis jaringan kartu yang didukung oleh agen.

Kolom ini tidak digunakan lagi.

prepaidCardDisallowed Boolean

Sebagai gantinya, gunakan facilitationSpecification. Apakah kartu prabayar diizinkan atau tidak sebagai jenis pembayaran.

Kolom ini tidak digunakan lagi.

billingAddressRequired Boolean

Sebagai gantinya, gunakan facilitationSpecification. Apakah alamat penagihan diperlukan atau tidak.

Kolom ini tidak digunakan lagi.

tokenizationParameters TokenizationParameters

Kolom ini tidak digunakan lagi.

Contoh berikut menunjukkan elemen GoogleProvidedPaymentOptions:

Contoh 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\"}}"
}

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

Contoh 3

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

MerchantInfo

Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.

Tabel berikut mencantumkan properti untuk jenis MerchantInfo:

Properti Type Deskripsi
merchantId String

ID penjual Google yang diberikan kepada Anda oleh Google Pay.

merchantName String

Wajib diisi.

Nama penjual dienkode sebagai UTF-8. Nama penjual ditampilkan di sheet pembayaran.

OnFulfillmentPaymentData

Gunakan objek ini untuk mengirim data tambahan untuk PaymentType "ON_FULFILLMENT".

Tabel berikut mencantumkan properti untuk jenis OnFulfillmentPaymentData:

Properti Type Deskripsi
supportedPaymentOptions Daftar<PaymentOptionsEnums>

Daftar opsi pembayaran yang tersedia bagi pengguna pada saat pemenuhan pesanan.

Contoh berikut menunjukkan elemen OnFulfillmentPaymentData:

Contoh

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

Parameter

Menentukan jenis yang terkait dengan TokenizationParameters.

Tabel berikut mencantumkan properti untuk jenis Parameters:

Properti Type Deskripsi
gateway String

Wajib diisi.

Contoh: braintree

gatewayMerchantId String
[additionalKey: string] String Pasangan nilai kunci tambahan

Contoh berikut menunjukkan elemen Parameters:

Contoh 1

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

Contoh 2

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

PaymentDataRequest

Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.

Tabel berikut mencantumkan properti untuk jenis PaymentDataRequest:

Properti Type Deskripsi
apiVersion Konstanta

Wajib diisi.

Versi API utama.

Nilai: 2

apiVersionMinor Konstanta

Wajib diisi.

Versi minor API.

Nilai: 0

merchantInfo MerchantInfo

Wajib diisi.

(ID penjual Google Pay) Informasi tentang penjual yang meminta data pembayaran.

allowedPaymentMethods Daftar<PaymentMethod>

Wajib diisi.

Menentukan dukungan untuk satu atau beberapa metode pembayaran yang didukung oleh Google Pay API.

transactionInfo TransactionInfo

Wajib diisi.

Detail tentang otorisasi transaksi berdasarkan apakah pengguna menyetujui transaksi atau tidak. Kolom ini mencakup harga total dan status harga.

Contoh berikut menunjukkan elemen PaymentDataRequest:

Contoh

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

PaymentInfo

Informasi terkait pembayaran untuk pesanan.

Tabel berikut mencantumkan properti untuk jenis PaymentInfo:

Properti Type Deskripsi
displayName String

Wajib diisi.

Nama instrumen pembayaran yang dapat dilihat pengguna, yang akan ditampilkan di tanda terima.

paymentType PaymentType

Wajib diisi.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

Token yang dapat digunakan oleh tindakan. Hanya tentukan ini jika Anda menentukan GoogleProvidedPaymentOptions sebagai opsi pembayaran di CheckoutResponseMessage.

Contoh berikut menunjukkan elemen PaymentInfo:

Contoh 1

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

Contoh 2

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

PaymentMethod

Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.

Tabel berikut mencantumkan properti untuk jenis PaymentMethod:

Properti Type Deskripsi
type Konstanta

Wajib diisi.

ID singkat untuk metode pembayaran yang didukung. Saat ini hanya CARD yang didukung.

Nilai: CARD

parameters CardParameters

Wajib diisi.

Parameter yang diperlukan untuk mengonfigurasi jenis metode pembayaran yang disediakan.

tokenizationSpecification TokenizationSpecification

Wajib diisi.

Mengonfigurasi penyedia akun atau dekripsi untuk menerima informasi pembayaran. Properti ini diperlukan untuk metode pembayaran KARTU.

Contoh berikut menunjukkan elemen PaymentMethod:

Contoh

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

PaymentOptions

Tabel berikut mencantumkan properti untuk jenis PaymentOptions:

Properti Type Deskripsi
Hanya salah satu dari grup properti berikut yang diperlukan.
googleProvidedOptions Grup 1 GoogleProvidedPaymentOptions

Tidak dapat muncul bersamaan dengan actionProvidedOptions. Gunakan ini untuk pembayaran online menggunakan gPay.

actionProvidedOptions Grup 2 ActionProvidedPaymentOptions

Tidak dapat muncul bersamaan dengan googleProvidedOptions. Gunakan ini untuk "bayar di tempat" atau "bayar sesuai pemenuhan".

Contoh berikut menunjukkan elemen PaymentOptions:

Contoh 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\"}}"
  }
}

Contoh 2

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

Contoh 3

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

PaymentOptionsEnums

Jenis PaymentOptionsEnums memiliki kemungkinan nilai berikut:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

Jenis PaymentType memiliki kemungkinan nilai berikut:

  • PAYMENT_CARD: Untuk GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: Untuk ActionProvidedPaymentOptions.

SupportedCardNetworks

Menentukan jenis yang terkait dengan GoogleProvidedPaymentOptions.

Jenis SupportedCardNetworks memiliki kemungkinan nilai berikut:

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

TokenizationParameters

Menentukan jenis yang terkait dengan GoogleProvidedPaymentOptions.

Tabel berikut mencantumkan properti untuk jenis TokenizationParameters:

Properti Type Deskripsi
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

Wajib diisi.

Sebagai gantinya, gunakan facilitationSpecification. Jenis token yang dapat diterima.

parameters Parameters

Sebagai gantinya, gunakan facilitationSpecification.

TokenizationSpecification

Objek ini memungkinkan Anda mengonfigurasi akun untuk menerima informasi pembayaran yang dapat ditagih.

Tabel berikut mencantumkan properti untuk jenis TokenizationSpecification:

Properti Type Deskripsi
type Konstanta

Wajib diisi.

parameters Parameters

Wajib diisi.

Contoh berikut menunjukkan elemen TokenizationSpecification:

Contoh 1

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

Contoh 2

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

TransactionInfo

Objek ini menjelaskan transaksi yang menentukan kemampuan pembayar untuk membayar. Atribut ini digunakan untuk menampilkan dialog otorisasi pembayaran.

Tabel berikut mencantumkan properti untuk jenis TransactionInfo:

Properti Type Deskripsi
currencyCode String

Wajib diisi.

Kode mata uang alfabet ISO 4217.

transactionId String

ID unik yang mengidentifikasi upaya transaksi. Penjual dapat menggunakan ID yang sudah ada atau membuat ID khusus untuk upaya transaksi Google Pay. Kolom ini wajib diisi saat Anda mengirim callback ke Google Transaction Events API.

totalPriceStatus Konstanta

Wajib diisi.

Gunakan "ESTIMASI" sebagai default. Total harga dapat disesuaikan berdasarkan detail respons, seperti pajak penjualan yang dipungut berdasarkan alamat penagihan.

Nilai: ESTIMATED

totalPrice String

Wajib diisi.

Total nilai uang dari transaksi dengan presisi desimal opsional sebanyak dua angka di belakang koma. Kolom ini harus memiliki nilai yang sama dengan cart.totalPrice.

Contoh berikut menunjukkan elemen TransactionInfo:

Contoh

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