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