ประเภทฐาน
รถเข็น
มีรายละเอียดคำสั่งซื้อ และระบุว่าคำขอเป็นคำขอสำหรับไปรับที่ร้านหรือจัดส่ง รถเข็นจะมีรายละเอียดการจัดส่ง ค่าบริการ และที่อยู่สำหรับนำส่งด้วย ออบเจ็กต์Cart
กำหนดใน Checkout AppRequest
.f
คุณรวมสำเนาของรถเข็นไว้ใน Checkout AppResponse
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท Cart
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
ข้อเสีย |
ประเภทของออบเจ็กต์นี้ ข้ามช่องนี้หากออบเจ็กต์รถเข็นหลักเป็นส่วนหนึ่งของ ProposedOrder ค่า: |
|
id |
String |
รหัส (ไม่บังคับ) ของรถเข็น |
|
merchant |
Merchant |
ผู้ขายที่เป็นพาร์ทเนอร์กับรถเข็นนี้ |
|
lineItems |
รายการ<LineItem > |
ต้องระบุ รายการสินค้าหรือบริการที่ผู้ใช้สั่งซื้อ ต้องมีไม่น้อยกว่า 1 รายการ |
|
promotions |
รายการ<Promotion > |
โปรโมชันที่ใช้ในรถเข็นนี้ ขณะนี้รองรับโปรโมชันเพียง 1 รายการ |
|
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{hours}:{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#Included_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
: LineItem, FulfillmentOption หรือโปรโมชันมีข้อมูลที่ไม่ถูกต้องNOT_FOUND
: ไม่พบรายการโฆษณา, FulfillmentOption หรือโปรโมชันPRICE_CHANGED
: ราคาสินค้ามีการเปลี่ยนแปลง
FeeAmountRange
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FeeAmountRange
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
minFeeAmount |
Money |
ขอบเขตล่างของจำนวนเงินค่าธรรมเนียมที่เรียกเก็บ.. |
|
maxFeeAmount |
Money |
ขอบเขตบนของจำนวนเงินค่าธรรมเนียมที่เรียกเก็บ.. |
FeePercentRange
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FeePercentRange
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
minFeePercent |
Number |
ขอบเขตล่างของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ |
|
maxFeePercent |
Number |
ขอบเขตบนของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ |
FoodCartExtension
มีรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากำหนด Fulfillment
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FoodCartExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
ข้อเสีย |
ประเภทของส่วนขยายนี้ ช่องนี้จะมีการตั้งค่าเป็น "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 |
ข้อเสีย | ต้องระบุ ประเภทของส่วนขยายนี้ ค่า: |
|
foodOrderErrors |
รายการ<FoodOrderError > |
ต้องระบุ อาร์เรย์ของออบเจ็กต์ FoodOrderError ที่อธิบายข้อผิดพลาดที่เกิดขึ้น แนะนำให้มีข้อผิดพลาด 1 รายการต่อรถเข็นหรือต่อรายการ ต้องมีไม่น้อยกว่า 1 รายการ |
|
correctedProposedOrder |
ProposedOrder |
ต้องระบุเมื่อ ProposedOrder ใหม่ซึ่งมีการแก้ไขแล้ว แสดงผลออบเจ็กต์นี้หากมีข้อผิดพลาดที่กู้คืนได้ใน ProposedOrder เดิม เช่น การเปลี่ยนแปลงราคาของรายการโฆษณาอย่างน้อย 1 รายการในรถเข็นเป็นข้อผิดพลาดที่กู้คืนได้ ข้อผิดพลาดที่กู้คืนได้ซึ่งมี ProposedOrder ที่ถูกต้องได้จะเข้าสู่ระยะยืนยันแทนที่จะต้องให้ผู้ใช้ตรวจสอบรถเข็นของตน |
|
paymentOptions |
PaymentOptions |
ต้องระบุเมื่อ มีการเลือกตัวเลือกการชำระเงินเริ่มต้นให้ผู้ใช้ |
|
additionalPaymentOptions |
รายการ<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 |
ข้อเสีย | ต้องระบุ ประเภทของส่วนขยายนี้ ช่องนี้จะมีการตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" เสมอ ค่า: |
|
options |
รายการ<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 |
รายการ<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 |
จำนวนเต็ม | ต้องระบุเมื่อ จำนวนใหม่ที่พร้อมใช้งานของสินค้าที่ทำให้เกิดข้อผิดพลาด จำเป็นต้องระบุเมื่อข้อผิดพลาดเป็น "ไม่ถูกต้อง" หรือ "NOT_FOUND" เท่านั้น ค่าควรเป็นศูนย์สำหรับ "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 |
ข้อเสีย |
ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" เสมอ ค่า: |
|
availableFulfillmentOptions |
รายการ<FulfillmentOption > |
แสดงตัวเลือกการดำเนินการตามคำสั่งซื้อที่ใช้ได้กับคำสั่งซื้อ |
|
optinForRemarketing |
บูลีน |
คำขอของผู้ใช้ในการเลือกใช้ช่องทางการตลาด โดยค่าเริ่มต้น คุณจะส่งเนื้อหาการตลาดไม่ได้โดยไม่ได้รับความยินยอมจากผู้ใช้ หากการเลือกใช้สำหรับรีมาร์เก็ตติ้งเป็นจริง คุณสามารถติดตามผู้ใช้รายนั้นได้ หาก OptinForRemarketing เป็นเท็จหรือไม่พบ คุณจะต้องรักษาสถานะการสมัครรับข้อมูลในระบบของคุณให้ตามที่เป็นอยู่ โดยที่ผู้ใช้ไม่สามารถเลือกไม่ใช้ผ่าน Google ทำได้โดยผ่านฟังก์ชันการยกเลิกสมัครรับข้อมูลที่มีให้ในช่องทางการตลาดของคุณเท่านั้น แฟล็กนี้จะปรากฏเฉพาะใน SendOrderRequestMessage เท่านั้น |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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 ตัวเลือก (ขณะนี้รองรับเพียงตัวเลือกเดียว) คุณระบุตัวเลือกเริ่มต้นเป็นLineItem
ในProposedOrder.otherItems
offerId
ของFulfillmentOption
ควรตรงกับรหัสของLineItem
ที่ระบุไว้ในProposedOrder.otherItems
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FulfillmentOption
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
offerId |
String |
ตัวระบุที่ไม่ซ้ำกันสำหรับตัวเลือก Fulfillment นี้ หากมี |
|
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
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้ | |||
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 สร้างขึ้นเมื่อสร้างคำสั่งซื้อ สำหรับบรรทัดรายการใน 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 ชิ้นที่มีราคาพื้นฐาน 150 บาทและส่วนเสริม 30 บาท ราคาจะเท่ากับ 180 บาท สำหรับพิซซ่า 2 ถาด (จำนวน = 2) ในราคาฐาน 150 บาท และแต่ละพิซซ่ามีส่วนเสริม 30 บาท ราคาจะเท่ากับ 360 บาท บรรทัดรายการแต่ละรายการควรมีราคา แม้ว่าราคาจะเป็น "0" ก็ตาม เมื่อพิมพ์คือ DISCOUNT ให้ระบุค่าเป็นลบ (เช่น "-2") |
|
subLines |
รายการ<SublineNote > |
ไม่บังคับและใช้ได้ในกรณีที่ประเภทเป็น "REGULAR" เท่านั้น ระบบอาจส่งหมายเหตุเฉพาะสินค้าจากผู้ใช้ในช่องนี้ในคำขอชำระเงินและคำขอส่งคำสั่งซื้อ ตรวจสอบว่าผู้ขายได้รับหมายเหตุเมื่อมีให้ จะอยู่ในคำขอเป็น 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
: รายการโฆษณาแบบไม่มีค่าใช้จ่าย โดยทั่วไปจะสงวนไว้สำหรับ SendOrderRequestMessage สำหรับเคล็ดลับที่ผู้ใช้เลือก ใช้กับ 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 ใช้กฎต่อไปนี้: หากหน่วยเป็นบวก นาโนต้องเป็นบวกหรือ 0 หากหน่วยเป็น 0 นาโนอาจเป็นบวก 0 หรือค่าลบ หากหน่วยเป็นลบ นาโนต้องเป็นลบหรือ 0 เช่น $-1.75 จะแสดงเป็นหน่วย = -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 | ต้องระบุ รหัสที่ไม่ซ้ำกันของคำสั่งซื้อในระบบของผู้รวมระบบที่ใช้เพื่อระบุลำดับในการส่งอัปเดต หากไม่ได้ระบุ Revenue.user_visible_order_id อย่างน้อย 1 ครั้งใน OrderUpdate สำหรับคำสั่งซื้อ "CREATED" รหัสนี้จะเป็นรหัสที่ผู้ใช้มองเห็นได้ซึ่งป้อนไว้ในการ์ดใบสั่งซื้อของ Google |
|
orderState |
OrderState |
ต้องระบุ สถานะใหม่ของคำสั่งซื้อ |
|
lineItemUpdates |
แผนที่<String, LineItemUpdate > |
||
updateTime |
การประทับเวลา ISO | ต้องระบุ เวลาที่อัปเดตคำสั่งซื้อ |
|
orderManagementActions |
รายการ<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{hours}:{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#Included_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 |
รายการ<LineItem > |
สินค้าที่ผู้ให้บริการเพิ่มเข้ามา เช่น ค่าจัดส่ง ค่าธรรมเนียมอื่นๆ และภาษี สินค้าอื่นๆ อาจมีค่าธรรมเนียมและ/หรือส่วนลดที่ผู้ใช้เพิ่มด้วย ต้องมีไม่เกิน 10 รายการ |
|
image |
Image |
รูปภาพที่เชื่อมโยงกับคำสั่งซื้อที่เสนอ |
|
totalPrice |
Price |
ต้องระบุ ราคารวมของคำสั่งซื้อที่เสนอ |
|
extension |
FoodOrderExtension |
ต้องระบุ กำหนดข้อมูลการดำเนินการตามคำสั่งซื้อสำหรับการสั่งอาหาร |
|
disclaimers |
รายการ<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 |
รายการ<Input > |
ต้องระบุ มีอาร์กิวเมนต์ที่คาดไว้สำหรับการชำระเงินในรถเข็น ต้องมี 1 รายการเท่านั้น |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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
ที่มี Intent actions.foodordering.intent.CHECKOUT
SubmitOrderRequestMessage
SubmitOrderRequestMessage
เป็น AppRequest
ที่มี Intent actions.foodordering.intent.TRANSACTION_DECISION
การสนทนา
Conversation
ไม่ซ้ำกันสำหรับ 1 เซสชันเท่านั้น คุณสามารถใช้เพื่อลิงก์การดําเนินการ 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 |
รายการ<Argument > |
ต้องระบุ มีรถเข็นที่จะชำระเงินหรือสั่งซื้อ ต้องมี 1 รายการเท่านั้น |
อาร์กิวเมนต์
มีรายละเอียดเกี่ยวกับอาหารที่ผู้ใช้ต้องการชำระเงิน ส่วนการชำระเงินจะใช้ได้เฉพาะส่วนขยายเท่านั้น สำหรับคำสั่งซื้อที่ส่ง ระบบจะใช้เฉพาะ transactionDecisionValue เท่านั้น
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท Argument
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้ | |||
extension |
กลุ่ม 1 | Cart |
ระบุรายละเอียดของรายการอาหารที่ผู้ใช้ต้องการชำระเงิน |
transactionDecisionValue |
กลุ่ม 2 | TransactionDecisionValue |
มีคำสั่งซื้อพร้อมรายละเอียดการชำระเงิน |
การตอบกลับการดำเนินการ
AppResponse
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท AppResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
expectUserResponse |
ข้อเสีย |
ตั้งค่าเป็น false ค่า: |
|
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
การตอบกลับการชำระเงินในรถเข็นหรือ SendOrderRequestMessage
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FinalResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
richResponse |
RichResponse |
ต้องระบุ ประกอบด้วยการตอบกลับ CheckoutRequestMessage หรือ SendOrderRequestMessage |
CheckoutResponse
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท CheckoutResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
proposedOrder |
ProposedOrder |
ต้องระบุ คำสั่งซื้อที่เสนอเพื่อใช้สำหรับธุรกรรม |
|
paymentOptions |
PaymentOptions |
ต้องระบุ เลือกตัวเลือกการชำระเงินเริ่มต้นให้ผู้ใช้แล้ว |
|
additionalPaymentOptions |
รายการ<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." } } ] }
รายการ
มีการตอบกลับการชำระค่าสินค้าในรถเข็นหรือ SendOrderRequestMessage
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท Item
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
structuredResponse |
StructuredResponse |
ต้องระบุ |
RichResponse
มีการตอบกลับสำหรับการชำระเงินในรถเข็น
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท RichResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
items |
รายการ<Item > |
ต้องระบุ ต้องมี 1 รายการเท่านั้น |
StructuredResponse
สำหรับ CheckoutResponseMessage อาจเป็นข้อใดข้อหนึ่งต่อไปนี้: CheckoutResponse ระบุว่าการชำระเงินเสร็จสมบูรณ์ หรือ FoodErrorExtension: ระบุความล้มเหลวในระหว่างการชำระเงิน คำตอบที่ได้อาจเป็นข้อเสนอ ProposedOrder และ PaymentOptions ที่แก้ไขแล้ว หรือข้อความแสดงข้อผิดพลาดที่ไม่มี PaymentOptions สำหรับ SendOrderResponseMessage จะสามารถใช้ได้เฉพาะ orderUpdate เท่านั้น
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท StructuredResponse
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้ | |||
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 เป็น "ยกเลิก" เช่น |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CancellationInfo
ตัวอย่าง
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
ประเภทนี้จะให้ข้อมูลช่วงเวลาโดยประมาณแก่ผู้ใช้ว่าจะนำส่งคำสั่งซื้อหรือพร้อมให้มารับเมื่อใด ส่งส่วนขยายนี้ใน OrderUpdate
เมื่อใดก็ตามที่ข้อมูลมีหรือมีการเปลี่ยนแปลงนับตั้งแต่การส่งครั้งล่าสุด
ระบุค่าประมาณอย่างระมัดระวังสำหรับช่วงเวลาการดำเนินการตามคำสั่งซื้อเพื่อให้ผู้ใช้เป็นไปตามความคาดหวังของผู้ใช้อย่างสม่ำเสมอ เช่น หากคาดว่าคำสั่งซื้อจะได้รับการนำส่งวันนี้เวลา 13.00 น. คุณควรส่งช่วงเวลาโดยประมาณที่สอดคล้องกับรูปแบบต่างๆ เนื่องจากสภาพการจราจร เช่น วันนี้เวลา 12.45 น. ถึง 13.15 น.
ระยะเวลาหรือการประทับเวลา ISO 8601 จะตีความได้ว่าจะหมายถึงช่วงจาก updateTime
ของ OrderUpdate
(ซึ่งก็คือ "ตอนนี้") จนถึง updateTime
บวก duration
อย่าใช้รูปแบบนี้เว้นแต่ "ตอนนี้" จริงๆ แล้วเป็นความคาดหวังที่สมเหตุสมผล
ช่วง ISO 8601 จะตีความได้เพื่อหมายถึงช่วงเวลาจากจุดเริ่มต้นถึงจุดสิ้นสุดของช่วงเวลา
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท FoodOrderUpdateExtension
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
@type |
ข้อเสีย |
ประเภทของส่วนขยายนี้ ช่องนี้จะมีการตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension" เสมอ ค่า: |
|
estimatedFulfillmentTimeIso8601 |
String |
เวลาโดยประมาณที่ระบบจะนำส่งสินค้าที่สั่งซื้อหรือพร้อมให้มารับสินค้า สตริงต้องอยู่ในรูปแบบ ISO 8601 และต้องสอดคล้องกับช่วงเวลา ไม่ใช่เวลาคงที่แบบเดียว รูปแบบที่ยอมรับได้ ได้แก่ ช่วงเวลา ระยะเวลา และวันที่/เวลา ระบบจะส่งช่องนี้ใน SendOrderResponseMessage หรือ AsyncOrderUpdateRequestMessage เมื่อข้อมูลพร้อมใช้งานหรือมีการเปลี่ยนแปลง เช่น การมาถึงก่อนหรือล่าช้า เช่น |
|
foodOrderErrors |
รายการ<FoodOrderError > |
อธิบายข้อผิดพลาดที่เกิดขึ้นหลังการสั่งซื้อ แนะนำให้มีข้อผิดพลาด 1 รายการต่อรถเข็นหรือต่อรายการ ใช้ FoodOrderUpdateExtension.FoodOrderErrors สำหรับข้อผิดพลาดใดๆ ที่ไม่ครอบคลุมใน RejectedionInfo ต้องมีไม่น้อยกว่า 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
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้ | |||
deliveryTime |
กลุ่ม 1 | การประทับเวลา ISO |
ใช้ค่าประมาณFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension |
pickupTime |
กลุ่ม 2 | การประทับเวลา ISO |
ใช้ค่าประมาณFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FulfillmentInfo
ตัวอย่างที่ 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
ตัวอย่างที่ 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท InTransitInfo
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
updatedTime |
การประทับเวลา ISO |
ใช้ค่าประมาณFulfillmentTimeIso8601 ในข้อความ 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
การดำเนินการที่ตามมาในแต่ละครั้ง
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 ผู้ใช้ต้องใช้รหัสนี้เพื่ออ้างอิงคำสั่งซื้อของตนสำหรับการบริการลูกค้ากับผู้ให้บริการและผู้รวมระบบ คุณต้องระบุรหัสนี้เพียงครั้งเดียวในคำสั่งซื้อใดก็ตามที่ระบุ 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 |
ข้อมูลเพิ่มเติมสำหรับประเภทการชำระเงิน "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 |
รายการ<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 | ต้องระบุ สตริงที่เข้ารหัส 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 |
PaymentDataRequest JSON เป็นสตริง ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์ |
|
supportedCardNetworks |
รายการ<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 |
รายการ<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 |
ข้อเสีย | ต้องระบุ เวอร์ชัน API หลัก ค่า: |
|
apiVersionMinor |
ข้อเสีย | ต้องระบุ เวอร์ชัน API รอง ค่า: |
|
merchantInfo |
MerchantInfo |
ต้องระบุ (รหัสผู้ขาย Google Pay) ข้อมูลเกี่ยวกับผู้ขายที่ขอข้อมูลการชำระเงิน |
|
allowedPaymentMethods |
รายการ<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 |
ข้อเสีย | ต้องระบุ ตัวระบุสั้นๆ สำหรับวิธีการชำระเงินที่รองรับ ขณะนี้รองรับเฉพาะ CARD ค่า: |
|
parameters |
CardParameters |
ต้องระบุ ต้องมีพารามิเตอร์สำหรับกำหนดค่าประเภทวิธีการชำระเงินที่ระบุ |
|
tokenizationSpecification |
TokenizationSpecification |
ต้องระบุ กำหนดค่าบัญชีหรือผู้ให้บริการถอดรหัสเพื่อรับข้อมูลการชำระเงิน ต้องระบุพร็อพเพอร์ตี้นี้สำหรับวิธีการชำระเงินของ CARD |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentMethod
ตัวอย่าง
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้สำหรับประเภท PaymentOptions
พร็อพเพอร์ตี้ | ประเภท | คำอธิบาย | |
---|---|---|---|
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้ | |||
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 |
ข้อเสีย | ต้องระบุ |
|
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 |
ข้อเสีย | ต้องระบุ ใช้ "ESTIMATED" เป็นค่าเริ่มต้น ราคารวมอาจปรับเปลี่ยนตามรายละเอียดของการตอบกลับ เช่น ภาษีการขายที่รวบรวมตามที่อยู่สำหรับการเรียกเก็บเงิน ค่า: |
|
totalPrice |
String | ต้องระบุ มูลค่าตัวเงินรวมของธุรกรรมที่มีทศนิยม 2 ตำแหน่ง (ไม่บังคับ) ช่องนี้ควรมีค่าเดียวกับcart.totalPrice |
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TransactionInfo
ตัวอย่าง
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }