Jenis Dasar
Keranjang
Berisi detail pesanan, serta apakah permintaan ditujukan untuk pengambilan atau pengiriman. Keranjang juga berisi detail pengiriman, persen, dan alamat pengiriman. ObjekCart
ditentukan di Checkout AppRequest
.f
Anda menyertakan salinan keranjang di Checkout AppResponse
Tabel berikut mencantumkan daftar properti untuk jenis Cart
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak |
Jenis objek ini. Hapus kolom ini jika objek Keranjang induk adalah bagian dari Proposal.Pesanan. Nilai: |
|
id |
String |
ID opsional keranjang. |
|
merchant |
Merchant |
Penjual yang berafiliasi dengan keranjang ini. |
|
lineItems |
Daftar<LineItem > |
Wajib diisi. Daftar barang atau layanan yang dipesan pengguna. Tidak boleh kurang dari 1 item. |
|
promotions |
Daftar<Promotion > |
Promosi yang diterapkan di keranjang ini. Hanya satu promosi yang saat ini didukung. |
|
notes |
String |
Catatan tentang pesanan atau petunjuk pengiriman. |
|
extension |
FoodCartExtension |
Menentukan detail tentang pengguna, seperti preferensi pemenuhan pesanan. |
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. Ini hanya tersedia diAppResponse
.
Tabel berikut mencantumkan daftar properti untuk jenis Contact
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
displayName |
String |
Nama orang yang menerima pesanan, seperti yang Anda inginkan untuk ditampilkan. Gunakan kolom ini jika firstName dan lastName tidak ditentukan. Contoh: |
|
email |
String |
Alamat email pengguna yang menerima pesanan. Contoh: |
|
firstName |
String |
Nama depan orang yang menerima pesanan. Contoh: |
|
lastName |
String |
Nama belakang orang yang menerima pesanan. Contoh: |
|
phoneNumber |
String |
Nomor telepon orang yang menerima pesanan, termasuk kode negara. Contoh: |
|
emailVerified |
Boolean |
Menunjukkan apakah orang yang menerima pesanan login dengan akun Google mereka. |
Contoh berikut menunjukkan elemen Contact
:
Contoh
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
Pesan berisi PushKhusus
BerisiOrderUpdate
untuk permintaan.
Tabel berikut mencantumkan daftar properti untuk jenis CustomPushMessage
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
orderUpdate |
OrderUpdate |
Wajib diisi. 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" } } }
Info Pengiriman
Tabel berikut mencantumkan daftar properti untuk jenis DeliveryInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
deliveryTimeIso8601 |
String |
Perkiraan waktu pengiriman, dalam format stempel waktu ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{fragment_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 secepat mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representasi. Gunakan informasi ini untuk memperbarui perkiraan waktu pengiriman saat respons checkout. Contoh: |
Contoh berikut menunjukkan elemen DeliveryInfo
:
Contoh
{ "deliveryTimeIso8601": "PT90M" }
Pernyataan Penyangkalan
Tabel berikut mencantumkan daftar properti untuk jenis Disclaimer
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
Wajib diisi. Untuk menampilkan pesan pernyataan penyangkalan yang telah ditetapkan sebelumnya saat checkout. |
|
feeAmount |
Money |
Partner akan menagih penjual dengan jumlah N sebesar untuk pesanan ini. |
|
feeAmountRange |
FeeAmountRange |
Partner akan mengenakan biaya sebesar N ke M pada restoran per pesanan. |
|
feePercent |
Number |
Partner akan menagih penjual dengan biaya N% untuk pesanan ini. |
|
feePercentRange |
FeePercentRange |
Partner akan menagih penjual dengan biaya 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 untuk bisnis pada waktu pemesanan.NO_CAPACITY
: Tidak ada kapasitas layanan yang tersedia (misalnya, pemadaman sementara karena waktu sibuk).NO_COURIER_AVAILABLE
: Tidak dapat memproses pesanan karena keterbatasan jumlah personel.REQUIREMENTS_NOT_MET
: Batasan untuk menerima pesanan belum terpenuhi (misalnya, ukuran keranjang minimum).UNAVAILABLE_SLOT
: Pesanan tidak dapat dipenuhi pada pesanan di muka yang ditentukan oleh DeliveryInfo atau PickupInfo.OUT_OF_SERVICE_AREA
: Pesanan tidak dapat dikirim ke alamat pengguna.PROMO_EXPIRED
: Tidak dapat diterapkan karena promosi telah kedaluwarsa.PROMO_NOT_APPLICABLE
: Kode error umum untuk menangkap semua kasus kegagalan dalam menerapkan kode promo, jika tidak ada error kode promo yang cocok.PROMO_NOT_RECOGNIZED
: Kode kupon tidak dikenal.PROMO_ORDER_INELIGIBLE
: Pesanan saat ini tidak memenuhi syarat untuk kupon ini.PROMO_USER_INELIGIBLE
: Pengguna saat ini tidak memenuhi syarat untuk kupon ini.AVAILABILITY_CHANGED
: Item tidak lagi tersedia atau item tidak cukup untuk memenuhi permintaan.INCORRECT_PRICE
: Biaya atau total error harga.INVALID
: LineItem, FulfillmentOption, atau Promotion berisi data yang tidak valid.NOT_FOUND
: LineItem, FulfillmentOption, atau Promotion tidak dapat ditemukan.PRICE_CHANGED
: Harga item telah berubah.
RentangBiaya
Tabel berikut mencantumkan daftar properti untuk jenis FeeAmountRange
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
minFeeAmount |
Money |
Batas bawah jumlah biaya yang ditagih. |
|
maxFeeAmount |
Money |
Batas atas jumlah biaya yang ditagih. |
RentangPersentaseBiaya
Tabel berikut mencantumkan daftar properti untuk jenis FeePercentRange
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
minFeePercent |
Number |
Batas bawah persentase biaya yang ditagih. |
|
maxFeePercent |
Number |
Batas atas persentase biaya yang ditagih. |
EkstensiKeranjangMakanan
Berisi detail tentang pengguna, seperti preferensi pemenuhan pesanan.
Tabel berikut mencantumkan daftar properti untuk jenis FoodCartExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak |
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 mencakup nama, nomor telepon, dan alamat email orang tersebut. |
|
fulfillmentPreference |
FulfillmentOption |
Wajib diisi. Preferensi pemenuhan pesanan pengguna. |
|
location |
Location |
Di CheckoutRequestMessage, kolom ini menentukan alamat pengiriman, yang diperlukan jika pesanan ditujukan untuk pengiriman. Untuk pesanan untuk pesanan bawa pulang atau ambil, 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" } }
Ekstensi FoodError
Mengidentifikasi satu atau beberapa error yang terjadi saat memproses permintaan. Tabel berikut menjelaskan kolom jenisFoodErrorExtension
.
Error dapat dikirim di CheckoutResponse
.
Tabel berikut mencantumkan daftar properti untuk jenis FoodErrorExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak | Wajib diisi. Jenis ekstensi ini. Nilai: |
|
foodOrderErrors |
Daftar<FoodOrderError > |
Wajib diisi. Array objek FoodOrderError yang mendeskripsikan error yang terjadi. Disarankan satu error per keranjang atau per item. Tidak boleh kurang dari 1 item. |
|
correctedProposedOrder |
ProposedOrder |
Wajib jika
Proposal baru yang diajukan dengan koreksi. Tampilkan objek ini jika ada error yang dapat dipulihkan di ProposaldOrder asli. Misalnya, perubahan harga pada satu atau beberapa item baris di keranjang merupakan error yang dapat dipulihkan. Error yang dapat dipulihkan dengan Proposal Order valid dapat melanjutkan ke tahap konfirmasi, bukan mengharuskan pengguna meninjau keranjang. |
|
paymentOptions |
PaymentOptions |
Wajib jika
Opsi pembayaran default dipilih untuk pengguna. |
|
additionalPaymentOptions |
Daftar<PaymentOptions > |
Opsi pembayaran alternatif yang tersedia untuk 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 } } }
EkstensiItemItem
Menentukan add-on untuk item makanan.
Tabel berikut mencantumkan daftar properti untuk jenis FoodItemExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak | Wajib diisi. 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 } ] } ] }
OpsiItemMakanan
Tabel berikut mencantumkan daftar properti untuk jenis FoodItemOption
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String |
ID unik yang ditetapkan oleh Google. Saat Anda mengirimkan 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 yang terkait dengan 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 } ] }
KesalahanPemesanan Makanan
Berisi detail tentang error dalamCheckoutResponse
.
Tabel berikut mencantumkan daftar properti untuk jenis FoodOrderError
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
error |
Error |
Wajib diisi. |
|
id |
String | Wajib jika
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 jika
Harga baru item yang menyebabkan error. Hal ini hanya diperlukan jika kesalahan adalah "PRICE_MODIFIED". |
|
availableQuantity |
Integer | Wajib jika
Jumlah baru yang tersedia dari item yang menyebabkan error. Hal ini hanya diperlukan jika error adalah "INVALID" atau "NOT_FOUND". Nilainya harus nol untuk "INVALID" dan "NOT_FOUND". |
Contoh berikut menunjukkan elemen FoodOrderError
:
Contoh 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
Contoh 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
EkstensiPesananMakanan
Berisi info pemenuhan pesanan.
Tabel berikut mencantumkan daftar properti untuk jenis FoodOrderExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak |
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 adalah true, Anda dapat membuat pengguna berlangganan. Jika optinForMarketing salah atau tidak ada, Anda harus mempertahankan status langganan di sistem apa adanya. Pengguna tidak dapat memilih untuk tidak ikut melalui Google, hanya melalui fungsi berhenti berlangganan yang disediakan di saluran pemasaran Anda. Tanda ini hanya ada di SubmitOrderRequestMessage. |
Contoh berikut menunjukkan elemen FoodOrderExtension
:
Contoh 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
Contoh 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
Anda dapat menggunakan 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. -
Di
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
yang ditentukan dalamProposedOrder.otherItems
.
Tabel berikut mencantumkan daftar properti untuk jenis FulfillmentOption
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
offerId |
String |
ID unik untuk opsi pemenuhan ini, jika ada. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
Wajib diisi. |
|
expiresAt |
Stempel Waktu ISO |
Waktu berakhirnya opsi pemenuhan ini. |
|
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 daftar properti untuk jenis FulfillmentOptionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Tepat salah satu dari grup properti berikut ini wajib diisi. | |||
delivery |
Grup 1 | DeliveryInfo |
Jika ada, menunjukkan pesanan pengiriman. |
pickup |
Grup 2 | PickupInfo |
Jika ada, mengindikasikan pesanan ambil sendiri. |
Image
Tabel berikut mencantumkan daftar properti untuk jenis Image
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
sourceUrl |
String | Wajib diisi. URL untuk gambar. Minimal gambar harus berukuran 72x72 piksel. Untuk mendapatkan hasil terbaik, gunakan gambar yang berukuran minimal 216x216 piksel. Gambar harus kurang dari 6 MB dan 64 megapiksel. |
LineItem
Menentukan isi keranjang (Cart.lineItems
) atau biaya tambahan untuk pesanan (ProposedOrder.otherItems
).
Tabel berikut mencantumkan daftar properti untuk jenis LineItem
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String | Wajib jika
Untuk LineItem di Keranjang (ProposaldOrder.cart.lineItems[0].id), ini adalah ID unik yang dibuat oleh Google saat membuat pesanan. Untuk LineItem di ProposaldOrder (ProposaldOrder.otherItems[0].id), yang digunakan untuk menambah item seperti biaya pengiriman dan pajak, nilai id ditentukan oleh penyedia. Misalnya, dalam keranjang terdapat dua item yang sama dengan petunjuk persiapan yang berbeda (seperti dua pizza sedang dengan berbagai topping yang berbeda). Dalam hal ini, kedua item tersebut memiliki ID penawaran 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 membantu Google menentukan item mana dalam pesanan yang Anda maksud. Kolom ini wajib diisi kecuali di otherItems. |
|
name |
String | Wajib diisi. Nama item baris. Ini adalah string yang terlihat oleh pengguna, dan harus merupakan kasus kalimat jika memungkinkan (seperti "Biaya pengiriman", "Biaya layanan", "Pajak"). Kolom ini terpotong dengan 100 karakter untuk pengguna. |
|
type |
LineItemType |
Wajib diisi. |
|
quantity |
Integer | Wajib jika
Jumlah item yang disertakan. Tidak berlaku untuk ProposaldOrder.otherItems. |
|
description |
String |
Deskripsi item. |
|
price |
Price |
Wajib diisi. Harga item. Nilai ini mencerminkan total harga semua barang atau layanan untuk item baris ini (dengan kata lain, menambahkan biaya add-on dan mengalikannya dengan kuantitas). Misalnya: Jika item seharga Rp100.000 memiliki kuantitas 3, harganya akan menjadi Rp300.000. Untuk satu pizza dengan harga dasar sebesar $5 dan add-on sebesar $1, harganya akan menjadi $6. Untuk dua pizza (jumlah = 2) dengan harga dasar $5 dan masing-masing dengan add-on $1, harganya adalah $12. Setiap LineItem harus memiliki harga, meskipun harganya "0". Jika jenisnya adalah DISCOUNT, tentukan nilai sebagai negatif (misalnya, "-2"). |
|
subLines |
Daftar<SublineNote > |
Opsional dan hanya valid jika jenisnya adalah "REGULAR". Catatan khusus item dari pengguna mungkin dikirim ke kolom ini dalam permintaan checkout dan permintaan pengiriman pesanan. Pastikan bahwa penjual menerima catatan saat memberikannya. Kolom ini akan berada 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 jika
ID penawaran MenuItem untuk item. Tidak berlaku untuk ProposaldOrder.otherItems. |
|
extension |
FoodItemExtension |
Menentukan add-on untuk item makanan. |
Contoh berikut menunjukkan elemen LineItem
:
Contoh 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
Contoh 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
JenisItemItem
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 sembarangan. Umumnya dicadangkan untuk SubmitOrderRequestMessage untuk tip 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 oleh jenis lainnya. Berlaku untuk ProposaldOrder.otherItems.
Location
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, lokasi tidak disertakan sama sekali (bahkan yang kosong).
Tabel berikut mencantumkan daftar 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. Deskripsi harus terdiri dari 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 daftar properti untuk jenis Merchant
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String |
ID penjual. Jika ditentukan, kecocokan dengan Restaurant.@id di feed Restoran. Contoh: |
|
name |
String | Wajib diisi. 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 daftar properti untuk jenis Money
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
currencyCode |
String | Wajib diisi. Kode mata uang 3 huruf dalam format ISO 4217. Contoh: |
|
units |
String |
Seluruh unit jumlahnya. Misalnya, jika currencyCode adalah "USD", "1" unit adalah satu dolar AS. Contoh: |
|
nanos |
Integer |
Jumlah unit nano (10^-9) dari jumlah tersebut. Nilai harus di antara -999,999,999 dan +999,999,999, inklusif. Gunakan aturan berikut: Jika unit positif, nano harus positif atau nol. Jika unit adalah nol, nano bisa positif, nol, atau negatif. Jika unit negatif, nano harus negatif atau nol. Misalnya $-1,75 direpresentasikan sebagai unit = -1 dan nanos = -750,000,000. Contoh: |
Contoh berikut menunjukkan elemen Money
:
Contoh 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
Contoh 2
{ "currencyCode": "EUR", "units": "10" }
Susunan
Berisi pesanan akhir, termasuk pajak, biaya, dan ongkos kirim, serta informasi pembayaran. Objek ini diterima oleh tindakan Anda diSubmit AppRequest
.
Tabel berikut mencantumkan daftar properti untuk jenis Order
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
finalOrder |
ProposedOrder |
Wajib diisi. Pesanan yang diusulkan yang menyebabkan pesanan. |
|
googleOrderId |
String | Wajib diisi. ID pesanan yang ditetapkan oleh Google. ID ini harus stabil selama siklus proses pesanan. ID ini tidak terlihat oleh pengguna akhir. |
|
orderDate |
Stempel Waktu ISO | Wajib diisi. Tanggal dan waktu pesanan dibuat. |
|
paymentInfo |
PaymentInfo |
Wajib diisi. Informasi pembayaran terkait 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" } }
Pembaruan Pesanan
Tabel berikut menjelaskan kolom jenis OrderUpdate yang disertakan dalamAppResponse
.
Tabel berikut mencantumkan daftar properti untuk jenis OrderUpdate
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
actionOrderId |
String | Wajib diisi. ID unik pesanan dalam sistem integrator yang digunakan untuk mengidentifikasi urutan pengiriman update. Jika tanda terima.user_visible_order_id tidak diberikan setidaknya sekali dalam OrderUpdate untuk pesanan "CREATED", ID ini akan menjadi ID terlihat pengguna yang dimasukkan yang ditampilkan di kartu pesanan Google. |
|
orderState |
OrderState |
Wajib diisi. Status pesanan baru. |
|
lineItemUpdates |
Map<String, LineItemUpdate >
|
||
updateTime |
Stempel Waktu ISO | Wajib diisi. Waktu pesanan diperbarui. |
|
orderManagementActions |
Daftar<OrderManagementAction > |
Tindakan pasca-pemesanan seperti menghubungi dukungan dan melihat detail pesanan. Tidak boleh kurang dari 1 item dan tidak lebih dari 6 item. |
|
rejectionInfo |
RejectionInfo |
Wajib jika
|
|
cancellationInfo |
CancellationInfo |
Wajib jika
|
|
inTransitInfo |
InTransitInfo |
Kolom ini tidak digunakan lagi. |
|
fulfillmentInfo |
FulfillmentInfo |
Kolom ini tidak digunakan lagi. |
|
receipt |
Receipt |
Wajib jika
Berikan ID pesanan yang terlihat oleh pengguna dalam tanda terima. |
|
totalPrice |
Price |
Harga total pesanan. |
|
infoExtension |
FoodOrderUpdateExtension |
Menentukan detail pembaruan pesanan selengkapnya, seperti interval untuk perkiraan waktu 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" } }
Info Pengambilan
Tabel berikut mencantumkan daftar properti untuk jenis PickupInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
pickupTimeIso8601 |
String |
Perkiraan waktu pengambilan, dalam format stempel waktu ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{fragment_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 secepat mungkin. Referensi: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representasi. Gunakan metode ini untuk memperbarui perkiraan waktu pengambilan selama respons checkout. Contoh: |
Contoh berikut menunjukkan elemen PickupInfo
:
Contoh
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
Tabel berikut mencantumkan daftar properti untuk jenis PostalAddress
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
regionCode |
String | Wajib diisi. Kode negara dua huruf. Contoh: |
|
postalCode |
String |
Kode pos. Contoh: |
|
administrativeArea |
String |
Subdivisi administrasi tertinggi yang digunakan untuk alamat pos negara atau wilayah. Dapat berupa negara bagian, provinsi, oblast, atau prefektur. Contoh: |
|
locality |
String |
Kota untuk lokasi ini. Di wilayah dunia dengan lokalitas yang tidak didefinisikan dengan baik atau tidak cocok dengan struktur ini, jangan tentukan lokalitas dan gunakan kolom addressLines sebagai gantinya. Contoh: |
|
addressLines |
Daftar<String> |
Satu atau beberapa baris yang dapat digunakan untuk menentukan 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 daftar properti untuk jenis Price
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
Wajib diisi. Kode kupon promosi. |
|
amount |
Money |
Wajib diisi. |
Promosi
Tabel berikut mencantumkan daftar properti untuk jenis Promotion
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
coupon |
String | Wajib diisi. Kode kupon promosi. |
Pesanan yang Diusulkan
Tabel berikut mencantumkan daftar properti untuk jenis ProposedOrder
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
id |
String |
ID opsional untuk pesanan yang diusulkan. |
|
cart |
Cart |
Wajib diisi. 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 diisi. Harga total dari pesanan yang diusulkan. |
|
extension |
FoodOrderExtension |
Wajib diisi. Menentukan informasi pemenuhan 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" } ] } }
CatatanSubbaris
Tabel berikut mencantumkan daftar properti untuk jenis SublineNote
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
note |
String | Wajib diisi. |
Stempel waktu
Tanggal dan waktu, dalam format berikut:
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
BerisiOrder
.
Tabel berikut mencantumkan daftar properti untuk jenis TransactionDecisionValue
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
order |
Order |
Wajib diisi. Pesanan 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
PermintaanAplikasi
Tabel berikut mencantumkan daftar properti untuk jenis AppRequest
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
isInSandbox |
Boolean |
Menunjukkan apakah transaksi berikutnya dilakukan di lingkungan sandbox. |
|
conversation |
Conversation |
||
inputs |
Daftar<Input > |
Wajib diisi. Berisi argumen yang diharapkan untuk memeriksa keranjang. Harus tepat 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
.
KirimPesananRequestMessage
SubmitOrderRequestMessage
adalah AppRequest
dengan intent actions.foodordering.intent.TRANSACTION_DECISION
.
Percakapan
Conversation
bersifat unik untuk satu sesi saja. Anda dapat menggunakannya untuk menautkan beberapa
Tindakan Checkout
dan SubmitOrder
secara bersamaan jika diperlukan.
Tabel berikut mencantumkan daftar properti untuk jenis Conversation
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
conversationId |
String | Wajib diisi. ID unik untuk percakapan. |
Contoh berikut menunjukkan elemen Conversation
:
Contoh
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
Input
Argumen yang diharapkan untuk memeriksa keranjang.
Tabel berikut mencantumkan daftar properti untuk jenis Input
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
Wajib diisi. Tetapkan ke "actions.foodordering.intent.Checkout" untuk pesan permintaan checkout ATAU "actions.intent.TRANSACTION_DECISION" untuk mengirimkan pesan permintaan pesanan. |
|
arguments |
Daftar<Argument > |
Wajib diisi. Berisi Keranjang yang akan di proses checkout atau pesanan yang akan dilakukan Harus tepat memiliki 1 item. |
Argumen
Berisi detail tentang item makanan yang ingin dilihat pengguna. Untuk checkout, hanya ekstensi yang berlaku. Untuk pengiriman pesanan, hanya transactionDecisionValue yang berlaku
Tabel berikut mencantumkan daftar properti untuk jenis Argument
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Tepat salah satu dari grup properti berikut ini wajib diisi. | |||
extension |
Grup 1 | Cart |
Detail item makanan yang ingin dilihat pengguna. |
transactionDecisionValue |
Grup 2 | TransactionDecisionValue |
Berisi pesanan yang akan dilakukan beserta detail pembayaran. |
Respons Pemenuhan
ResponsAplikasi
Tabel berikut mencantumkan daftar properti untuk jenis AppResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
expectUserResponse |
Kontrak |
Setel ke salah. Nilai: |
|
finalResponse |
FinalResponse |
Wajib diisi. Berisi respons Anda untuk 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 } } } } } ] } } }
PesanResponsRespons
CheckoutResponseMessage
adalah AppResponse
dengan checkoutResponse
atau error
di StructuredResponse
.
KirimPesananResponseMessage
SubmitOrderResponseMessage
adalah AppResponse
dengan orderUpdate
di StructuredResponse
.
FinalRespons
Respons Anda terhadap checkout keranjang atau SubmitOrderRequestMessage.
Tabel berikut mencantumkan daftar properti untuk jenis FinalResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
richResponse |
RichResponse |
Wajib diisi. Berisi respons Anda terhadap CheckoutRequestMessage atau SubmitOrderRequestMessage. |
CheckoutRespons
Tabel berikut mencantumkan daftar properti untuk jenis CheckoutResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
proposedOrder |
ProposedOrder |
Wajib diisi. Mengajukan pesanan agar digunakan untuk transaksi. |
|
paymentOptions |
PaymentOptions |
Wajib diisi. Opsi pembayaran default dipilih untuk pengguna. |
|
additionalPaymentOptions |
Daftar<PaymentOptions > |
Opsi pembayaran alternatif yang tersedia untuk 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 untuk checkout keranjang atau SubmitOrderRequestMessage.
Tabel berikut mencantumkan daftar properti untuk jenis Item
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
structuredResponse |
StructuredResponse |
Wajib diisi. |
Respons kaya
Berisi respons Anda untuk checkout keranjang.
Tabel berikut mencantumkan daftar properti untuk jenis RichResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
items |
Daftar<Item > |
Wajib diisi. Harus tepat memiliki 1 item. |
Respons Terstruktur
Untuk CheckoutResponseMessage, ini dapat berupa salah satu dari berikut: CheckoutResponse Menunjukkan checkout yang berhasil. OR FoodErrorExtension: Menunjukkan kegagalan saat checkout. Responsnya dapat mencakup RFP yang diusulkan dan PaymentOptions atau pesan error tanpa PaymentOptions. Untuk SubmitOrderResponseMessage, hanya orderUpdate yang berlaku.
Tabel berikut mencantumkan daftar properti untuk jenis StructuredResponse
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Tepat salah satu dari grup properti berikut ini wajib diisi. | |||
checkoutResponse |
Grup 1 | CheckoutResponse |
Item yang diperiksa serta pajak dan diskon. |
error |
Grup 2 | FoodErrorExtension |
Terjadi error pada item keranjang. Bergantung pada sifat errornya, properti ini dapat menyertakan ProposaldOrder dan PaymentOptions yang telah diperbaiki, atau hanya pesan error tanpa PaymentOptions. |
orderUpdate |
Grup 3 | OrderUpdate |
Pembaruan urutan asinkron
Bagian ini menjelaskan jenis tingkat tinggi yang membentuk permintaan dan respons interaksi makanan standar yang memesan makanan standar.AsyncOrderUpdateRequestMessage
Memberi tahu pengguna tentang perubahan, setelah pesanan dikirim dan dikonfirmasi. Misalnya, Anda dapat memberi tahu pengguna bahwa pesanan dalam pengiriman atau jika harga telah berubah. Untuk informasi selengkapnya, lihatTabel berikut mencantumkan daftar properti untuk jenis AsyncOrderUpdateRequestMessage
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
isInSandbox |
Boolean |
Menunjukkan bahwa urutan pengiriman pembaruan ini adalah pembayaran sandbox. |
|
customPushMessage |
CustomPushMessage |
Wajib diisi. Berisi OrderUpdate untuk permintaan. |
Contoh berikut menunjukkan elemen AsyncOrderUpdateRequestMessage
:
Contoh
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
Setelah Anda berhasil mengirimAsyncOrderUpdateRequestMessage
, Google akan merespons dengan status HTTP 200 dan isi kosong. Jika pembaruan tidak berhasil,
Google akan merespons dengan detail tentang mengapa update pesanan gagal.
Jenis pembaruan pesanan
Tombol
Menentukan elemen antarmuka pengguna yang dapat Anda tambahkan untuk memberikan interaksi pengguna.
Tabel berikut mencantumkan daftar properti untuk jenis Button
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
title |
String | Wajib diisi. Label tampilan. Gunakan kapitalisasi kalimat dengan 30 karakter atau kurang untuk memastikan rendering yang tepat. Contoh: |
|
openUrlAction |
OpenUrlAction |
Wajib diisi. |
Contoh berikut menunjukkan elemen Button
:
Contoh
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
Info Pembatalan
Tabel berikut mencantumkan daftar properti untuk jenis CancellationInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
reason |
String | Wajib diisi. Alasan teks yang dapat ditampilkan untuk penolakan saat OrderState.state "CANCELLED". Contoh: |
Contoh berikut menunjukkan elemen CancellationInfo
:
Contoh
{ "reason": "Insufficient inventory" }
EkstensiInfoPesananMakanan
Jenis ini memberi pengguna perkiraan interval waktu pengiriman pesanan atau siap diambil. Kirim ekstensi ini di
OrderUpdate
setiap kali informasi tersedia atau telah berubah sejak terakhir kali dikirim.
Berikan perkiraan konservatif untuk interval pemenuhan sehingga ekspektasi pengguna terpenuhi secara konsisten. Misalnya, jika pesanan diperkirakan akan dikirim hari ini pukul 13.00, Anda harus mengirim perkiraan interval yang konsisten dengan variasi karena kondisi traffic, seperti hari ini pukul 12.45 hingga 13.15.
Durasi atau stempel waktu ISO 8601 ditafsirkan sebagai interval dari
updateTime
OrderUpdate
(pada dasarnya, "sekarang") hingga
updateTime
plus duration
.
Jangan gunakan format ini kecuali "sekarang" sebenarnya merupakan ekspektasi yang wajar.
Interval ISO 8601 ditafsirkan sebagai interval dari awal hingga akhir interval.
Tabel berikut mencantumkan daftar properti untuk jenis FoodOrderUpdateExtension
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
@type |
Kontrak |
Jenis ekstensi ini. Kolom ini selalu ditetapkan ke "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". Nilai: |
|
estimatedFulfillmentTimeIso8601 |
String |
Perkiraan waktu pengiriman pesanan atau siap diambil. String harus dalam format ISO 8601 dan harus sesuai dengan interval, bukan satu waktu tetap. 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 kedatangan yang tertunda. Contoh: |
|
foodOrderErrors |
Daftar<FoodOrderError > |
Menjelaskan error yang terjadi setelah pemesanan. Disarankan satu error per keranjang atau per item. Gunakan FoodOrderUpdateExtension.FoodOrderErrors untuk setiap error yang tidak tercakup oleh TolakionInfo. Tidak boleh 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." } ] }
Info Pemenuhan
Tabel berikut mencantumkan daftar properti untuk jenis FulfillmentInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Tepat salah satu dari grup properti berikut ini wajib diisi. | |||
deliveryTime |
Grup 1 | Stempel Waktu ISO |
Menggunakan perkiraanFulfillmentTimeIso8601 di pesan FoodOrderingUpdateExtension |
pickupTime |
Grup 2 | Stempel Waktu ISO |
Menggunakan perkiraanFulfillmentTimeIso8601 di 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" }
InfoInTransit
Tabel berikut mencantumkan daftar properti untuk jenis InTransitInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
updatedTime |
Stempel Waktu ISO |
Menggunakan perkiraanFulfillmentTimeIso8601 di pesan FoodOrderingUpdateExtension |
Contoh berikut menunjukkan elemen InTransitInfo
:
Contoh
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
UpdateItemItem
Tabel berikut mencantumkan daftar 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 daftar properti untuk jenis OpenUrlAction
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
url |
String | Wajib diisi. 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 setelah pemesanan dan harus dikirim di setiap OrderUpdate
dalam pesanan yang dikirim AppResponse
dan setiap tindakan AsyncOrderUpdateRequestMessage
berikutnya yang dikirim untuk pesanan tertentu dapat bervariasi berdasarkan status.
Misalnya, dalam status "CREATED" CUSTOMER_SERVICE
, mungkin akan merujuk
telepon dukungan pelanggan Anda. Kemudian, di status "KONFIRMASI", CUSTOMER_SERVICE
dapat berganti ke telepon restoran jika itu menjadi kontak
terbaik bagi pelanggan. Demikian pula, setelah pesanan berada dalam status "FULFILLED"
CUSTOMER_SERVICE
dapat merujuk alamat email dukungan Anda.
Tabel berikut mencantumkan daftar properti untuk jenis OrderManagementAction
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
OrderManagementActionType |
Wajib diisi. |
|
button |
Button |
Wajib diisi. |
Contoh berikut menunjukkan elemen OrderManagementAction
:
Contoh 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
Contoh 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
JenisPengelolaanPesanan
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. Hal ini diperlukan. Awalan openUrlAction.url harus "mailto", "tel", "http", atau "https".EMAIL
: Tindakan email hanya pada halaman detail pesanan. Awalan openUrlAction.url harus "mailto".CALL_DRIVER
: Tindakan panggilan hanya di halaman detail pesanan. Awalan openUrlAction.url harus "tel".CALL_RESTAURANT
: Tindakan panggilan hanya di halaman detail pesanan. Awalan openUrlAction.url harus "tel".
StatusPesanan
Status pesanan saat ini. Setiap nilai state
dari OrderState
juga
sesuai dengan status pembelian di
myaccount.google.com.
Tabel berikut mencantumkan daftar properti untuk jenis OrderState
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
state |
OrderStateEnum |
Wajib diisi. |
|
label |
String | Wajib diisi. 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 dibuat oleh integrator dan menunggu konfirmasi oleh penyedia. Sesuai dengan status pembelian "Dipesan".CONFIRMED
: Pesanan dikonfirmasi oleh penyedia dan aktif. Sesuai dengan status pembelian "Disetujui".REJECTED
: Pesanan ditolak oleh integrator atau penyedia. Sesuai dengan status pembelian "Ditolak".CANCELLED
: Pengguna membatalkan pesanan. Sesuai dengan status pembelian "Dibatalkan".IN_PREPARATION
: Makanan sedang disiapkan. Sesuai dengan "Status tidak diketahui" status pembelian.READY_FOR_PICKUP
: Makanan siap diambil. Sesuai dengan status "Siap untuk diambil".IN_TRANSIT
: Pesanan sedang dikirim. Sesuai dengan "Dalam proses" status pembelian.FULFILLED
: Pengguna menerima pesanan. Sesuai dengan status pembelian "Diambil".
Tanda Terima
Kirim jenis ini dalam pesanan pengirimanAppResponse
,
dengan OrderState
adalah "CONFIRMED", "FULFILLED", atau "IN_Transport". Kirim tanda terima pada saat userVisibleOrderId
tersedia. Anda tidak perlu terus
mengirimkan tanda terima di update berikutnya.
Tabel berikut mencantumkan daftar properti untuk jenis Receipt
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
userVisibleOrderId |
String | Wajib diisi. Diperlukan jika pesanan "KONFIRMASI", "IN_Transit", atau "FULFILLED". Kolom ini adalah satu ID yang ditampilkan kepada pengguna untuk pesanan ini (biasanya ID pesanan restoran), yang ditampilkan di tanda terima integrator dan kartu pesanan Google. Pengguna harus dapat menggunakan ID ini guna merujuk pesanan mereka untuk layanan pelanggan dengan penyedia dan integrator. Anda hanya perlu memberikan ID ini satu kali di OrderUpdate tertentu. Hingga disediakan, actionOrderId adalah userVisibleOrderId. Misalnya, Anda mungkin tidak memiliki userVisibleOrderId hingga pesanan dikonfirmasi oleh restoran. Setelah dikonfirmasi, Anda harus mengirim AsyncOrderUpdateRequestMessage dengan OrderUpdate dan Receipt. |
Contoh berikut menunjukkan elemen Receipt
:
Contoh
{ "userVisibleOrderId": "userVisibleId1234" }
Info Penolakan
Tabel berikut mencantumkan daftar properti untuk jenis RejectionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
RejectionType |
Wajib diisi. |
|
reason |
String |
Alasan penolakan digunakan untuk logging internal. Kolom ini tidak dapat dilihat oleh pengguna. |
Contoh berikut menunjukkan elemen RejectionInfo
:
Contoh
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
Jenis Penolakan
Jenis RejectionType
memiliki kemungkinan nilai berikut:
INELIGIBLE
: Pengguna tidak memenuhi syarat karena kebijakan atau masalah terkait risiko.PAYMENT_DECLINED
: Ada masalah dengan pemrosesan pembayaran.UNAVAILABLE_SLOT
: Pesanan tidak dapat dipenuhi pada pesanan di muka yang ditentukan oleh DeliveryInfo atau PickupInfo.PROMO_NOT_APPLICABLE
: Ada masalah dengan promosi.UNKNOWN
: Alasan lainnya.
Jenis terkait pembayaran
Bagian ini menjelaskan jenis terkait pembayaran yang digunakan untuk pemenuhan pesanan makanan.ActionProvidedPaymentOptions
Persyaratan untuk metode pembayaran yang disediakan tindakan.
Tabel berikut mencantumkan daftar properti untuk jenis ActionProvidedPaymentOptions
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
paymentType |
PaymentType |
Wajib diisi. |
|
displayName |
String | Wajib diisi. Nama instrumen pembayaran yang ditampilkan pada 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" ] } }
Metode AuthAuth yang Diizinkan
Jenis AllowedAuthMethods
memiliki kemungkinan nilai berikut:
PAN_ONLY
: Metode autentikasi yang terkait dengan kartu pembayaran yang tersimpan di file terkait Akun Google pengguna. Data pembayaran yang dikembalikan termasuk nomor rekening pribadi (PAN) beserta bulan habis masa berlaku dan tahun habis masa berlakunya.
JaringanKartu yang Diizinkan
Jenis AllowedCardNetworks
memiliki kemungkinan nilai berikut:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
ParameterKartu
Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.
Tabel berikut mencantumkan daftar properti untuk jenis CardParameters
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
allowedAuthMethods |
Daftar<Kontrak> | Wajib diisi. Kolom yang didukung untuk mengautentikasi transaksi kartu. Tidak boleh kurang dari 1 item. |
|
allowedCardNetworks |
Daftar<AllowedCardNetworks > |
Wajib diisi. Satu atau beberapa jaringan kartu yang Anda dukung yang juga didukung oleh Google Pay API. Tidak boleh 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 meningkatkan hambatan dalam proses checkout dan menyebabkan rasio konversi yang lebih rendah. |
|
cvcRequired |
Boolean |
Tetapkan ke true jika menggunakan TimesofMoney, false untuk semua pemroses pembayaran lainnya. |
Contoh berikut menunjukkan elemen CardParameters
:
Contoh
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
GoogleProvidedPaymentInstrument (Instrumen Pembayaran yang Diberikan Google)
Tabel berikut mencantumkan daftar properti untuk jenis GoogleProvidedPaymentInstrument
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
instrumentToken |
String | Wajib diisi. String berenkode base 64 yang berisi token pembayaran untuk menagih pengguna dengan pemroses Google Pay yang berpartisipasi, sesuai dengan GoogleProvidedPaymentOptions yang ditentukan sebelumnya. |
|
billingAddress |
PostalAddress |
Alamat penagihan untuk pembayaran. |
Contoh berikut menunjukkan elemen GoogleProvidedPaymentInstrument
:
Contoh
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Persyaratan untuk metode pembayaran yang disediakan Google.
Tabel berikut mencantumkan daftar 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 > |
Gunakan fasilitasiSpesifikasi. Jenis jaringan kartu yang didukung oleh agen. Kolom ini tidak digunakan lagi. |
|
prepaidCardDisallowed |
Boolean |
Gunakan fasilitasiSpesifikasi. Apakah kartu prabayar diizinkan atau tidak sebagai jenis pembayaran. Kolom ini tidak digunakan lagi. |
|
billingAddressRequired |
Boolean |
Gunakan fasilitasiSpesifikasi. Apakah alamat penagihan wajib diisi 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 }
Info Penjual
Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.
Tabel berikut mencantumkan daftar properti untuk jenis MerchantInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
merchantId |
String |
ID penjual Google yang diberikan Google Pay kepada Anda. |
|
merchantName |
String | Wajib diisi. Nama penjual yang dienkode sebagai UTF-8. Nama penjual dirender di sheet pembayaran. |
OnFulfillmentPaymentData
Gunakan objek ini untuk mengirimkan data tambahan untuk PaymentType "ON_FULFILLMENT".
Tabel berikut mencantumkan daftar 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 daftar properti untuk jenis Parameters
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
gateway |
String | Wajib diisi. Contoh: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | Key-value pair 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" }
PermintaanDataData
Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.
Tabel berikut mencantumkan daftar properti untuk jenis PaymentDataRequest
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
apiVersion |
Kontrak | Wajib diisi. Versi API utama. Nilai: |
|
apiVersionMinor |
Kontrak | Wajib diisi. Versi minor API. Nilai: |
|
merchantInfo |
MerchantInfo |
Wajib diisi. (ID penjual Google Pay) Informasi tentang penjual yang meminta data pembayaran. |
|
allowedPaymentMethods |
Daftar<PaymentMethod > |
Wajib diisi. Menentukan dukungan untuk satu atau beberapa metode pembayaran yang didukung oleh Google Pay API. |
|
transactionInfo |
TransactionInfo |
Wajib diisi. Detail tentang otorisasi transaksi berdasarkan apakah pengguna menyetujui transaksi 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, "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" } }
InfoPembayaran
Informasi terkait pembayaran untuk pesanan.
Tabel berikut mencantumkan daftar properti untuk jenis PaymentInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
displayName |
String | Wajib diisi. Nama instrumen pembayaran yang dapat dilihat pengguna untuk ditampilkan di tanda terima. |
|
paymentType |
PaymentType |
Wajib diisi. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
Token yang dapat digunakan oleh tindakan. Tentukan ini hanya 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" }
Metode Pembayaran
Gunakan objek ini untuk mengonfigurasi dukungan situs Anda untuk Google Pay API.
Tabel berikut mencantumkan daftar properti untuk jenis PaymentMethod
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
Kontrak | Wajib diisi. ID pendek untuk metode pembayaran yang didukung. Hanya CARD yang saat ini didukung. Nilai: |
|
parameters |
CardParameters |
Wajib diisi. Parameter yang diperlukan untuk mengonfigurasi jenis metode pembayaran yang diberikan. |
|
tokenizationSpecification |
TokenizationSpecification |
Wajib diisi. Konfigurasi akun atau penyedia 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" } } }
Opsi Pembayaran
Tabel berikut mencantumkan daftar properti untuk jenis PaymentOptions
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
Tepat salah satu dari grup properti berikut ini wajib diisi. | |||
googleProvidedOptions |
Grup 1 | GoogleProvidedPaymentOptions |
Saling eksklusif dengan actionProvidedOptions. Gunakan metode ini untuk pembayaran online menggunakan gPay. |
actionProvidedOptions |
Grup 2 | ActionProvidedPaymentOptions |
Saling eksklusif dengan googleProvidedOptions. Gunakan ini untuk "uang tunai saat pengiriman" atau "bayar saat pemenuhan". |
Contoh berikut menunjukkan elemen PaymentOptions
:
Contoh 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
Contoh 2
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
NomorOpsiPembayaran
Jenis PaymentOptionsEnums
memiliki kemungkinan nilai berikut:
Cash
Card
UPI
Paytm
JenisPembayaran
Jenis PaymentType
memiliki kemungkinan nilai berikut:
PAYMENT_CARD
: Untuk GoogleProvidedPaymentOptions.ON_FULFILLMENT
: Untuk ActionProvidedPaymentOptions.
DidukungCardNetworks
Menentukan jenis yang terkait denganGoogleProvidedPaymentOptions
.
Jenis SupportedCardNetworks
memiliki kemungkinan nilai berikut:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
Parameter Tokenisasi
Menentukan jenis yang terkait denganGoogleProvidedPaymentOptions
.
Tabel berikut mencantumkan daftar properti untuk jenis TokenizationParameters
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
Wajib diisi. Gunakan fasilitasiSpesifikasi. Jenis token yang diterima. |
|
parameters |
Parameters |
Gunakan fasilitasiSpesifikasi. |
Spesifikasi Tokenisasi
Objek ini memungkinkan Anda mengonfigurasi akun untuk menerima informasi pembayaran yang dapat ditagih.
Tabel berikut mencantumkan daftar properti untuk jenis TokenizationSpecification
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
type |
Kontrak | Wajib diisi. |
|
parameters |
Parameters |
Wajib diisi. |
Contoh berikut menunjukkan elemen TokenizationSpecification
:
Contoh 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
Contoh 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
InfoTransaksi
Objek ini menjelaskan transaksi yang menentukan kemampuan pembayar. Ini digunakan untuk menampilkan dialog otorisasi pembayaran.
Tabel berikut mencantumkan daftar properti untuk jenis TransactionInfo
:
Properti | Jenis | Deskripsi | |
---|---|---|---|
currencyCode |
String | Wajib diisi. Kode mata uang alfabetis ISO 4217. |
|
transactionId |
String |
ID unik yang mengidentifikasi upaya transaksi. Penjual dapat menggunakan ID yang sudah ada atau membuat ID spesifik untuk upaya transaksi Google Pay. Kolom ini wajib diisi saat Anda mengirim callback ke Google Transaction Events API. |
|
totalPriceStatus |
Kontrak | Wajib diisi. Gunakan "perkiraan" sebagai default. Total harga dapat disesuaikan berdasarkan detail respons, seperti pajak penjualan yang dikumpulkan berdasarkan alamat penagihan. Nilai: |
|
totalPrice |
String | Wajib diisi. Nilai uang total transaksi dengan presisi desimal opsional yang terdiri dari dua tempat desimal. Kolom ini harus memiliki nilai yang sama dengan cart.totalPrice. |
Contoh berikut menunjukkan elemen TransactionInfo
:
Contoh
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }