ประเภทฐาน
รถเข็น
มีรายละเอียดคำสั่งซื้อ รวมถึงระบุว่าคำขอเป็นการมารับสินค้าหรือการนำส่ง นอกจากนี้ รถเข็นยังมีรายละเอียดการนำส่ง ค่าบริการสมนาคุณ และที่อยู่สำหรับจัดส่งด้วย ออบเจ็กต์Cart
ได้รับการกําหนดไว้ใน Checkout AppRequest
.f
คุณรวมสําเนารถเข็นไว้ใน Checkout AppResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Cart
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const |
ประเภทของออบเจ็กต์นี้ ละเว้นช่องนี้หากออบเจ็กต์รถเข็นหลักเป็นส่วนหนึ่งของ ProposedOrder ค่า: |
|
id |
String |
รหัสของรถเข็น (ไม่บังคับ) |
|
merchant |
Merchant |
ผู้ขายที่เชื่อมโยงกับรถเข็นนี้ |
|
lineItems |
List<LineItem > |
ต้องระบุ รายการสินค้าหรือบริการที่ผู้ใช้สั่งซื้อ ต้องมีอย่างน้อย 1 รายการ |
|
promotions |
List<Promotion > |
โปรโมชันที่ใช้ในรถเข็นนี้ ปัจจุบันระบบรองรับโปรโมชันเพียงรายการเดียว |
|
notes |
String |
หมายเหตุเกี่ยวกับคำสั่งซื้อหรือวิธีการนำส่ง |
|
extension |
FoodCartExtension |
กําหนดรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากําหนดการดําเนินการตามคำสั่งซื้อ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Cart
ตัวอย่างที่ 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" } } }
ตัวอย่างที่ 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" } } }
รายชื่อติดต่อ
ระบุรายละเอียดเกี่ยวกับผู้รับคำสั่งซื้อ ซึ่งมีให้บริการเป็นภาษาAppResponse
เท่านั้น
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Contact
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
displayName |
String |
ชื่อของผู้รับคำสั่งซื้อตามที่คุณต้องการให้แสดง ใช้ช่องนี้หากไม่ได้ระบุ firstName และ lastName ตัวอย่าง: |
|
email |
String |
อีเมลของผู้ที่ได้รับคำสั่งซื้อ ตัวอย่าง: |
|
firstName |
String |
ชื่อของผู้รับคำสั่งซื้อ ตัวอย่าง: |
|
lastName |
String |
นามสกุลของผู้รับคำสั่งซื้อ ตัวอย่าง: |
|
phoneNumber |
String |
หมายเลขโทรศัพท์ของผู้รับคำสั่งซื้อ รวมถึงรหัสประเทศ ตัวอย่าง: |
|
emailVerified |
บูลีน |
ระบุว่าบุคคลที่รับคำสั่งซื้อเข้าสู่ระบบด้วยบัญชี Google ของตนหรือไม่ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Contact
ตัวอย่าง
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
มีOrderUpdate
สำหรับคำขอ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CustomPushMessage
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
orderUpdate |
OrderUpdate |
ต้องระบุ ข้อมูลที่อัปเดตสำหรับคำสั่งซื้อ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท DeliveryInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
deliveryTimeIso8601 |
String |
เวลานำส่งโดยประมาณในรูปแบบการประทับเวลา ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M แสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งบอกว่าเวลานำส่งที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. ใช้เพื่ออัปเดตเวลานำส่งโดยประมาณระหว่างการตอบกลับการชำระเงิน ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ DeliveryInfo
ตัวอย่าง
{ "deliveryTimeIso8601": "PT90M" }
ข้อจำกัดความรับผิด
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Disclaimer
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
ต้องระบุ วิธีแสดงข้อความข้อจำกัดความรับผิดที่กำหนดไว้ล่วงหน้าระหว่างการชำระเงิน |
|
feeAmount |
Money |
พาร์ทเนอร์จะเรียกเก็บค่าธรรมเนียมจำนวน N จากผู้ขายสำหรับคำสั่งซื้อนี้ |
|
feeAmountRange |
FeeAmountRange |
พาร์ทเนอร์จะเรียกเก็บค่าธรรมเนียมจากร้านอาหารเป็นจำนวนเงิน N ถึง M ต่อคำสั่งซื้อ |
|
feePercent |
Number |
พาร์ทเนอร์จะเรียกเก็บค่าธรรมเนียม N% จากผู้ขายสำหรับคำสั่งซื้อนี้ |
|
feePercentRange |
FeePercentRange |
พาร์ทเนอร์จะเรียกเก็บค่าธรรมเนียม N% ถึง M% ต่อคำสั่งซื้อจากผู้ขาย |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Disclaimer
ตัวอย่างที่ 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
ตัวอย่างที่ 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
ตัวอย่างที่ 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
ตัวอย่าง 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
ตัวอย่างที่ 5
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
ตัวอย่าง 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
ข้อผิดพลาด
ประเภท Error
มีค่าที่เป็นไปได้ดังนี้
CLOSED
: ร้านอาหารปิดทำการในเวลาที่สั่งซื้อNO_CAPACITY
: ไม่มีบริการที่สามารถรองรับได้ (เช่น การหยุดทำงานชั่วคราวเนื่องจากเป็นช่วงเวลาที่มีการใช้งานสูงสุด)NO_COURIER_AVAILABLE
: ประมวลผลคำสั่งซื้อไม่ได้เนื่องจากมีเจ้าหน้าที่นำส่งไม่เพียงพอREQUIREMENTS_NOT_MET
: ไม่เป็นไปตามข้อจำกัดในการยอมรับคำสั่งซื้อ (เช่น ขนาดตะกร้าขั้นต่ำ)UNAVAILABLE_SLOT
: ไม่สามารถดำเนินการตามคำสั่งซื้อได้ในเวลาสั่งซื้อล่วงหน้าที่ระบุโดย DeliveryInfo หรือ PickupInfoOUT_OF_SERVICE_AREA
: นำส่งคำสั่งซื้อไปยังที่อยู่ของผู้ใช้ไม่ได้PROMO_EXPIRED
: ใช้ไม่ได้เนื่องจากโปรโมชันหมดอายุแล้วPROMO_NOT_APPLICABLE
: รหัสข้อผิดพลาดทั่วไปเพื่อจับทุกกรณีที่ใช้รหัสโปรโมชันไม่สำเร็จ หากข้อผิดพลาดเกี่ยวกับรหัสโปรโมชันอื่นๆ ไม่ได้ตรงกับข้อผิดพลาดนี้PROMO_NOT_RECOGNIZED
: ระบบไม่รู้จักรหัสคูปองPROMO_ORDER_INELIGIBLE
: คำสั่งซื้อปัจจุบันไม่มีสิทธิ์ใช้คูปองนี้PROMO_USER_INELIGIBLE
: ผู้ใช้ปัจจุบันไม่มีสิทธิ์ใช้คูปองนี้AVAILABILITY_CHANGED
: สินค้าหมดแล้ว หรือมีสินค้าไม่เพียงพอที่จะตอบสนองคำขอINCORRECT_PRICE
: ข้อผิดพลาดเกี่ยวกับราคาในค่าธรรมเนียมหรือราคารวมINVALID
: บรรทัดรายการ FulfillmentOption หรือโปรโมชันมีข้อมูลไม่ถูกต้องNOT_FOUND
: ไม่พบ LineItem, FulfillmentOption หรือโปรโมชันPRICE_CHANGED
: ราคาของสินค้ามีการเปลี่ยนแปลง
FeeAmountRange
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FeeAmountRange
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
minFeeAmount |
Money |
ขอบเขตล่างของจำนวนค่าธรรมเนียมที่เรียกเก็บ |
|
maxFeeAmount |
Money |
ขอบเขตบนของจำนวนเงินค่าธรรมเนียมที่เรียกเก็บ |
FeePercentRange
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FeePercentRange
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
minFeePercent |
Number |
ขอบเขตล่างของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ |
|
maxFeePercent |
Number |
ขอบเขตบนของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ |
FoodCartExtension
มีรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากําหนดการสั่งซื้อ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodCartExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const |
ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodCartExtension" เสมอ ค่า: |
|
contact |
Contact |
ข้อมูลติดต่อของผู้ที่ได้รับคำสั่งซื้อ รายละเอียด ได้แก่ ชื่อ หมายเลขโทรศัพท์ และอีเมลของบุคคล |
|
fulfillmentPreference |
FulfillmentOption |
ต้องระบุ ค่ากําหนดการดําเนินการตามคําสั่งซื้อของผู้ใช้ |
|
location |
Location |
ใน CheckoutRequestMessage ช่องนี้จะระบุที่อยู่สำหรับจัดส่ง ซึ่งจำเป็นต้องระบุหากคำสั่งซื้อมีบริการจัดส่ง สำหรับคำสั่งซื้อที่เป็นการสั่งอาหารกลับบ้านหรือมารับเอง ช่องนี้จะไม่รวมอยู่ในข้อความ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodCartExtension
ตัวอย่างที่ 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" } }
ตัวอย่างที่ 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
ระบุข้อผิดพลาดอย่างน้อย 1 รายการที่เกิดขึ้นขณะประมวลผลคําขอ ตารางต่อไปนี้อธิบายช่องของประเภทFoodErrorExtension
คุณส่งข้อผิดพลาดได้ใน CheckoutResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodErrorExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const | ต้องระบุ ประเภทของส่วนขยายนี้ ค่า: |
|
foodOrderErrors |
List<FoodOrderError > |
ต้องระบุ อาร์เรย์ของออบเจ็กต์ FoodOrderError ที่อธิบายข้อผิดพลาดที่เกิดขึ้น แนะนำข้อผิดพลาด 1 ข้อต่อรถเข็นหรือต่อสินค้า 1 รายการ ต้องมีอย่างน้อย 1 รายการ |
|
correctedProposedOrder |
ProposedOrder |
ต้องระบุเมื่อ
ProposedOrder ใหม่ที่มีการแก้ไข แสดงผลออบเจ็กต์นี้หากมีข้อผิดพลาดที่กู้คืนได้ใน ProposedOrder เดิม ตัวอย่างเช่น การเปลี่ยนแปลงราคาของรายการโฆษณาอย่างน้อย 1 รายการในรถเข็นเป็นข้อผิดพลาดที่แก้ไขได้ ข้อผิดพลาดที่แก้ไขได้ซึ่งมี ProposedOrder ที่ถูกต้องจะไปยังระยะการยืนยันแทนที่จะกำหนดให้ผู้ใช้ต้องตรวจสอบรถเข็น |
|
paymentOptions |
PaymentOptions |
ต้องระบุเมื่อ
ตัวเลือกการชำระเงินเริ่มต้นที่เลือกไว้สำหรับผู้ใช้ |
|
additionalPaymentOptions |
List<PaymentOptions > |
ตัวเลือกการชำระเงินอื่นๆ ที่พร้อมให้บริการแก่ผู้ใช้ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodErrorExtension
ตัวอย่าง
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
FoodItemExtension
กำหนดส่วนเสริมสำหรับรายการอาหาร
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodItemExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const | ต้องระบุ ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" เสมอ ค่า: |
|
options |
List<FoodItemOption > |
ตัวเลือกอาจเป็นสินค้าเสริมหรือกลุ่มสินค้าเสริมที่มีชุดของส่วนเสริม |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodItemExtension
ตัวอย่าง
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodItemOption
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
id |
String |
รหัสที่ไม่ซ้ำกันซึ่ง Google กําหนด เมื่อส่ง FoodOrderError หรือ AsyncOrderUpdateRequest ให้ใช้ช่องนี้เพื่อแยกความแตกต่างในกรณีที่รถเข็นมีสินค้ามากกว่า 1 รายการที่มี offerId เดียวกัน ตัวอย่าง: |
|
offerId |
String |
รหัสข้อเสนอของสินค้า ตัวอย่าง: |
|
name |
String |
ชื่อตัวเลือก ตัวอย่าง: |
|
price |
Money |
||
note |
String |
หมายเหตุที่เกี่ยวข้องกับตัวเลือก |
|
quantity |
Number |
สําหรับตัวเลือกที่เป็นสินค้า ให้ระบุจํานวนสินค้า ตัวอย่าง: |
|
subOptions |
List<FoodItemOption > |
ตัวเลือกย่อยของตัวเลือกนั้นๆ (หากมี) ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodItemOption
ตัวอย่างที่ 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
ตัวอย่างที่ 2
{ "id": "123166552", "offerId": "912849184", "name": "Make It A Meal", "price": { "currencyCode": "USD", "units": "3", "nanos": 730000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 }, { "id": "57159183", "offerId": "81837123", "name": "Drink", "price": { "currencyCode": "USD", "units": "3", "nanos": 130000000 }, "quantity": 1 } ] }
FoodOrderError
มีรายละเอียดเกี่ยวกับข้อผิดพลาดในCheckoutResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodOrderError
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
error |
Error |
ต้องระบุ |
|
id |
String | ต้องระบุเมื่อ
ต้องระบุข้อมูลในช่องนี้สำหรับข้อผิดพลาดระดับสินค้า โดยจะเป็น LineItem.id ที่ Google กำหนดสำหรับรายการเมนูหรือ FoodItemOption.id สำหรับส่วนเสริม |
|
description |
String |
คำอธิบายข้อผิดพลาด คำอธิบายนี้มีไว้สำหรับการบันทึกภายในและผู้ใช้จะไม่เห็น |
|
updatedPrice |
Money |
ต้องระบุเมื่อ
ราคาใหม่ของสินค้าที่ทำให้เกิดข้อผิดพลาด จำเป็นต้องระบุเฉพาะในกรณีที่เกิดข้อผิดพลาด "PRICE_CHANGED" |
|
availableQuantity |
จำนวนเต็ม | ต้องระบุเมื่อ
จำนวนสินค้าใหม่ที่มีจำหน่ายซึ่งทำให้เกิดข้อผิดพลาด ซึ่งจำเป็นต้องมีก็ต่อเมื่อเกิดข้อผิดพลาด "INVALID" หรือ "NOT_FOUND" ค่าควรเป็น 0 สำหรับ "INVALID" และ "NOT_FOUND" |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderError
ตัวอย่างที่ 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
ตัวอย่างที่ 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
มีข้อมูลการดำเนินการตามคำสั่งซื้อ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodOrderExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const |
ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" เสมอ ค่า: |
|
availableFulfillmentOptions |
List<FulfillmentOption > |
แสดงตัวเลือกการดำเนินการตามคำสั่งซื้อที่ใช้ได้ |
|
optinForRemarketing |
บูลีน |
คำขอของผู้ใช้ให้เลือกใช้ช่องทางการตลาด โดยค่าเริ่มต้น คุณจะส่งเนื้อหาการตลาดโดยไม่ได้รับความยินยอมจากผู้ใช้ไม่ได้ หาก optinForRemarketing เป็น "จริง" คุณจะสมัครใช้บริการของผู้ใช้ได้ หาก optinForRemarketing เป็นเท็จหรือไม่มีอยู่ คุณต้องคงสถานะการสมัครใช้บริการในระบบไว้ตามเดิม ผู้ใช้จะเลือกไม่ใช้ผ่าน Google ไม่ได้ ทำได้ผ่านฟังก์ชันการยกเลิกการสมัครใช้บริการที่มีให้ในช่องทางการตลาดเท่านั้น Flag นี้จะอยู่ใน SubmitOrderRequestMessage เท่านั้น |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderExtension
ตัวอย่างที่ 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
ตัวอย่างที่ 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
คุณใช้ออบเจ็กต์FulfillmentOption
ได้ดังนี้
-
ใน
Checkout AppRequest
และSubmit AppRequest
Cart.extension.fulfillmentPreference
: จัดเก็บค่ากําหนดของผู้ใช้ (การนำส่งหรือการรับสินค้า) ราคาจะเป็น 0 เสมอเมื่อส่งคำขอชำระเงิน -
ใน
Checkout AppResponse
ProposedOrder.extension.availableFulfillmentOptions
จะทำหน้าที่ดังนี้ กำหนดตัวเลือกการนำส่งอย่างน้อย 1 รายการ (ปัจจุบันรองรับเพียง 1 ตัวเลือกเท่านั้น) คุณระบุตัวเลือกเริ่มต้นเป็นLineItem
ในProposedOrder.otherItems
offerId
ของFulfillmentOption
ควรตรงกับรหัสของLineItem
ที่ระบุไว้ในProposedOrder.otherItems
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentOption
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
offerId |
String |
ตัวระบุที่ไม่ซ้ำกันสำหรับตัวเลือกการดำเนินการตามคำสั่งซื้อนี้ (หากมี) |
|
fulfillmentInfo |
FulfillmentOptionInfo |
ต้องระบุ |
|
expiresAt |
การประทับเวลา ISO |
เวลาของตัวเลือกการจำหน่ายนี้ที่หมดอายุ |
|
price |
Money |
ค่าใช้จ่ายของตัวเลือกนี้ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FulfillmentOption
ตัวอย่าง
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
กําหนดข้อมูลที่เกี่ยวข้องกับFulfillmentInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentOptionInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม | |||
delivery |
กลุ่ม 1 | DeliveryInfo |
ระบุคำสั่งซื้อแบบมีบริการจัดส่ง (หากมี) |
pickup |
กลุ่ม 2 | PickupInfo |
ระบุคำสั่งซื้อแบบรับสินค้า (หากมี) |
รูปภาพ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Image
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
sourceUrl |
String | ต้องระบุ URL ของรูปภาพ รูปภาพควรมีขนาดอย่างน้อย 72x72 พิกเซล โปรดใช้รูปภาพที่มีความละเอียดอย่างน้อย 216x216 พิกเซลเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด รูปภาพต้องมีขนาดไม่เกิน 6 MB และ 64 เมกะพิกเซล |
LineItem
กำหนดเนื้อหาของรถเข็น (Cart.lineItems
) หรือค่าใช้จ่ายเพิ่มเติมสำหรับคำสั่งซื้อ (ProposedOrder.otherItems
)
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท LineItem
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
id |
String | ต้องระบุเมื่อ
สำหรับบรรทัดรายการในรถเข็น (ProposedOrder.cart.lineItems[0].id) รหัสนี้คือรหัสที่ไม่ซ้ำกันที่ Google สร้างขึ้นเมื่อสร้างคำสั่งซื้อ สำหรับ LineItem ใน ProposedOrder (ProposedOrder.otherItems[0].id) ซึ่งใช้เพื่อเพิ่มรายการต่างๆ เช่น ค่าธรรมเนียมการนำส่งและภาษี ผู้ให้บริการจะเป็นผู้กำหนดค่าของรหัส เช่น ในรถเข็นมีสินค้าเดียวกัน 2 รายการที่มีวิธีการเตรียมแตกต่างกัน (เช่น พิซซ่าขนาดกลาง 2 ถาดที่มีเครื่องเคียงชุดต่างกัน) ในกรณีนี้ รายการทั้ง 2 รายการจะมี offerId พื้นฐานเดียวกัน เมื่อส่งคำขออัปเดตคำสั่งซื้อเพื่อระบุว่ามีการปฏิเสธสินค้า ให้ใช้รหัสนี้เป็นตัวช่วยคลายความกำกวม กล่าวคือ หากพิซซ่ารายการใดรายการหนึ่งถูกปฏิเสธเนื่องจากไม่มีเครื่องปรุงบางรายการ รหัสนี้จะช่วยให้ Google ระบุได้ว่าคุณหมายถึงสินค้าใดในคำสั่งซื้อ ต้องระบุข้อมูลในช่องนี้ ยกเว้นใน otherItems |
|
name |
String | ต้องระบุ ชื่อของรายการโฆษณา สตริงนี้เป็นสตริงที่ผู้ใช้มองเห็นได้ และควรใช้ตัวพิมพ์เล็กตามแบบประโยคเมื่อเป็นไปได้ (เช่น "ค่าธรรมเนียมการนำส่ง" "ค่าบริการ" "ภาษี") ระบบจะตัดข้อความในช่องนี้ที่ 100 อักขระสำหรับผู้ใช้ |
|
type |
LineItemType |
ต้องระบุ |
|
quantity |
จำนวนเต็ม | ต้องระบุเมื่อ
จํานวนสินค้าที่รวมอยู่ ใช้กับ ProposedOrder.otherItems ไม่ได้ |
|
description |
String |
รายละเอียดของสินค้า |
|
price |
Price |
ต้องระบุ ราคาของสินค้า ค่านี้แสดงราคารวมของสินค้าหรือบริการทั้งหมดสำหรับรายการโฆษณานี้ (กล่าวคือ เพิ่มต้นทุนของส่วนเสริมต่างๆ แล้วคูณด้วยจำนวน) เช่น หากสินค้าราคา 300 บาทมีจำนวน 3 รายการ ราคาจะเป็น 900 บาท สำหรับพิซซ่า 1 ถาดที่มีราคาฐาน $5 และส่วนเสริม $1 ราคาจะเท่ากับ $6 สำหรับพิซซ่า 2 ถาด (จำนวน = 2) ที่มีราคาฐาน 50 บาท และแต่ละถาดมีราคาส่วนเพิ่ม 10 บาท ราคารวมจะเท่ากับ 120 บาท บรรทัดรายการแต่ละรายการควรมีราคา แม้ว่าราคาจะเป็น "0" ก็ตาม เมื่อประเภทเป็น DISCOUNT ให้ระบุค่าเป็นลบ (เช่น "-2") |
|
subLines |
List<SublineNote > |
ไม่บังคับและใช้ได้ก็ต่อเมื่อประเภทเป็น "ปกติ" เท่านั้น ผู้ใช้อาจส่งหมายเหตุเฉพาะสินค้าในช่องนี้ในคำขอชำระเงินและคำขอส่งคำสั่งซื้อ ตรวจสอบว่าผู้ขายได้รับหมายเหตุเมื่อมีการระบุ ข้อมูลนี้จะอยู่ในคําขอเป็น subLines[0].note ซึ่งเป็นค่าเดียวที่ระบุในช่องนี้เมื่อมีอยู่ในคําขอ ต้องมีไม่เกิน 1 รายการ |
|
offerId |
String | ต้องระบุเมื่อ
รหัสข้อเสนอของ MenuItem สำหรับสินค้า ใช้กับ ProposedOrder.otherItems ไม่ได้ |
|
extension |
FoodItemExtension |
กำหนดส่วนเสริมสำหรับรายการอาหาร |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ LineItem
ตัวอย่างที่ 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
ตัวอย่างที่ 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
ประเภท LineItemType
มีค่าที่เป็นไปได้ดังนี้
REGULAR
: รายการโฆษณาสินค้า ใช้กับ Cart.lineItemsTAX
: รายการภาษี ใช้ได้กับ ProposedOrder.otherItemsDISCOUNT
: รายการโฆษณาส่วนลด โปรดทราบว่าราคาควรเป็นค่าลบ ใช้ได้กับ ProposedOrder.otherItemsGRATUITY
: รายการโฆษณาทิป โดยทั่วไปสงวนไว้สำหรับ SubmitOrderRequestMessage สำหรับเคล็ดลับที่ผู้ใช้เลือก ใช้ได้กับ ProposedOrder.otherItemsDELIVERY
: รายการโฆษณาการแสดงโฆษณา ใช้ได้กับ ProposedOrder.otherItemsSUBTOTAL
: รายการบรรทัดยอดรวมย่อย ใช้ได้กับ ProposedOrder.otherItemsFEE
: รายการโฆษณาเพิ่มเติมที่ไม่ครอบคลุมโดยประเภทอื่นๆ ใช้ได้กับ ProposedOrder.otherItems
ตำแหน่ง
ระบุที่อยู่สำหรับการสั่งอาหาร ประเภทLocation
จะใช้ใน Cart
เพื่อระบุปลายทางของคำสั่งนำส่งเท่านั้น
ตำแหน่งที่สรุปแล้วจะแสดงใน
TransactionDecisionValue
ด้วยหากผู้ใช้สั่งซื้อ สำหรับคำสั่งซื้อที่ระบุการไปรับสินค้า ระบบจะไม่รวมสถานที่ใดๆ เลย (แม้แต่สถานที่ว่างเปล่า)
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Location
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
แสดงที่อยู่ของสถานที่ตั้ง ตัวอย่าง: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
ตัวอย่าง: |
|
city |
String |
ชื่อเมือง ตัวอย่าง: |
|
notes |
String |
หมายเหตุเกี่ยวกับสถานที่ เช่น รหัสประตู โดยควรมีความยาวไม่เกิน 500 อักขระ ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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" }
ผู้ขาย
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Merchant
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
id |
String |
รหัสผู้ขาย หากระบุไว้ จะตรงกับ Restaurant.@id ในฟีดร้านอาหาร ตัวอย่าง: |
|
name |
String | ต้องระบุ ชื่อผู้ขายที่ผู้ใช้มองเห็น ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Merchant
ตัวอย่าง
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
เงินทอง
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Money
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
currencyCode |
String | ต้องระบุ รหัสสกุลเงิน 3 ตัวในรูปแบบ ISO 4217 ตัวอย่าง: |
|
units |
String |
จำนวนเงินเต็ม เช่น หาก currencyCode คือ "USD" หน่วย "1" จะเป็นดอลลาร์สหรัฐ 1 ดอลลาร์ ตัวอย่าง: |
|
nanos |
จำนวนเต็ม |
จํานวนหน่วยนาโน (10^-9) ของจํานวนเงิน ค่าต้องอยู่ระหว่าง -999,999,999 ถึง +999,999,999 ใช้กฎต่อไปนี้ หากหน่วยเป็นบวก nanos ต้องเป็นบวกหรือ 0 หากหน่วยเป็น 0 นาโนสจะเป็นค่าบวก 0 หรือลบก็ได้ หากหน่วยติดลบ nanos ต้องเป็นค่าลบหรือ 0 เช่น $-1.75 จะแสดงเป็น units = -1 และ nanos = -750,000,000 ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Money
ตัวอย่างที่ 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
ตัวอย่างที่ 2
{ "currencyCode": "EUR", "units": "10" }
สั่งซื้อ
มีคำสั่งซื้อขั้นสุดท้าย รวมถึงภาษี ค่าธรรมเนียม และค่าธรรมเนียมการนำส่ง ตลอดจนข้อมูลการชำระเงิน การดำเนินการของคุณได้รับออบเจ็กต์นี้ในSubmit AppRequest
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Order
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
finalOrder |
ProposedOrder |
ต้องระบุ คำสั่งซื้อที่เสนอซึ่งทำให้เกิดคำสั่งซื้อ |
|
googleOrderId |
String | ต้องระบุ รหัสคำสั่งซื้อที่ Google กำหนด รหัสนี้ควรคงที่ตลอดอายุการใช้งานของคำสั่งซื้อ ผู้ใช้ปลายทางจะไม่เห็นรหัสนี้ |
|
orderDate |
การประทับเวลา ISO | ต้องระบุ วันที่และเวลาที่สร้างคำสั่งซื้อ |
|
paymentInfo |
PaymentInfo |
ต้องระบุ ข้อมูลการชำระเงินที่เกี่ยวข้องกับการชำระเงินสำหรับคำสั่งซื้อนี้ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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" } }
OrderUpdate
ตารางต่อไปนี้อธิบายช่องของประเภท OrderUpdate ซึ่งรวมอยู่ในAppResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderUpdate
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
actionOrderId |
String | ต้องระบุ รหัสที่ไม่ซ้ำกันของคำสั่งซื้อในระบบของผู้ผสานรวมซึ่งใช้เพื่อระบุคำสั่งซื้อที่จะส่งการอัปเดต หากไม่ได้ระบุ receipt.user_visible_order_id อย่างน้อย 1 ครั้งใน OrderUpdate สำหรับคำสั่งซื้อที่ "สร้างแล้ว" รหัสนี้จะใช้เป็นรหัสที่ผู้ใช้มองเห็นซึ่งป้อนไว้และแสดงในการ์ดคำสั่งซื้อของ Google |
|
orderState |
OrderState |
ต้องระบุ สถานะใหม่ของคำสั่งซื้อ |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
การประทับเวลา ISO | ต้องระบุ เวลาที่มีการอัปเดตคำสั่งซื้อ |
|
orderManagementActions |
List<OrderManagementAction > |
การดำเนินการหลังสั่งซื้อ เช่น ติดต่อฝ่ายสนับสนุนและดูรายละเอียดคำสั่งซื้อ ต้องมีอย่างน้อย 1 รายการและไม่เกิน 6 รายการ |
|
rejectionInfo |
RejectionInfo |
ต้องระบุเมื่อ
|
|
cancellationInfo |
CancellationInfo |
ต้องระบุเมื่อ
|
|
inTransitInfo |
InTransitInfo |
ช่องนี้เลิกใช้งานแล้ว |
|
fulfillmentInfo |
FulfillmentInfo |
ช่องนี้เลิกใช้งานแล้ว |
|
receipt |
Receipt |
ต้องระบุเมื่อ
ระบุรหัสคำสั่งซื้อที่ผู้ใช้มองเห็นได้ในใบเสร็จ |
|
totalPrice |
Price |
ราคารวมของคำสั่งซื้อ |
|
infoExtension |
FoodOrderUpdateExtension |
กําหนดรายละเอียดเพิ่มเติมของการอัปเดตคําสั่งซื้อ เช่น ช่วงเวลาของการนำส่งหรือการรับสินค้าโดยประมาณ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderUpdate
ตัวอย่าง
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
PickupInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PickupInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
pickupTimeIso8601 |
String |
เวลารับพัสดุโดยประมาณในรูปแบบการประทับเวลา ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M แสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งบอกว่าเวลารับที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. ใช้เพื่ออัปเดตเวลารับสินค้าโดยประมาณระหว่างการตอบกลับการชำระเงิน ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PickupInfo
ตัวอย่าง
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PostalAddress
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
regionCode |
String | ต้องระบุ รหัสประเทศ 2 ตัวอักษร ตัวอย่าง: |
|
postalCode |
String |
รหัสไปรษณีย์ ตัวอย่าง: |
|
administrativeArea |
String |
เขตบริหารย่อยที่สูงที่สุดซึ่งใช้สำหรับที่อยู่ไปรษณีย์ของประเทศหรือภูมิภาค ซึ่งอาจเป็นรัฐ จังหวัด เขต หรือจังหวัด ตัวอย่าง: |
|
locality |
String |
เมืองของสถานที่ตั้งนี้ ในภูมิภาคของโลกที่ระบุสถานที่ตั้งไม่ชัดเจนหรือไม่เหมาะกับโครงสร้างนี้ อย่าระบุสถานที่ตั้ง และใช้ช่อง addressLines แทน ตัวอย่าง: |
|
addressLines |
List<String> |
บรรทัดอย่างน้อย 1 บรรทัดที่คุณสามารถใช้เพื่อระบุที่อยู่ คุณไม่ควรแก้ไขช่องนี้เนื่องจากอาจมีสถานที่ที่ไม่ชัดเจน ตัวอย่าง: |
|
recipients |
List<String> |
รายชื่อผู้รับของคำสั่งซื้อ ช่องนี้ใช้ได้เฉพาะใน billingAddress |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PostalAddress
ตัวอย่าง
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
ราคา
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Price
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
ต้องระบุ รหัสคูปองโปรโมชัน |
|
amount |
Money |
ต้องระบุ |
โปรโมชัน
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Promotion
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
coupon |
String | ต้องระบุ รหัสคูปองโปรโมชัน |
ProposedOrder
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท ProposedOrder
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
id |
String |
รหัสที่ไม่บังคับสำหรับคำสั่งซื้อที่เสนอ |
|
cart |
Cart |
ต้องระบุ รายการของผู้ใช้ |
|
otherItems |
List<LineItem > |
รายการที่ผู้ให้บริการเพิ่ม เช่น ค่าธรรมเนียมการนำส่ง ค่าธรรมเนียมอื่นๆ และภาษี นอกจากนี้ otherItems อาจมีค่าตอบแทนพิเศษและ/หรือส่วนลดที่ผู้ใช้เพิ่มไว้ด้วย ต้องมีไม่เกิน 10 รายการ |
|
image |
Image |
รูปภาพที่เชื่อมโยงกับคำสั่งซื้อที่เสนอ |
|
totalPrice |
Price |
ต้องระบุ ราคารวมของคำสั่งซื้อที่เสนอ |
|
extension |
FoodOrderExtension |
ต้องระบุ กำหนดข้อมูลการดำเนินการตามคำสั่งซื้ออาหาร |
|
disclaimers |
List<Disclaimer > |
สอดคล้องกับข้อความข้อจำกัดความรับผิดที่จะแสดงใน UI ก่อนที่จะมีการสั่งซื้อ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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" } ] } }
SublineNote
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท SublineNote
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
note |
String | ต้องระบุ |
การประทับเวลา
วันที่และเวลาในรูปแบบต่อไปนี้
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
มีOrder
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TransactionDecisionValue
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
order |
Order |
ต้องระบุ สั่งซื้อพร้อมรายละเอียดการชําระเงิน |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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" } } }
คำขอดำเนินการตามคำสั่งซื้อ
AppRequest
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AppRequest
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
isInSandbox |
บูลีน |
ระบุว่าธุรกรรมต่อๆ ไปจะดำเนินการในสภาพแวดล้อมเสมือนจริงหรือไม่ |
|
conversation |
Conversation |
||
inputs |
List<Input > |
ต้องระบุ มีอาร์กิวเมนต์ที่คาดไว้สำหรับการชำระเงิน ต้องมีรายการเดียว |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AppRequest
ตัวอย่างที่ 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" } } } } ] } ] }
ตัวอย่างที่ 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
คือ AppRequest
ที่มีความตั้งใจ actions.foodordering.intent.CHECKOUT
SubmitOrderRequestMessage
SubmitOrderRequestMessage
คือ AppRequest
ที่มีความตั้งใจ actions.foodordering.intent.TRANSACTION_DECISION
การสนทนา
Conversation
จะใช้ได้กับเซสชันเดียวเท่านั้น คุณสามารถใช้เพื่อลิงก์การดำเนินการ Checkout
และ SubmitOrder
หลายรายการเข้าด้วยกันได้หากจำเป็น
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Conversation
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
conversationId |
String | ต้องระบุ รหัสที่ไม่ซ้ำกันสำหรับการสนทนา |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Conversation
ตัวอย่าง
{ "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ" }
อินพุต
อาร์กิวเมนต์ที่คาดไว้สำหรับการชําระเงินในรถเข็น
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Input
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
intent |
Enum [
"actions.foodordering.intent.CHECKOUT",
"actions.intent.TRANSACTION_DECISION"
] |
ต้องระบุ ตั้งค่าเป็น "actions.foodordering.intent.CHECKOUT" สำหรับข้อความคำขอชำระเงิน หรือ "actions.intent.TRANSACTION_DECISION" สำหรับข้อความคำขอส่งคำสั่งซื้อ |
|
arguments |
List<Argument > |
ต้องระบุ มีรถเข็นที่จะชำระเงินหรือคำสั่งซื้อที่จะสั่งซื้อ ต้องมีรายการเดียว |
อาร์กิวเมนต์
มีรายละเอียดเกี่ยวกับรายการอาหารซึ่งผู้ใช้ต้องการชำระเงิน สำหรับการชําระเงิน เฉพาะส่วนขยายเท่านั้นที่มีผล สําหรับการสั่งซื้อที่ส่ง เฉพาะ transactionDecisionValue เท่านั้นที่ใช้ได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Argument
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม | |||
extension |
กลุ่ม 1 | Cart |
รายละเอียดอาหารที่ต้องการชำระเงิน |
transactionDecisionValue |
กลุ่ม 2 | TransactionDecisionValue |
มีคำสั่งซื้อที่จะสั่งซื้อพร้อมรายละเอียดการชำระเงิน |
การตอบสนองการจำหน่าย
AppResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AppResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
expectUserResponse |
Const |
ตั้งค่าเป็น "เท็จ" ค่า: |
|
finalResponse |
FinalResponse |
ต้องระบุ มีคำตอบของคุณสำหรับการชําระเงินในรถเข็น |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AppResponse
ตัวอย่างที่ 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." } } ] } } } ] } } }
ตัวอย่างที่ 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" } } } } ] } } }
ตัวอย่างที่ 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." } ] } } } ] } } }
ตัวอย่าง 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
CheckoutResponseMessage
คือ AppResponse
ที่มี checkoutResponse
หรือ error
ใน StructuredResponse
SubmitOrderResponseMessage
SubmitOrderResponseMessage
คือ AppResponse
ที่มี orderUpdate
ใน StructuredResponse
FinalResponse
การตอบกลับการชำระเงินผ่านรถเข็นหรือ SubmitOrderRequestMessage
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FinalResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
richResponse |
RichResponse |
ต้องระบุ มีคำตอบของคุณสำหรับ CheckoutRequestMessage หรือ SubmitOrderRequestMessage |
CheckoutResponse
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CheckoutResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
proposedOrder |
ProposedOrder |
ต้องระบุ คำสั่งซื้อที่เสนอให้ใช้สำหรับธุรกรรม |
|
paymentOptions |
PaymentOptions |
ต้องระบุ ตัวเลือกการชำระเงินเริ่มต้นที่เลือกไว้สำหรับผู้ใช้ |
|
additionalPaymentOptions |
List<PaymentOptions > |
ตัวเลือกการชำระเงินอื่นๆ ที่พร้อมให้บริการแก่ผู้ใช้ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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." } } ] }
รายการ
มีคำตอบของคุณสำหรับการชําระเงินในรถเข็นหรือ SubmitOrderRequestMessage
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Item
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
structuredResponse |
StructuredResponse |
ต้องระบุ |
RichResponse
มีคำตอบของคุณสำหรับการชําระเงินในรถเข็น
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท RichResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
items |
List<Item > |
ต้องระบุ ต้องมีรายการเดียว |
StructuredResponse
สำหรับ CheckoutResponseMessage อาจเป็นค่าใดค่าหนึ่งต่อไปนี้ CheckoutResponse บ่งบอกว่าการชำระเงินสำเร็จ หรือ FoodErrorExtension: บ่งบอกถึงความล้มเหลวระหว่างการชำระเงิน การตอบกลับอาจรวม ProposedOrder และ PaymentOptions ที่แก้ไขแล้ว หรือข้อความแสดงข้อผิดพลาดที่ไม่มี PaymentOptions สำหรับ SubmitOrderResponseMessage เฉพาะ orderUpdate เท่านั้นที่ใช้ได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท StructuredResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม | |||
checkoutResponse |
กลุ่ม 1 | CheckoutResponse |
สินค้าในตะกร้าบวกภาษีและส่วนลด |
error |
กลุ่ม 2 | FoodErrorExtension |
ข้อผิดพลาดที่พบในรายการรถเข็น พร็อพเพอร์ตี้นี้อาจมี ProposedOrder และ PaymentOptions ที่แก้ไขแล้ว หรืออาจเป็นเพียงข้อความแสดงข้อผิดพลาดที่ไม่มี PaymentOptions ทั้งนี้ขึ้นอยู่กับลักษณะของข้อผิดพลาด |
orderUpdate |
กลุ่ม 3 | OrderUpdate |
การอัปเดตคำสั่งซื้อแบบอะซิงโครนัส
ส่วนนี้จะอธิบายประเภทระดับสูงที่ประกอบกันเป็นคําขอและการตอบกลับของการโต้ตอบการดําเนินการแบบฝังที่พบได้ทั่วไปในการสั่งอาหารAsyncOrderUpdateRequestMessage
แจ้งให้ผู้ใช้ทราบถึงการเปลี่ยนแปลงหลังจากที่ส่งคำสั่งซื้อและยืนยันแล้ว เช่น คุณสามารถแจ้งให้ผู้ใช้ทราบว่าคำสั่งซื้ออยู่ระหว่างการขนส่งหรือราคามีการเปลี่ยนแปลง สำหรับข้อมูลเพิ่มเติม โปรดดูตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AsyncOrderUpdateRequestMessage
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
isInSandbox |
บูลีน |
บ่งชี้ว่าคำสั่งซื้อที่ส่งการอัปเดตนี้มาเป็นการชําระเงินในกล่องทดสอบ |
|
customPushMessage |
CustomPushMessage |
ต้องระบุ มี OrderUpdate สำหรับคำขอ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AsyncOrderUpdateRequestMessage
ตัวอย่าง
{ "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
หลังจากส่งAsyncOrderUpdateRequestMessage
เรียบร้อยแล้ว Google จะตอบกลับด้วยสถานะ HTTP 200 และเนื้อหาว่าง หากอัปเดตไม่สำเร็จ Google จะตอบกลับพร้อมรายละเอียดเกี่ยวกับสาเหตุที่การอัปเดตคำสั่งซื้อไม่สำเร็จ
ประเภทการอัปเดตคำสั่งซื้อ
ปุ่ม
กําหนดองค์ประกอบอินเทอร์เฟซผู้ใช้ที่คุณสามารถเพิ่มเพื่อให้ผู้ใช้โต้ตอบได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Button
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
title |
String | ต้องระบุ ป้ายกำกับที่แสดง ใช้ลักษณะตัวพิมพ์ของประโยคที่มีอักขระไม่เกิน 30 ตัวเพื่อให้แน่ใจว่าการแสดงผลถูกต้อง ตัวอย่าง: |
|
openUrlAction |
OpenUrlAction |
ต้องระบุ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Button
ตัวอย่าง
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CancellationInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
reason |
String | ต้องระบุ เหตุผลแบบข้อความที่แสดงได้สำหรับการปฏิเสธเมื่อ OrderState.state เป็น "CANCELLED" ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CancellationInfo
ตัวอย่าง
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
ประเภทนี้จะแสดงช่วงเวลาโดยประมาณที่สินค้าจะจัดส่งหรือพร้อมให้รับ ส่งส่วนขยายนี้ใน
OrderUpdate
ทุกครั้งที่มีข้อมูลหรือมีการเปลี่ยนแปลงข้อมูลนับตั้งแต่ส่งครั้งล่าสุด
ระบุค่าประมาณแบบอนุรักษ์นิยมสำหรับช่วงเวลาการดำเนินการเพื่อให้เป็นไปตามความคาดหวังของผู้ใช้อย่างสม่ำเสมอ เช่น หากคาดว่าจะนำส่งคำสั่งซื้อในวันนี้เวลา 13:00 น. คุณควรส่งช่วงเวลาโดยประมาณที่สอดคล้องกับความผันผวนเนื่องจากสภาพการจราจร เช่น วันนี้เวลา 12:45 น. ถึง 13:15 น.
ระบบจะตีความระยะเวลาหรือการประทับเวลา ISO 8601 ว่าหมายถึงช่วงเวลาจาก updateTime
ของ OrderUpdate
(โดยพื้นฐานคือ "ตอนนี้") ถึง updateTime
บวก duration
อย่าใช้รูปแบบนี้ เว้นแต่ว่า "ตอนนี้" จะเป็นความคาดหวังที่สมเหตุสมผล
ระบบจะตีความช่วงเวลา ISO 8601 ว่าหมายถึงช่วงเวลาตั้งแต่เริ่มต้นจนถึงสิ้นสุดของช่วงเวลา
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodOrderUpdateExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
Const |
ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension" เสมอ ค่า: |
|
estimatedFulfillmentTimeIso8601 |
String |
เวลาโดยประมาณที่จะมีการนำส่งคำสั่งซื้อหรือพร้อมให้มารับ สตริงต้องอยู่ในรูปแบบ ISO 8601 และต้องสอดคล้องกับช่วงเวลา ไม่ใช่เวลาแบบคงที่ครั้งเดียว รูปแบบที่ยอมรับ ได้แก่ ช่วงเวลา ระยะเวลา และวันที่/เวลา ฟิลด์นี้สามารถส่งใน SubmitOrderResponseMessage หรือ AsyncOrderUpdateRequestMessage เมื่อข้อมูลพร้อมใช้งานหรือมีการเปลี่ยนแปลง เช่น มาถึงก่อนกำหนดหรือล่าช้า ตัวอย่าง: |
|
foodOrderErrors |
List<FoodOrderError > |
อธิบายข้อผิดพลาดที่เกิดขึ้นหลังการสั่งซื้อ แนะนำข้อผิดพลาด 1 ข้อต่อรถเข็นหรือต่อสินค้า 1 รายการ ใช้ FoodOrderUpdateExtension.FoodOrderErrors สำหรับข้อผิดพลาดที่ไม่ได้อยู่ใน RejectionInfo ต้องมีอย่างน้อย 1 รายการ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderUpdateExtension
ตัวอย่างที่ 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" }
ตัวอย่างที่ 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] }
FulfillmentInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม | |||
deliveryTime |
กลุ่ม 1 | การประทับเวลา ISO |
ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension |
pickupTime |
กลุ่ม 2 | การประทับเวลา ISO |
ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FulfillmentInfo
ตัวอย่างที่ 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
ตัวอย่างที่ 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท InTransitInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
updatedTime |
การประทับเวลา ISO |
ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ InTransitInfo
ตัวอย่าง
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท LineItemUpdate
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
เหตุผลของการเปลี่ยนแปลง ต้องระบุสำหรับการเปลี่ยนแปลงราคา |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ LineItemUpdate
ตัวอย่าง
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OpenUrlAction
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
url |
String | ต้องระบุ การดําเนินการที่เรียกให้แสดงด้วยการคลิกหรือแตะปุ่ม รายการคำนำหน้าที่เกี่ยวข้องจะขึ้นอยู่กับ orderManagementActionType "EMAIL": คำนำหน้าต้องเป็น "mailto" "CALL": คำนำหน้าต้องเป็น "tel" "CUSTOMER_SERVICE": คำนำหน้าต้องเป็น "mailto", "tel", "http" หรือ "https" ตัวอย่าง: |
OrderManagementAction
การจัดการคำสั่งซื้อช่วยให้ผู้ใช้ได้รับการสนับสนุนหลังสั่งซื้อ และควรส่งใน OrderUpdate
แต่ละรายการภายในคำสั่งซื้อที่ส่ง AppResponse
และAsyncOrderUpdateRequestMessage
แต่ละรายการที่ส่งตามมา การดำเนินการจัดการคำสั่งซื้อที่ส่งสำหรับคำสั่งซื้อหนึ่งๆ อาจแตกต่างกันไปตามสถานะ
ตัวอย่างเช่น ในสถานะ "สร้างแล้ว" CUSTOMER_SERVICE
อาจอ้างอิงหมายเลขโทรศัพท์ของฝ่ายสนับสนุนลูกค้า จากนั้นในสถานะ "ยืนยันแล้ว" CUSTOMER_SERVICE
จะเปลี่ยนเป็นหมายเลขโทรศัพท์ของร้านอาหารได้หากเป็นช่องทางติดต่อที่ดีที่สุดสำหรับลูกค้า ในทำนองเดียวกัน เมื่อคำสั่งซื้ออยู่ในสถานะ "ดำเนินการแล้ว" CUSTOMER_SERVICE
จะอ้างอิงอีเมลการสนับสนุนของคุณได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderManagementAction
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
type |
OrderManagementActionType |
ต้องระบุ |
|
button |
Button |
ต้องระบุ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderManagementAction
ตัวอย่างที่ 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
ตัวอย่างที่ 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
กำหนดประเภทที่เกี่ยวข้องกับOrderManagementAction
ประเภท OrderManagementActionType
มีค่าที่เป็นไปได้ดังนี้
CUSTOMER_SERVICE
: อีเมลและ/หรือหมายเลขติดต่อของฝ่ายบริการลูกค้าที่จะแสดงในหน้ายืนยันคำสั่งซื้อ ต้องระบุค่านี้ โดยคำนำหน้า openUrlAction.url ต้องคือ "mailto", "tel", "http" หรือ "https"EMAIL
: การดำเนินการทางอีเมลในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "mailto"CALL_DRIVER
: เรียกใช้การดําเนินการในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "tel"CALL_RESTAURANT
: เรียกใช้การดําเนินการในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "tel"
OrderState
สถานะปัจจุบันของคำสั่งซื้อ ค่า state
แต่ละค่าของ OrderState
ยังสอดคล้องกับสถานะการซื้อใน myaccount.google.com ด้วย
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderState
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
state |
OrderStateEnum |
ต้องระบุ |
|
label |
String | ต้องระบุ สตริงการแสดงผลที่ผู้ใช้มองเห็นสำหรับสถานะ ขึ้นต้นประโยคด้วยตัวพิมพ์ใหญ่ หรือใช้ตัวพิมพ์ใหญ่กับอักษรตัวแรกของคำและวิสามานยนาม (สำหรับภาษาอังกฤษ) ตัวอย่าง: |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderState
ตัวอย่าง
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
กำหนดประเภทที่เกี่ยวข้องกับOrderState
ประเภท OrderStateEnum
มีค่าที่เป็นไปได้ดังนี้
CREATED
: คำสั่งซื้อที่สร้างโดยผู้ผสานรวมและรอการยืนยันจากผู้ให้บริการ สอดคล้องกับสถานะการซื้อ "สั่งซื้อแล้ว"CONFIRMED
: คำสั่งซื้อที่ยืนยันโดยผู้ให้บริการและใช้งานอยู่ สอดคล้องกับสถานะการซื้อ "ยอมรับ"REJECTED
: คำสั่งซื้อถูกปฏิเสธโดยผู้ผสานรวมหรือผู้ให้บริการ สอดคล้องกับสถานะการซื้อ "ถูกปฏิเสธ"CANCELLED
: ผู้ใช้ยกเลิกคำสั่งซื้อ สอดคล้องกับสถานะการซื้อ "ยกเลิกแล้ว"IN_PREPARATION
: กำลังเตรียมอาหาร สอดคล้องกับสถานะการซื้อ "สถานะไม่รู้จัก"READY_FOR_PICKUP
: อาหารพร้อมให้รับแล้ว สอดคล้องกับสถานะการซื้อ "พร้อมรับสินค้า"IN_TRANSIT
: กำลังนำส่งคำสั่งซื้อ สอดคล้องกับสถานะการซื้อ "อยู่ระหว่างดำเนินการ"FULFILLED
: ผู้ใช้ได้รับสิ่งที่สั่งซื้อ สอดคล้องกับสถานะการซื้อ "รับแล้ว"
ใบเสร็จรับเงิน
ส่งประเภทนี้ในคําสั่งซื้อที่ส่งAppResponse
โดยที่ OrderState
คือ "CONFIRMED", "FULFILLED" หรือ "IN_TRANSIT" ส่งใบเสร็จเมื่อuserVisibleOrderId
พร้อมให้บริการ คุณไม่จำเป็นต้องส่งใบเสร็จในการอัปเดตครั้งต่อๆ ไป
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Receipt
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
userVisibleOrderId |
String | ต้องระบุ ต้องระบุหากคำสั่งซื้อเป็น "CONFIRMED", "IN_TRANSIT" หรือ "FULFILLED" ฟิลด์นี้เป็นรหัสที่แสดงต่อผู้ใช้รายการเดียวสําหรับคําสั่งซื้อนี้ (โดยปกติคือรหัสคําสั่งซื้อของร้านอาหาร) ซึ่งแสดงทั้งในใบเสร็จของผู้ผสานรวมและการ์ดคําสั่งซื้อของ Google ผู้ใช้ต้องใช้รหัสนี้เพื่ออ้างอิงคำสั่งซื้อสำหรับบริการลูกค้ากับผู้ให้บริการและผู้ผสานรวมได้ คุณจะต้องระบุรหัสนี้เพียงครั้งเดียวใน OrderUpdate แต่ละรายการ จนกว่าจะระบุค่านี้ ระบบจะใช้ actionOrderId เป็น userVisibleOrderId เช่น คุณอาจไม่มี userVisibleOrderId จนกว่าร้านอาหารจะยืนยันคำสั่งซื้อ เมื่อยืนยันแล้ว คุณต้องส่ง AsyncOrderUpdateRequestMessage พร้อม OrderUpdate และใบเสร็จ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Receipt
ตัวอย่าง
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท RejectionInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
type |
RejectionType |
ต้องระบุ |
|
reason |
String |
เหตุผลที่ปฏิเสธซึ่งใช้สำหรับการบันทึกภายใน ผู้ใช้จะไม่เห็นช่องนี้ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ RejectionInfo
ตัวอย่าง
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
ประเภท RejectionType
มีค่าที่เป็นไปได้ดังนี้
INELIGIBLE
: ผู้ใช้ไม่มีสิทธิ์เนื่องจากข้อกังวลด้านนโยบายหรือความเสี่ยงPAYMENT_DECLINED
: มีปัญหาเกี่ยวกับการประมวลผลการชำระเงินUNAVAILABLE_SLOT
: ไม่สามารถดำเนินการตามคำสั่งซื้อได้ในเวลาสั่งซื้อล่วงหน้าที่ระบุโดย DeliveryInfo หรือ PickupInfoPROMO_NOT_APPLICABLE
: มีปัญหาเกี่ยวกับโปรโมชันUNKNOWN
: เหตุผลอื่นๆ
ประเภทที่เกี่ยวข้องกับการชําระเงิน
ส่วนนี้จะอธิบายประเภทที่เกี่ยวข้องกับการชำระเงินซึ่งใช้สำหรับการสั่งซื้ออาหารและการดำเนินการตามคำสั่งซื้อActionProvidedPaymentOptions
ข้อกำหนดสำหรับวิธีการชำระเงินที่ระบุการดำเนินการ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท ActionProvidedPaymentOptions
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
paymentType |
PaymentType |
ต้องระบุ |
|
displayName |
String | ต้องระบุ ชื่อเครื่องมือการชำระเงินที่แสดงในใบเสร็จ ตัวอย่าง: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
ข้อมูลเพิ่มเติมสำหรับ paymentType "ON_FULFILLMENT" เช่น คุณสามารถใช้ช่องนี้เพื่อระบุว่าการจำหน่ายสินค้ารองรับการชำระเงินด้วยเงินสดหรือบัตรหรือไม่ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ ActionProvidedPaymentOptions
ตัวอย่าง
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
ประเภท AllowedAuthMethods
มีค่าที่เป็นไปได้ดังนี้
PAN_ONLY
: วิธีการตรวจสอบสิทธิ์ที่เชื่อมโยงกับบัตรสําหรับชําระเงินที่จัดเก็บไว้ในบัญชี Google ของผู้ใช้ ข้อมูลการคืนเงินประกอบด้วยหมายเลขบัญชีส่วนบุคคล (PAN) พร้อมเดือนและปีหมดอายุ
AllowedCardNetworks
ประเภท AllowedCardNetworks
มีค่าที่เป็นไปได้ดังนี้
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
ออบเจ็กต์นี้ช่วยให้คุณตั้งค่าฟิลด์เพิ่มเติมที่จะแสดงผลสําหรับที่อยู่สําหรับการเรียกเก็บเงินที่ขอได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท BillingAddressParameters
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
format |
String |
รูปแบบที่อยู่สำหรับการเรียกเก็บเงินต้องถูกต้องเพื่อทำธุรกรรมให้เสร็จสมบูรณ์ MIN: ชื่อ รหัสประเทศ และรหัสไปรษณีย์ สมบูรณ์: ชื่อ ที่อยู่ สถานที่ตั้ง ภูมิภาค รหัสประเทศ และรหัสไปรษณีย์ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ BillingAddressParameters
ตัวอย่างที่ 1
{ "format": "MIN" }
ตัวอย่างที่ 2
{ "format": "FULL" }
CardParameters
ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CardParameters
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
allowedAuthMethods |
List<Const> | ต้องระบุ ฟิลด์ที่รองรับการตรวจสอบสิทธิ์ธุรกรรมผ่านบัตร ต้องมีอย่างน้อย 1 รายการ |
|
allowedCardNetworks |
List<AllowedCardNetworks > |
ต้องระบุ เครือข่ายบัตรอย่างน้อย 1 เครือข่ายที่คุณรองรับและ Google Pay API รองรับด้วย ต้องมีอย่างน้อย 1 รายการ |
|
billingAddressRequired |
บูลีน |
ตั้งค่าเป็น "จริง" หากต้องการที่อยู่สําหรับการเรียกเก็บเงิน ขอที่อยู่สำหรับเรียกเก็บเงินเฉพาะในกรณีที่จำเป็นต้องดำเนินการธุรกรรม คำขอข้อมูลเพิ่มเติมอาจทำให้เกิดความยุ่งยากในกระบวนการชำระเงินและทำให้อัตรา Conversion ลดลง |
|
billingAddressParameters |
BillingAddressParameters |
ฟิลด์ที่คาดไว้ซึ่งจะแสดงหากตั้งค่า billingAddressRequired เป็น "จริง" |
|
cvcRequired |
บูลีน |
ตั้งค่าเป็น "จริง" หากใช้ TimesofMoney และ "เท็จ" สำหรับผู้ให้บริการประมวลผลการชำระเงินรายอื่นๆ ทั้งหมด |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CardParameters
ตัวอย่างที่ 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
ตัวอย่างที่ 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท GoogleProvidedPaymentInstrument
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
instrumentToken |
String | ต้องระบุ สตริงที่เข้ารหัส Base 64 ซึ่งมีโทเค็นการชำระเงินสำหรับการเรียกเก็บเงินจากผู้ใช้ด้วยผู้ประมวลผลการชำระเงิน Google Pay ที่เข้าร่วมตาม GoogleProvidedPaymentOptions ที่ระบุไว้ก่อนหน้านี้ |
|
billingAddress |
PostalAddress |
ที่อยู่สําหรับเรียกเก็บเงิน |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ GoogleProvidedPaymentInstrument
ตัวอย่าง
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
ข้อกำหนดสำหรับวิธีการชำระเงินที่ Google มีให้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท GoogleProvidedPaymentOptions
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
facilitationSpecification |
String |
JSON ของ PaymentDataRequest เป็นสตริง ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์ |
|
supportedCardNetworks |
List<SupportedCardNetworks > |
ให้ใช้ facilitationSpecification แทน ประเภทเครือข่ายบัตรที่ตัวแทนรองรับ ช่องนี้เลิกใช้งานแล้ว |
|
prepaidCardDisallowed |
บูลีน |
ให้ใช้ facilitationSpecification แทน อนุญาตให้ใช้บัตรแบบชำระเงินล่วงหน้าเป็นประเภทการชำระเงินหรือไม่ ช่องนี้เลิกใช้งานแล้ว |
|
billingAddressRequired |
บูลีน |
ให้ใช้ facilitationSpecification แทน จำเป็นต้องระบุที่อยู่สำหรับการเรียกเก็บเงินหรือไม่ ช่องนี้เลิกใช้งานแล้ว |
|
tokenizationParameters |
TokenizationParameters |
ช่องนี้เลิกใช้งานแล้ว |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ GoogleProvidedPaymentOptions
ตัวอย่างที่ 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\"}}" }
ตัวอย่างที่ 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 }
ตัวอย่างที่ 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท MerchantInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
merchantId |
String |
ตัวระบุผู้ขายของ Google ที่ Google Pay ออกให้คุณ |
|
merchantName |
String | ต้องระบุ ชื่อผู้ขายที่เข้ารหัสเป็น UTF-8 ชื่อผู้ขายจะแสดงในใบแจ้งหนี้ |
OnFulfillmentPaymentData
ใช้ออบเจ็กต์นี้เพื่อส่งข้อมูลเพิ่มเติมสำหรับ PaymentType "ON_FULFILLMENT"
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OnFulfillmentPaymentData
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
supportedPaymentOptions |
List<PaymentOptionsEnums > |
รายการตัวเลือกการชำระเงินที่พร้อมให้บริการแก่ผู้ใช้ ณ เวลาที่ดำเนินการตามคำสั่งซื้อ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OnFulfillmentPaymentData
ตัวอย่าง
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
พารามิเตอร์
กำหนดประเภทที่เกี่ยวข้องกับ TokenizationParameters
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Parameters
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
gateway |
String | ต้องระบุ ตัวอย่าง: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | คู่คีย์-ค่าเพิ่มเติม |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Parameters
ตัวอย่างที่ 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
ตัวอย่างที่ 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentDataRequest
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
apiVersion |
Const | ต้องระบุ เวอร์ชันหลักของ API ค่า: |
|
apiVersionMinor |
Const | ต้องระบุ เวอร์ชันย่อยของ API ค่า: |
|
merchantInfo |
MerchantInfo |
ต้องระบุ (รหัสผู้ขาย Google Pay) ข้อมูลเกี่ยวกับผู้ขายที่ขอข้อมูลการชำระเงิน |
|
allowedPaymentMethods |
List<PaymentMethod > |
ต้องระบุ ระบุการรองรับวิธีการชำระเงินอย่างน้อย 1 วิธีซึ่ง Google Pay API รองรับ |
|
transactionInfo |
TransactionInfo |
ต้องระบุ รายละเอียดเกี่ยวกับการให้สิทธิ์ธุรกรรมโดยขึ้นอยู่กับว่าผู้ใช้ยอมรับธุรกรรมหรือไม่ ช่องนี้ประกอบด้วยราคารวมและสถานะราคา |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentDataRequest
ตัวอย่าง
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
ข้อมูลเกี่ยวกับการชำระเงินสำหรับคำสั่งซื้อ
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
displayName |
String | ต้องระบุ ชื่อเครื่องมือการชำระเงินที่ผู้ใช้มองเห็นได้เพื่อแสดงในใบเสร็จ |
|
paymentType |
PaymentType |
ต้องระบุ |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
โทเค็นที่การดำเนินการใช้ได้ โปรดระบุเฉพาะในกรณีที่คุณระบุ GoogleProvidedPaymentOptions เป็นตัวเลือกการชำระเงินใน CheckoutResponseMessage |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentInfo
ตัวอย่างที่ 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
ตัวอย่างที่ 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentMethod
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
type |
Const | ต้องระบุ ตัวระบุสั้นๆ สำหรับวิธีการชำระเงินที่รองรับ ปัจจุบันรองรับเฉพาะ CARD เท่านั้น ค่า: |
|
parameters |
CardParameters |
ต้องระบุ พารามิเตอร์ที่จําเป็นสําหรับกําหนดค่าประเภทวิธีการชําระเงินที่ระบุ |
|
tokenizationSpecification |
TokenizationSpecification |
ต้องระบุ กำหนดค่าบัญชีหรือผู้ให้บริการการถอดรหัสเพื่อรับข้อมูลการชำระเงิน พร็อพเพอร์ตี้นี้จำเป็นสำหรับวิธีการชำระเงินแบบบัตร |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentMethod
ตัวอย่าง
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentOptions
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม | |||
googleProvidedOptions |
กลุ่ม 1 | GoogleProvidedPaymentOptions |
ใช้ร่วมกันไม่ได้กับ actionProvidedOptions ใช้สำหรับการชำระเงินออนไลน์โดยใช้ gPay |
actionProvidedOptions |
กลุ่ม 2 | ActionProvidedPaymentOptions |
ใช้ร่วมกันไม่ได้กับ googleProvidedOptions ใช้สำหรับ "ชำระเงินเมื่อนำส่ง" หรือ "ชำระเงินเมื่อดำเนินการตามคำสั่งซื้อ" |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentOptions
ตัวอย่างที่ 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\"}}" } }
ตัวอย่างที่ 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
ตัวอย่างที่ 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
ประเภท PaymentOptionsEnums
มีค่าที่เป็นไปได้ดังนี้
Cash
Card
UPI
Paytm
PaymentType
ประเภท PaymentType
มีค่าที่เป็นไปได้ดังนี้
PAYMENT_CARD
: สำหรับ GoogleProvidedPaymentOptionsON_FULFILLMENT
: สำหรับ ActionProvidedPaymentOptions
SupportedCardNetworks
กำหนดประเภทที่เกี่ยวข้องกับGoogleProvidedPaymentOptions
ประเภท SupportedCardNetworks
มีค่าที่เป็นไปได้ดังนี้
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
กำหนดประเภทที่เกี่ยวข้องกับGoogleProvidedPaymentOptions
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TokenizationParameters
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
ต้องระบุ ให้ใช้ facilitationSpecification แทน ประเภทโทเค็นที่ยอมรับ |
|
parameters |
Parameters |
ให้ใช้ facilitationSpecification แทน |
TokenizationSpecification
ออบเจ็กต์นี้ช่วยให้คุณกำหนดค่าบัญชีเพื่อรับข้อมูลการชำระเงินแบบเรียกเก็บเงินได้
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TokenizationSpecification
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
type |
Const | ต้องระบุ |
|
parameters |
Parameters |
ต้องระบุ |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TokenizationSpecification
ตัวอย่างที่ 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
ตัวอย่างที่ 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
ออบเจ็กต์นี้อธิบายธุรกรรมที่กําหนดความสามารถในการชําระเงินของผู้ชําระเงิน ใช้เพื่อแสดงกล่องโต้ตอบการกันวงเงินบัตรเครดิต/บัตรเดบิต
ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TransactionInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
currencyCode |
String | ต้องระบุ รหัสสกุลเงินที่เป็นตัวอักษรตามมาตรฐาน ISO 4217 |
|
transactionId |
String |
รหัสที่ไม่ซ้ำกันซึ่งระบุถึงธุรกรรมที่พยายามทำ ผู้ขายอาจใช้รหัสที่มีอยู่หรือสร้างรหัสเฉพาะสำหรับการพยายามทำธุรกรรมผ่าน Google Pay คุณต้องกรอกข้อมูลในช่องนี้เมื่อส่งการเรียกกลับไปยัง Google Transaction Events API |
|
totalPriceStatus |
Const | ต้องระบุ ใช้ "ESTIMATED" เป็นค่าเริ่มต้น ราคารวมอาจปรับตามรายละเอียดของคำตอบ เช่น ภาษีการขายที่เรียกเก็บตามที่อยู่สำหรับการเรียกเก็บเงิน ค่า: |
|
totalPrice |
String | ต้องระบุ มูลค่าเงินทั้งหมดของธุรกรรมที่มีทศนิยม 2 ตำแหน่ง (ไม่บังคับ) ช่องนี้ควรมีค่าเดียวกับ cart.totalPrice |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TransactionInfo
ตัวอย่าง
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }