Jenis Dasar
Keranjang
Berisi detail pesanan, serta apakah permintaannya untuk diambil atau pengiriman. Keranjang juga berisi detail pengiriman, tip, dan pengantaran alamat IPv6 ObjekCart
ditentukan di Checkout AppRequest
.f
Anda menyertakan salinan keranjang di Checkout AppResponse
Anda
Tabel berikut mencantumkan properti untuk jenis Cart
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const |
Jenis objek ini. Hapus kolom ini jika objek Keranjang induk adalah bagian dari ProposaldOrder. Nilai: |
|
id |
String |
ID opsional keranjang. |
|
merchant |
Merchant |
Penjual yang berafiliasi dengan keranjang ini. |
|
lineItems |
Daftar<LineItem > |
Wajib. 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 petunjuk pemesanan atau 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 diAppResponse
Tabel berikut mencantumkan properti untuk jenis Contact
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
displayName |
String |
Nama orang yang menerima pesanan, yang ingin Anda tampilkan. Gunakan kolom ini jika firstName dan lastName tidak ditentukan. Contoh: |
|
email |
String |
Alamat email penerima pesanan. Contoh: |
|
firstName |
String |
Nama depan orang yang menerima pesanan. Contoh: |
|
lastName |
String |
Nama keluarga penerima pesanan. Contoh: |
|
phoneNumber |
String |
Nomor telepon penerima pesanan, termasuk kode negara. Contoh: |
|
emailVerified |
Boolean |
Menunjukkan apakah orang yang menerima pesanan login dengan Akun Google-nya. |
Contoh berikut menunjukkan elemen Contact
:
Contoh
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
BerisiOrderUpdate
untuk permintaan.
Tabel berikut mencantumkan properti untuk jenis CustomPushMessage
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Wajib. Informasi yang diperbarui untuk 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 | Jenis | Deskripsi | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Perkiraan waktu pengiriman, dalam format stempel waktu ISO 8601: "{year}-{month}-{hari}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 default ,"PT0M", menunjukkan bahwa waktu pengiriman yang diinginkan adalah sesegera mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Gunakan tombol ini untuk memperbarui perkiraan waktu pengiriman selama respons checkout. Contoh: |
Contoh berikut menunjukkan elemen DeliveryInfo
:
Contoh
{ "deliveryTimeIso8601": "PT90M" }
Pernyataan penyangkalan
Tabel berikut mencantumkan properti untuk jenis Disclaimer
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Wajib. Untuk menampilkan pesan pernyataan penyangkalan standar selama checkout. |
|
feeAmount |
Money |
Partner akan menagih biaya sejumlah N kepada penjual untuk pesanan ini. |
|
feeAmountRange |
FeeAmountRange |
Partner akan menagih biaya sebesar N hingga M per pesanan kepada restoran. |
|
feePercent |
Number |
Partner akan menagih biaya N% kepada penjual untuk pesanan ini. |
|
feePercentRange |
FeePercentRange |
Partner akan menagih biaya kepada penjual sebesar N% hingga M% 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
: Tidak ada kapasitas layanan yang tersedia (misalnya, pemadaman layanan sementara karena waktu sibuk).NO_COURIER_AVAILABLE
: Tidak dapat memproses pesanan karena staf pengiriman yang terbatas.REQUIREMENTS_NOT_MET
: Batasan untuk menerima pesanan belum terpenuhi (misalnya, ukuran keranjang minimum).UNAVAILABLE_SLOT
: Pesanan tidak dapat dipenuhi pada waktu tunggu pesanan yang ditentukan oleh DeliveryInfo atau PengambilanInfo.OUT_OF_SERVICE_AREA
: Pesanan tidak dapat dikirim ke alamat pengguna.PROMO_EXPIRED
: Tidak dapat diterapkan karena promosi sudah berakhir.PROMO_NOT_APPLICABLE
: Kode error umum untuk menangkap semua kasus kegagalan dalam menerapkan kode promo, jika tidak ada error kode promo lainnya yang sesuai.PROMO_NOT_RECOGNIZED
: Kode kupon tidak dikenali.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 item tidak cukup 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 | Jenis | Deskripsi | |
---|---|---|---|
minFeeAmount |
Money |
Batas bawah jumlah biaya yang ditagih. |
|
maxFeeAmount |
Money |
Batas atas jumlah biaya yang ditagih. |
FeePercentRange
Tabel berikut mencantumkan properti untuk jenis FeePercentRange
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
minFeePercent |
Number |
Batas bawah persentase biaya yang ditagih. |
|
maxFeePercent |
Number |
Batas atas persentase biaya yang ditagih. |
FoodCartExtension
Berisi detail tentang pengguna, seperti preferensi fulfillment.
Tabel berikut mencantumkan properti untuk jenis FoodCartExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const |
Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". Nilai: |
|
contact |
Contact |
Informasi kontak untuk orang yang menerima pesanan. Detail informasi mencakup nama pengguna, nomor telepon, dan alamat email. |
|
fulfillmentPreference |
FulfillmentOption |
Wajib. Preferensi pemenuhan pesanan pengguna. |
|
location |
Location |
Dalam CheckoutRequestMessage, bidang ini menentukan alamat pengiriman, yang diperlukan jika pesanan untuk pengiriman. Untuk pesanan yang ditujukan untuk bawa 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 jenisFoodErrorExtension
.
Error dapat dikirim dalam CheckoutResponse
.
Tabel berikut mencantumkan properti untuk jenis FoodErrorExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const | Wajib. Jenis ekstensi ini. Nilai: |
|
foodOrderErrors |
Daftar<FoodOrderError > |
Wajib. Array objek FoodOrderError yang menjelaskan error yang terjadi. Direkomendasikan satu error per keranjang atau per item. Harus memiliki tidak kurang dari 1 item. |
|
correctedProposedOrder |
ProposedOrder |
Wajib saat
Pesanan yang Diajukan baru dengan koreksi. Kembalikan objek ini jika ada error yang dapat dipulihkan dalam ProposaldOrder 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, bukan mengharuskan pengguna untuk meninjau keranjangnya. |
|
paymentOptions |
PaymentOptions |
Wajib diisi saat
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
Mendefinisikan {i>add-on<i} untuk item makanan.
Tabel berikut mencantumkan properti untuk jenis FoodItemExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const | Wajib. Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". Nilai: |
|
options |
Daftar<FoodItemOption > |
Opsi dapat berupa item add-on atau grup add-on yang berisi kumpulan 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 | Jenis | 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: |
|
offerId |
String |
ID penawaran untuk item. Contoh: |
|
name |
String |
Nama opsi. Contoh: |
|
price |
Money |
||
note |
String |
Catatan terkait opsi. |
|
quantity |
Number |
Untuk opsi yang merupakan item, jumlah item. Contoh: |
|
subOptions |
Daftar<FoodItemOption > |
Sub-opsi untuk opsi, jika ada. Contoh: |
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 dalamCheckoutResponse
.
Tabel berikut mencantumkan properti untuk jenis FoodOrderError
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
error |
Error |
Wajib. |
|
id |
String | Wajib diisi saat
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 saat
Harga baru item yang menyebabkan error. Hal ini diperlukan hanya jika errornya adalah "PRICE_CHANGED". |
|
availableQuantity |
Bilangan Bulat | Wajib saat
Jumlah item baru yang tersedia yang menyebabkan error. Ini hanya diperlukan jika error "INVALID" atau "NOT_FOUND". Nilai untuk "INVALID" harus nol 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 tentang pesanan.
Tabel berikut mencantumkan properti untuk jenis FoodOrderExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const |
Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". Nilai: |
|
availableFulfillmentOptions |
Daftar<FulfillmentOption > |
Mewakili opsi pemenuhan yang tersedia untuk pesanan. |
|
optinForRemarketing |
Boolean |
Permintaan pengguna untuk ikut serta dalam saluran pemasaran Anda. Secara default, Anda tidak dapat mengirim konten pemasaran tanpa izin pengguna. Jika optinForPemasaran ulang benar, Anda dapat membuat pengguna berlangganan. Jika optinForPemasaran ulang salah atau tidak ada, Anda harus mempertahankan status langganan di sistem Anda apa adanya. Pengguna tidak dapat memilih untuk tidak ikut melalui Google, hanya melalui fungsi berhenti berlangganan yang disediakan di saluran pemasaran Anda. Flag 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 objekFulfillmentOption
dengan cara berikut:
-
Di
Checkout AppRequest
danSubmit AppRequest
,Cart.extension.fulfillmentPreference
: Menyimpan preferensi pengguna (pengiriman atau pengambilan). Harga selalu 0 saat permintaan checkout dikirim. -
Pada
Checkout AppResponse
,ProposedOrder.extension.availableFulfillmentOptions
: Menentukan satu atau beberapa opsi pengiriman (saat ini, hanya satu opsi yang didukung). Anda menentukan opsi default sebagaiLineItem
diProposedOrder.otherItems
.offerId
dariFulfillmentOption
harus cocok dengan IDLineItem
ditentukan diProposedOrder.otherItems
.
Tabel berikut mencantumkan properti untuk jenis FulfillmentOption
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
offerId |
String |
ID unik untuk opsi pemenuhan pesanan ini, jika ada. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Wajib. |
|
expiresAt |
Stempel Waktu ISO |
Waktu saat opsi pemenuhan pesanan 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 denganFulfillmentInfo
.
Tabel berikut mencantumkan properti untuk jenis FulfillmentOptionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Hanya salah satu dari grup properti berikut yang wajib diisi. | |||
delivery |
Grup 1 | DeliveryInfo |
Jika ada, menunjukkan pesanan pengiriman. |
pickup |
Grup 2 | PickupInfo |
Jika ada, menunjukkan pesanan pengambilan. |
Gambar
Tabel berikut mencantumkan properti untuk jenis Image
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
sourceUrl |
String | Wajib. URL untuk gambar. Ukuran gambar minimal harus 72x72 piksel. Untuk hasil terbaik, gunakan gambar yang berukuran minimal 216x216 piksel. Gambar harus berukuran kurang dari 6 MB dan 64 megapiksel. |
LineItem
Menentukan konten keranjang (Cart.lineItems
) atau biaya tambahan untuk
pesanan (ProposedOrder.otherItems
).
Tabel berikut mencantumkan properti untuk jenis LineItem
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String | Wajib diisi saat
Untuk LineItem dalam 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, di dalam keranjang ada dua item yang sama dengan petunjuk penyiapan yang berbeda (seperti dua pizza sedang dengan set topping yang berbeda). Dalam hal ini, kedua item memiliki offerId dasar yang sama. Saat Anda mengirim 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 urutan yang Anda maksud. Kolom ini wajib diisi kecuali di otherItems. |
|
name |
String | Wajib. Nama item baris. Ini adalah string yang dapat dilihat pengguna, dan harus berupa kapitalisasi kalimat jika memungkinkan (seperti "Biaya pengiriman", "Tagihan layanan", "Pajak"). Kolom ini dibatasi maksimal 100 karakter untuk pengguna. |
|
type |
LineItemType |
Wajib. |
|
quantity |
Bilangan Bulat | Wajib diisi saat
Jumlah item yang disertakan. Tidak berlaku untuk ProposaldOrder.otherItems. |
|
description |
String |
Deskripsi item. |
|
price |
Price |
Wajib. Harga item atau beberapa item. Nilai ini mencerminkan harga total semua barang atau layanan untuk item baris ini (dengan kata lain, tambahkan biaya add-on dan kalikan dengan kuantitas). Misalnya: Jika item seharga $10 memiliki jumlah 3, harganya menjadi $30. Untuk satu pizza dengan harga dasar $5 dan add-on $1, harganya akan 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 "0". Jika jenisnya DISCOUNT, tentukan nilainya sebagai negatif (misalnya, "-2"). |
|
subLines |
Daftar<SublineNote > |
Opsional dan hanya valid jika jenisnya "REGULAR". Catatan khusus item dari pengguna dapat dikirim di kolom ini dalam permintaan checkout dan permintaan pengiriman pesanan. Pastikan penjual menerima catatan saat diberikan. Ini akan ada dalam permintaan sebagai subLines[0].note, yang merupakan satu-satunya nilai yang diberikan di kolom ini jika ada dalam permintaan. Tidak boleh lebih dari 1 item. |
|
offerId |
String | Wajib diisi saat
ID penawaran MenuItem untuk item. Tidak berlaku untuk ProposaldOrder.otherItems. |
|
extension |
FoodItemExtension |
Mendefinisikan {i>add-on<i} 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 gratifikasi. Umumnya dicadangkan untuk SubmitOrderRequestMessage bagi tips yang dipilih pengguna. Berlaku untuk ProposaldOrder.otherItems.DELIVERY
: Item baris penayangan. Berlaku untuk ProposaldOrder.otherItems.SUBTOTAL
: Subtotal item baris. Berlaku untuk ProposaldOrder.otherItems.FEE
: Item baris tambahan yang tidak tercakup dalam jenis lainnya. Berlaku untuk ProposaldOrder.otherItems.
Lokasi
Menentukan alamat untuk pemesanan makanan. JenisLocation
digunakan dalam
Cart
untuk menunjukkan tujuan pesanan pengiriman saja.
Lokasi akhir juga ada di
TransactionDecisionValue
jika pengguna melakukan
pemesanan. Untuk pesanan yang menentukan pengambilan, lokasinya
tidak disertakan sama sekali (bahkan yang kosong).
Tabel berikut mencantumkan properti untuk jenis Location
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
Tampilkan alamat lokasi. Contoh: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
Contoh: |
|
city |
String |
Nama kota. Contoh: |
|
notes |
String |
Catatan tentang lokasi, seperti kode gerbang. Panjangnya harus 500 karakter atau kurang. Contoh: |
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 | Jenis | Deskripsi | |
---|---|---|---|
id |
String |
ID penjual. Jika ditentukan, cocok dengan Restaurant.@id di feed Restoran. Contoh: |
|
name |
String | Wajib. Nama penjual yang terlihat oleh pengguna. Contoh: |
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 | Jenis | Deskripsi | |
---|---|---|---|
currencyCode |
String | Wajib. Kode mata uang 3 huruf dalam format ISO 4217. Contoh: |
|
units |
String |
Seluruh unit jumlahnya. Misalnya, jika currencyCode adalah "USD", maka "1" unitnya adalah satu dolar AS. Contoh: |
|
nanos |
Bilangan Bulat |
Jumlah unit nano (10^-9) dari jumlah tersebut. Nilainya harus antara -999.999.999 dan +999.999.999, inklusif. Gunakan aturan berikut: Jika satuan positif, nano harus positif atau nol. Jika satuan nol, nano bisa positif, nol, atau negatif. Jika satuan negatif, nano harus negatif atau nol. Misalnya $-1,75 direpresentasikan sebagai unit = -1 dan nanos = -750.000.000. Contoh: |
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, sebagaimana serta informasi pembayaran. Objek ini diterima oleh tindakan Anda dalamSubmit AppRequest
.
Tabel berikut mencantumkan properti untuk jenis Order
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
finalOrder |
ProposedOrder |
Wajib. Pesanan yang diusulkan yang menyebabkan pesanan. |
|
googleOrderId |
String | Wajib. ID Pesanan yang ditetapkan oleh Google. ID ini harus stabil untuk seluruh siklus proses pesanan. ID ini tidak terlihat oleh pengguna akhir. |
|
orderDate |
Stempel Waktu ISO | Wajib. Tanggal dan waktu pesanan dibuat. |
|
paymentInfo |
PaymentInfo |
Wajib. 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 dalamAppResponse
.
Tabel berikut mencantumkan properti untuk jenis OrderUpdate
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
actionOrderId |
String | Wajib. ID unik pesanan dalam sistem integrator yang digunakan untuk mengidentifikasi urutan pengiriman update. Jika tanda terima.user_visible_order_id tidak diberikan setidaknya sekali di OrderUpdate untuk "CREATED" pesanan, ID ini akan menjadi ID yang terlihat oleh pengguna yang dimasukkan dan ditampilkan di kartu pesanan Google. |
|
orderState |
OrderState |
Wajib. Status baru pesanan. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
Stempel Waktu ISO | Wajib. Waktu saat pesanan diperbarui. |
|
orderManagementActions |
Daftar<OrderManagementAction > |
Tindakan pasca-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
|
|
cancellationInfo |
CancellationInfo |
Wajib diisi saat
|
|
inTransitInfo |
InTransitInfo |
Kolom ini tidak digunakan lagi. |
|
fulfillmentInfo |
FulfillmentInfo |
Kolom ini tidak digunakan lagi. |
|
receipt |
Receipt |
Wajib diisi saat
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 | Jenis | Deskripsi | |
---|---|---|---|
pickupTimeIso8601 |
String |
Perkiraan waktu pengambilan, dalam format stempel waktu ISO 8601: "{year}-{month}-{hari}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 default "PT0M", menunjukkan bahwa waktu pengambilan yang diinginkan adalah sesegera mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. Gunakan tombol ini untuk memperbarui perkiraan waktu pengambilan selama respons checkout. Contoh: |
Contoh berikut menunjukkan elemen PickupInfo
:
Contoh
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Tabel berikut mencantumkan properti untuk jenis PostalAddress
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
regionCode |
String | Wajib. Kode negara dua huruf. Contoh: |
|
postalCode |
String |
Kode pos. Contoh: |
|
administrativeArea |
String |
Subdivisi administratif tertinggi yang digunakan untuk alamat pos suatu negara atau wilayah. Dapat berupa negara bagian, provinsi, oblast, atau prefektur. Contoh: |
|
locality |
String |
Kota untuk lokasi ini. Di wilayah dunia yang lokalitasnya tidak didefinisikan dengan baik atau tidak sesuai dengan struktur ini, jangan tetapkan lokalitas dan gunakan kolom addressLines. Contoh: |
|
addressLines |
Daftar<String> |
Satu atau beberapa baris yang dapat Anda gunakan untuk menetapkan alamat. Kolom ini tidak boleh diubah karena dapat berisi lokalitas yang tidak jelas. Contoh: |
|
recipients |
Daftar<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 | Jenis | Deskripsi | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Wajib. Kode kupon promosi. |
|
amount |
Money |
Wajib. |
Promosi
Tabel berikut mencantumkan properti untuk jenis Promotion
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
coupon |
String | Wajib. Kode kupon promosi. |
ProposedOrder
Tabel berikut mencantumkan properti untuk jenis ProposedOrder
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String |
ID opsional untuk pesanan yang diajukan. |
|
cart |
Cart |
Wajib. Item pengguna. |
|
otherItems |
Daftar<LineItem > |
Item yang ditambahkan oleh penyedia, seperti biaya pengiriman, biaya lainnya, dan pajak. otherItems juga dapat berisi tip 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. Total harga pesanan yang diusulkan. |
|
extension |
FoodOrderExtension |
Wajib. Mendefinisikan informasi pemenuhan pesanan untuk pesanan makanan. |
|
disclaimers |
Daftar<Disclaimer > |
Sesuai 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 | Jenis | Deskripsi | |
---|---|---|---|
note |
String | Wajib. |
Stempel waktu
Tanggal dan waktu, dalam format berikut:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
BerisiOrder
.
Tabel berikut mencantumkan properti untuk jenis TransactionDecisionValue
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
order |
Order |
Wajib. 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
AppRequest
Tabel berikut mencantumkan properti untuk jenis AppRequest
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
isInSandbox |
Boolean |
Menunjukkan apakah transaksi berikutnya dilakukan di lingkungan sandbox. |
|
conversation |
Conversation |
||
inputs |
Daftar<Input > |
Wajib. Berisi argumen yang diharapkan untuk melakukan check out keranjang. Harus memiliki 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
menghubungkan beberapa
Checkout
dan SubmitOrder
Tindakan bersama-sama jika diperlukan.
Tabel berikut mencantumkan properti untuk jenis Conversation
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
conversationId |
String | Wajib. ID unik untuk percakapan. |
Contoh berikut menunjukkan elemen Conversation
:
Contoh
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Argumen yang diharapkan untuk check out keranjang.
Tabel berikut mencantumkan properti untuk jenis Input
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Wajib. Tetapkan ke "actions.foodordering.intent.CHECKOUT" untuk pesan permintaan checkout OR "actions.intent.TRANSACTION_DECISION" untuk pesan permintaan kirim pesanan. |
|
arguments |
Daftar<Argument > |
Wajib. Berisi Keranjang yang akan di-check out atau pesanan yang akan dilakukan Harus memiliki 1 item. |
Argumen
Berisi detail tentang item makanan yang ingin dilihat pengguna. Untuk checkout, hanya ekstensi yang berlaku. Untuk pesanan pengiriman, hanya transaksiDecisionValue yang berlaku
Tabel berikut mencantumkan properti untuk jenis Argument
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Hanya salah satu dari grup properti berikut yang wajib diisi. | |||
extension |
Grup 1 | Cart |
Merinci item makanan yang ingin dilihat pengguna. |
transactionDecisionValue |
Grup 2 | TransactionDecisionValue |
Berisi pesanan yang akan dilakukan bersama dengan detail pembayaran. |
Respons Pemenuhan
AppResponse
Tabel berikut mencantumkan properti untuk jenis AppResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
expectUserResponse |
Const |
Tetapkan ke false. Nilai: |
|
finalResponse |
FinalResponse |
Wajib. 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 | Jenis | Deskripsi | |
---|---|---|---|
richResponse |
RichResponse |
Wajib. Berisi respons Anda terhadap CheckoutRequestMessage atau SubmitOrderRequestMessage. |
CheckoutResponse
Tabel berikut mencantumkan properti untuk jenis CheckoutResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Wajib. Pesanan yang diusulkan untuk digunakan untuk transaksi. |
|
paymentOptions |
PaymentOptions |
Wajib. 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 | Jenis | Deskripsi | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Wajib. |
RichResponse
Berisi respons Anda terhadap checkout keranjang.
Tabel berikut mencantumkan properti untuk jenis RichResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
items |
Daftar<Item > |
Wajib. Harus memiliki 1 item. |
StructuredResponse
Untuk CheckoutResponseMessage, ini bisa berupa salah satu dari hal berikut: CheckoutResponse Menunjukkan checkout yang berhasil. ATAU FoodErrorExtension: Menunjukkan kegagalan saat checkout. Respons dapat berupa ProposaldOrder dan PaymentOptions yang sudah diperbaiki, atau pesan error tanpa PaymentOptions. Untuk SubmitOrderResponseMessage, hanya orderUpdate yang berlaku.
Tabel berikut mencantumkan properti untuk jenis StructuredResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Hanya salah satu dari grup properti berikut yang wajib diisi. | |||
checkoutResponse |
Grup 1 | CheckoutResponse |
Item check out ditambah pajak dan diskon. |
error |
Grup 2 | FoodErrorExtension |
Error yang diamati dalam item keranjang. Bergantung pada sifat error, properti ini dapat menyertakan ProposaldOrder dan PaymentOptions yang diperbaiki, atau hanya pesan error tanpa PaymentOptions. |
orderUpdate |
Grup 3 | OrderUpdate |
Pembaruan urutan asinkron
Bagian ini menjelaskan jenis tingkat tinggi yang membentuk permintaan dan interaksi langsung dengan pengguna untuk interaksi tindakan {i>built-in<i} pemesanan makanan.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, lihatTabel berikut mencantumkan properti untuk jenis AsyncOrderUpdateRequestMessage
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
isInSandbox |
Boolean |
Menunjukkan bahwa urutan pengiriman pembaruan ini adalah pembayaran sandbox. |
|
customPushMessage |
CustomPushMessage |
Wajib. 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 mengirimAsyncOrderUpdateRequestMessage
, Google akan merespons
dengan status HTTP 200 dan isi kosong. Jika pembaruan tidak berhasil,
Google akan merespons dengan 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 | Jenis | Deskripsi | |
---|---|---|---|
title |
String | Wajib. Label tampilan. Gunakan kapitalisasi kalimat dengan 30 karakter atau kurang untuk memastikan rendering yang tepat. Contoh: |
|
openUrlAction |
OpenUrlAction |
Wajib. |
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 | Jenis | Deskripsi | |
---|---|---|---|
reason |
String | Wajib. Alasan teks yang dapat ditampilkan untuk penolakan saat OrderState.state "CANCELLED". Contoh: |
Contoh berikut menunjukkan elemen CancellationInfo
:
Contoh
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
Jenis ini memberi pengguna perkiraan interval saat pesanan akan dilakukan
diantarkan atau siap diambil. Kirim ekstensi ini di
OrderUpdate
kapan saja informasi tersedia atau telah berubah sejak terakhir dikirim.
Berikan estimasi konservatif untuk interval pemenuhan agar pengguna ekspektasi Anda terpenuhi secara konsisten. Misalnya, jika pesanan diperkirakan dikirim hari ini pada pukul 13.00, Anda harus mengirimkan perkiraan interval yang konsisten dengan variasi karena kondisi lalu lintas, seperti hari ini pukul 12.45 ke 13:15.
Durasi atau stempel waktu ISO 8601 ditafsirkan sebagai interval dari
updateTime
dari OrderUpdate
(intinya, "sekarang") ke
updateTime
plus duration
.
Jangan gunakan format ini kecuali "sekarang" sebenarnya adalah harapan
yang masuk akal.
Interval ISO 8601 ditafsirkan sebagai interval dari awal hingga akhir interval.
Tabel berikut mencantumkan properti untuk jenis FoodOrderUpdateExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Const |
Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Nilai: |
|
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: |
|
foodOrderErrors |
Daftar<FoodOrderError > |
Menjelaskan error yang terjadi setelah pemesanan. Direkomendasikan satu error 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 | Jenis | Deskripsi | |
---|---|---|---|
Hanya salah satu dari grup properti berikut yang wajib diisi. | |||
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 | Jenis | 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 | Jenis | 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 | Jenis | Deskripsi | |
---|---|---|---|
url |
String | Wajib. Tindakan yang dipicu dengan mengklik atau menyentuh tombol. Daftar awalan yang berlaku bergantung pada orderManagementActionType. "EMAIL": Awalan harus "mailto". "CALL": Awalan harus "tel". "CUSTOMER_SERVICE": Awalan harus "mailto", "tel", "http", atau "https". Contoh: |
OrderManagementAction
Pengelolaan pesanan memungkinkan pengguna untuk mendapatkan dukungan pasca-pemesanan dan harus dikirim
setiap OrderUpdate
dalam pesanan pengiriman
AppResponse
dan setiap entri berikutnya
AsyncOrderUpdateRequestMessage
Tindakan pengelolaan pesanan yang dikirim untuk pesanan tertentu dapat bervariasi berdasarkan
status.
Misalnya, dalam {i>CREATED<i} negara bagian, CUSTOMER_SERVICE
mungkin merujuk
telepon dukungan pelanggan. Kemudian, pada kolom "CONFIRMED" negara bagian, CUSTOMER_SERVICE
dapat diubah ke telepon restoran jika
itu menjadi titik terbaik
untuk pelanggan. Demikian pula, setelah pesanan berada di kolom "FULFILLED" negara bagian,
CUSTOMER_SERVICE
dapat merujuk ke alamat email dukungan Anda.
Tabel berikut mencantumkan properti untuk jenis OrderManagementAction
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
OrderManagementActionType |
Wajib. |
|
button |
Button |
Wajib. |
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 denganOrderManagementAction
.
Jenis OrderManagementActionType
memiliki kemungkinan nilai berikut:
CUSTOMER_SERVICE
: Email dan/atau nomor kontak layanan pelanggan yang akan ditampilkan di halaman konfirmasi pesanan. Tindakan ini wajib dilakukan. Awalan openUrlAction.url harus "mailto", "tel", "http", atau "https".EMAIL
: Tindakan melalui email hanya di halaman detail pesanan. Awalan openUrlAction.url harus "mailto".CALL_DRIVER
: Tindakan pesan ajakan hanya di halaman detail pesanan. Awalan openUrlAction.url harus "tel".CALL_RESTAURANT
: Tindakan pesan ajakan hanya di halaman detail pesanan. Awalan openUrlAction.url harus "tel".
OrderState
Status pesanan saat ini. Setiap nilai state
dari OrderState
juga
sesuai dengan status pembelian pada
myaccount.google.com.
Tabel berikut mencantumkan properti untuk jenis OrderState
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
state |
OrderStateEnum |
Wajib. |
|
label |
String | Wajib. String tampilan yang terlihat oleh pengguna untuk status. Gunakan kapitalisasi kalimat. Contoh: |
Contoh berikut menunjukkan elemen OrderState
:
Contoh
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
Menentukan jenis yang terkait denganOrderState
.
Jenis OrderStateEnum
memiliki kemungkinan nilai berikut:
CREATED
: Pesanan yang dibuat oleh integrator dan menunggu konfirmasi oleh penyedia. Sesuai dengan "Diurutkan" status pembelian Anda.CONFIRMED
: Pesanan dikonfirmasi oleh penyedia dan aktif. Sesuai dengan "Diterima" status pembelian Anda.REJECTED
: Pesanan ditolak oleh integrator atau penyedia. Sesuai dengan "Ditolak" status pembelian Anda.CANCELLED
: Pengguna membatalkan pesanan. Berhubungan dengan "Dibatalkan" status pembelian Anda.IN_PREPARATION
: Makanan sedang disiapkan. Sesuai dengan "Status tidak diketahui" status pembelian Anda.READY_FOR_PICKUP
: Makanan siap diambil. Sesuai dengan "Siap diambil" status pembelian Anda.IN_TRANSIT
: Pesanan sedang dikirim. Sesuai dengan "Dalam proses" status pembelian Anda.FULFILLED
: Pengguna menerima item yang dipesan. Sesuai dengan status "Diambil" status pembelian Anda.
Tanda Terima
Kirim jenis ini dalam pesanan kirimAppResponse
,
dengan OrderState
adalah "CONFIRMED", "FULFILLED", atau "IN_TRANSIT". Kirim tanda terima di
waktu saat userVisibleOrderId
tersedia. Anda tidak perlu menyimpan
mengirimkan tanda terima
dalam pembaruan berikutnya.
Tabel berikut mencantumkan properti untuk jenis Receipt
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
userVisibleOrderId |
String | Wajib. Wajib diisi jika pesanan "CONFIRMED", "IN_TRANSIT", atau "FULFILLED". Kolom ini adalah ID tunggal 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 pesanannya untuk layanan pelanggan dengan penyedia dan integrator. Anda hanya perlu memberikan ID ini satu kali dalam OrderUpdate tertentu. Hingga diberikan, actionOrderId adalah userVisibleOrderId. Misalnya, Anda mungkin tidak memiliki userVisibleOrderId sampai pesanan dikonfirmasi oleh restoran. Setelah dikonfirmasi, Anda harus mengirimkan AsyncOrderUpdateRequestMessage dengan OrderUpdate dan Tanda Terima. |
Contoh berikut menunjukkan elemen Receipt
:
Contoh
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
Tabel berikut mencantumkan properti untuk jenis RejectionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
RejectionType |
Wajib. |
|
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 terkait kebijakan atau risiko.PAYMENT_DECLINED
: Ada masalah dengan pemrosesan pembayaran.UNAVAILABLE_SLOT
: Pesanan tidak dapat dipenuhi pada waktu tunggu pesanan yang ditentukan oleh DeliveryInfo atau PengambilanInfo.PROMO_NOT_APPLICABLE
: Ada masalah dengan promosi.UNKNOWN
: Alasan lain.
Jenis terkait pembayaran
Bagian ini menjelaskan jenis terkait pembayaran yang digunakan untuk pemesanan makanan pemenuhan pesanan.ActionProvidedPaymentOptions
Persyaratan untuk metode pembayaran yang diberikan tindakan.
Tabel berikut mencantumkan properti untuk jenis ActionProvidedPaymentOptions
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
paymentType |
PaymentType |
Wajib. |
|
displayName |
String | Wajib. Nama instrumen pembayaran yang ditampilkan di tanda terima. Contoh: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
Data tambahan untuk paymentType "ON_FULFILLMENT". Misalnya, Anda dapat menggunakan kolom ini untuk menentukan apakah uang tunai atau kartu didukung saat pemenuhan pesanan. |
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 dengan 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 | Jenis | 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 | Jenis | Deskripsi | |
---|---|---|---|
allowedAuthMethods |
Daftar<Const> | Wajib. Kolom yang didukung untuk mengautentikasi transaksi kartu. Harus memiliki tidak kurang dari 1 item. |
|
allowedCardNetworks |
Daftar<AllowedCardNetworks > |
Wajib. Satu atau beberapa jaringan kartu yang Anda dukung dan juga didukung oleh Google Pay API. Harus memiliki tidak kurang dari 1 item. |
|
billingAddressRequired |
Boolean |
Tetapkan ke true jika Anda memerlukan alamat penagihan. Hanya minta alamat penagihan jika diperlukan untuk memproses transaksi. Permintaan data tambahan dapat memperlancar proses checkout dan menyebabkan rasio konversi yang lebih rendah. |
|
billingAddressParameters |
BillingAddressParameters |
Kolom yang diharapkan akan ditampilkan jika billingAddressRequired disetel ke benar (true). |
|
cvcRequired |
Boolean |
Tetapkan ke true jika menggunakan TimesofMoney, false 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 | Jenis | Deskripsi | |
---|---|---|---|
instrumentToken |
String | Wajib. String berenkode Base 64 yang berisi token pembayaran untuk menagih pengguna dengan pemroses Google Pay yang berpartisipasi, sesuai 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 | Jenis | 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 sebagai jenis pembayaran atau tidak. 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 | Jenis | Deskripsi | |
---|---|---|---|
merchantId |
String |
ID penjual Google yang diberikan kepada Anda oleh Google Pay. |
|
merchantName |
String | Wajib. Nama penjual yang 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 | Jenis | 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 | Jenis | Deskripsi | |
---|---|---|---|
gateway |
String | Wajib. Contoh: |
|
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 | Jenis | Deskripsi | |
---|---|---|---|
apiVersion |
Const | Wajib. Versi API utama. Nilai: |
|
apiVersionMinor |
Const | Wajib. Versi minor API. Nilai: |
|
merchantInfo |
MerchantInfo |
Wajib. (ID penjual Google Pay) Informasi tentang penjual yang meminta data pembayaran. |
|
allowedPaymentMethods |
Daftar<PaymentMethod > |
Wajib. Menentukan dukungan untuk satu atau beberapa metode pembayaran yang didukung oleh Google Pay API. |
|
transactionInfo |
TransactionInfo |
Wajib. Detail tentang otorisasi transaksi berdasarkan apakah pengguna menyetujui transaksi tersebut 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 | Jenis | Deskripsi | |
---|---|---|---|
displayName |
String | Wajib. Nama instrumen pembayaran yang terlihat oleh pengguna yang ditampilkan di tanda terima. |
|
paymentType |
PaymentType |
Wajib. |
|
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 | Jenis | Deskripsi | |
---|---|---|---|
type |
Const | Wajib. ID singkat untuk metode pembayaran yang didukung. Saat ini hanya CARD yang didukung. Nilai: |
|
parameters |
CardParameters |
Wajib. Parameter yang diperlukan untuk mengonfigurasi jenis metode pembayaran yang diberikan. |
|
tokenizationSpecification |
TokenizationSpecification |
Wajib. Konfigurasi penyedia akun atau dekripsi untuk menerima informasi pembayaran. Properti ini diperlukan untuk metode pembayaran CARD. |
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 | Jenis | Deskripsi | |
---|---|---|---|
Hanya salah satu dari grup properti berikut yang wajib diisi. | |||
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 "cash on delivery" atau "bayar saat pemenuhan pesanan". |
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 denganGoogleProvidedPaymentOptions
.
Jenis SupportedCardNetworks
memiliki kemungkinan nilai berikut:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
Menentukan jenis yang terkait denganGoogleProvidedPaymentOptions
.
Tabel berikut mencantumkan properti untuk jenis TokenizationParameters
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Wajib. 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 | Jenis | Deskripsi | |
---|---|---|---|
type |
Const | Wajib. |
|
parameters |
Parameters |
Wajib. |
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 mendeskripsikan transaksi yang menentukan kemampuan pembayar untuk membayar. Ini digunakan untuk menampilkan dialog otorisasi pembayaran.
Tabel berikut mencantumkan properti untuk jenis TransactionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
currencyCode |
String | Wajib. 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 ada saat Anda mengirim callback ke Google Transaction Events API. |
|
totalPriceStatus |
Const | Wajib. Gunakan "ESTIMATED" sebagai default. Harga total dapat disesuaikan berdasarkan detail respons, seperti pajak penjualan yang ditarik berdasarkan alamat penagihan. Nilai: |
|
totalPrice |
String | Wajib. Nilai uang total transaksi dengan presisi desimal opsional 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" }