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