สคีมาการดำเนินการตามคำสั่งซื้อ

หน้านี้อธิบายเพย์โหลดของเว็บเซอร์วิสการดำเนินการตามคำสั่งซื้อ (Ordering End-to-End API) เมื่อทำงานร่วมกับ Ordering End-to-End Built-in Action API หากต้องการข้อมูลเวอร์ชันที่เครื่องอ่านได้ โปรดดาวน์โหลดสคีมา JSON

ประเภทฐาน

รถเข็น

มีรายละเอียดคำสั่งซื้อ รวมถึงระบุว่าคำขอเป็นการมารับสินค้าหรือการนำส่ง นอกจากนี้ รถเข็นยังมีรายละเอียดการนำส่ง ค่าบริการสมนาคุณ และที่อยู่สำหรับจัดส่งด้วย ออบเจ็กต์ Cart ได้รับการกําหนดไว้ใน Checkout AppRequest.f คุณรวมสําเนารถเข็นไว้ใน Checkout AppResponse

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Cart

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ประเภทของออบเจ็กต์นี้ ละเว้นช่องนี้หากออบเจ็กต์รถเข็นหลักเป็นส่วนหนึ่งของ ProposedOrder

ค่า: type.googleapis.com/google.actions.v2.orders.Cart

id String

รหัสของรถเข็น (ไม่บังคับ)

merchant Merchant

ผู้ขายที่เชื่อมโยงกับรถเข็นนี้

lineItems List<LineItem>

ต้องระบุ

รายการสินค้าหรือบริการที่ผู้ใช้สั่งซื้อ

ต้องมีอย่างน้อย 1 รายการ

promotions List<Promotion>

โปรโมชันที่ใช้ในรถเข็นนี้ ปัจจุบันระบบรองรับโปรโมชันเพียงรายการเดียว

notes String

หมายเหตุเกี่ยวกับคำสั่งซื้อหรือวิธีการนำส่ง

extension FoodCartExtension

กําหนดรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากําหนดการดําเนินการตามคำสั่งซื้อ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Cart

ตัวอย่างที่ 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Cucina Venti"
  },
  "lineItems": [
    {
      "name": "Sizzling Prawns Dinner",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "16",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

ตัวอย่างที่ 2

{
  "merchant": {
    "id": "https://www.exampleprovider.com/merchant/id1",
    "name": "Falafel Bite"
  },
  "lineItems": [
    {
      "name": "Pita Chips",
      "type": "REGULAR",
      "id": "sample_item_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "2",
          "nanos": 750000000
        }
      },
      "subLines": [
        {
          "note": "Notes for this item."
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
        "options": [
          {
            "id": "sample_addon_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
            "name": "Honey Mustard",
            "price": {
              "currencyCode": "USD"
            },
            "quantity": 1
          },
          {
            "id": "sample_addon_offer_id_2",
            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
            "name": "BBQ Sauce",
            "price": {
              "currencyCode": "USD",
              "nanos": 500000000
            },
            "quantity": 1
          }
        ]
      }
    },
    {
      "name": "Chicken Shwarma Wrap",
      "type": "REGULAR",
      "id": "sample_item_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "8"
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Greek Salad",
      "type": "REGULAR",
      "id": "sample_item_offer_id_3",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "9",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    },
    {
      "name": "Prawns Biryani",
      "type": "REGULAR",
      "id": "sample_item_offer_id_4",
      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
      "quantity": 1,
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "15",
          "nanos": 990000000
        }
      },
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
      }
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
    "fulfillmentPreference": {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P90M"
        }
      }
    },
    "location": {
      "coordinates": {
        "latitude": 37.788783,
        "longitude": -122.41384
      },
      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
      "zipCode": "94043",
      "city": "Mountain View",
      "postalAddress": {
        "regionCode": "US",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1350 Charleston Road"
        ]
      },
      "notes": "Gate code is #111"
    }
  }
}

รายชื่อติดต่อ

ระบุรายละเอียดเกี่ยวกับผู้รับคำสั่งซื้อ ซึ่งมีให้บริการเป็นภาษา AppResponse เท่านั้น

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Contact

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
displayName String

ชื่อของผู้รับคำสั่งซื้อตามที่คุณต้องการให้แสดง ใช้ช่องนี้หากไม่ได้ระบุ firstName และ lastName

ตัวอย่าง: Lovefood Ordering

email String

อีเมลของผู้ที่ได้รับคำสั่งซื้อ

ตัวอย่าง: ilovefood@example.com

firstName String

ชื่อของผู้รับคำสั่งซื้อ

ตัวอย่าง: Lovefood

lastName String

นามสกุลของผู้รับคำสั่งซื้อ

ตัวอย่าง: Ordering

phoneNumber String

หมายเลขโทรศัพท์ของผู้รับคำสั่งซื้อ รวมถึงรหัสประเทศ

ตัวอย่าง: +16501234567

emailVerified บูลีน

ระบุว่าบุคคลที่รับคำสั่งซื้อเข้าสู่ระบบด้วยบัญชี Google ของตนหรือไม่

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Contact

ตัวอย่าง

{
  "displayName": "Lovefood Ordering",
  "email": "ilovefood@example.com",
  "phoneNumber": "+16501234567"
}

CustomPushMessage

มี OrderUpdate สำหรับคำขอ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CustomPushMessage

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
orderUpdate OrderUpdate

ต้องระบุ

ข้อมูลที่อัปเดตสำหรับคำสั่งซื้อ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CustomPushMessage

ตัวอย่าง

{
  "orderUpdate": {
    "actionOrderId": "sample_action_order_id",
    "orderState": {
      "state": "IN_TRANSIT",
      "label": "Order is on the way"
    },
    "inTransitInfo": {
      "updatedTime": "2017-07-17T12:00:00Z"
    },
    "updateTime": "2017-07-17T12:00:00Z",
    "orderManagementActions": [
      {
        "type": "CUSTOMER_SERVICE",
        "button": {
          "title": "Contact customer service",
          "openUrlAction": {
            "url": "mailto:support@example.com"
          }
        }
      },
      {
        "type": "EMAIL",
        "button": {
          "title": "Email restaurant",
          "openUrlAction": {
            "url": "mailto:person@example.com"
          }
        }
      },
      {
        "type": "CALL_RESTAURANT",
        "button": {
          "title": "Call restaurant",
          "openUrlAction": {
            "url": "tel:+16505554679"
          }
        }
      }
    ],
    "receipt": {
      "userVisibleOrderId": "userVisibleId1234"
    },
    "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
    }
  }
}

DeliveryInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท DeliveryInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
deliveryTimeIso8601 String

เวลานำส่งโดยประมาณในรูปแบบการประทับเวลา ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M แสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งบอกว่าเวลานำส่งที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. ใช้เพื่ออัปเดตเวลานำส่งโดยประมาณระหว่างการตอบกลับการชำระเงิน

ตัวอย่าง: PT90M

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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 หรือ PickupInfo
  • OUT_OF_SERVICE_AREA: นำส่งคำสั่งซื้อไปยังที่อยู่ของผู้ใช้ไม่ได้
  • PROMO_EXPIRED: ใช้ไม่ได้เนื่องจากโปรโมชันหมดอายุแล้ว
  • PROMO_NOT_APPLICABLE: รหัสข้อผิดพลาดทั่วไปเพื่อจับทุกกรณีที่ใช้รหัสโปรโมชันไม่สำเร็จ หากข้อผิดพลาดเกี่ยวกับรหัสโปรโมชันอื่นๆ ไม่ได้ตรงกับข้อผิดพลาดนี้
  • PROMO_NOT_RECOGNIZED: ระบบไม่รู้จักรหัสคูปอง
  • PROMO_ORDER_INELIGIBLE: คำสั่งซื้อปัจจุบันไม่มีสิทธิ์ใช้คูปองนี้
  • PROMO_USER_INELIGIBLE: ผู้ใช้ปัจจุบันไม่มีสิทธิ์ใช้คูปองนี้
  • AVAILABILITY_CHANGED: สินค้าหมดแล้ว หรือมีสินค้าไม่เพียงพอที่จะตอบสนองคำขอ
  • INCORRECT_PRICE: ข้อผิดพลาดเกี่ยวกับราคาในค่าธรรมเนียมหรือราคารวม
  • INVALID: บรรทัดรายการ FulfillmentOption หรือโปรโมชันมีข้อมูลไม่ถูกต้อง
  • NOT_FOUND: ไม่พบ LineItem, FulfillmentOption หรือโปรโมชัน
  • PRICE_CHANGED: ราคาของสินค้ามีการเปลี่ยนแปลง

FeeAmountRange

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FeeAmountRange

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
minFeeAmount Money

ขอบเขตล่างของจำนวนค่าธรรมเนียมที่เรียกเก็บ

maxFeeAmount Money

ขอบเขตบนของจำนวนเงินค่าธรรมเนียมที่เรียกเก็บ

FeePercentRange

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FeePercentRange

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
minFeePercent Number

ขอบเขตล่างของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ

maxFeePercent Number

ขอบเขตบนของเปอร์เซ็นต์ค่าธรรมเนียมที่เรียกเก็บ

FoodCartExtension

มีรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากําหนดการสั่งซื้อ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodCartExtension

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodCartExtension" เสมอ

ค่า: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

ข้อมูลติดต่อของผู้ที่ได้รับคำสั่งซื้อ รายละเอียด ได้แก่ ชื่อ หมายเลขโทรศัพท์ และอีเมลของบุคคล

fulfillmentPreference FulfillmentOption

ต้องระบุ

ค่ากําหนดการดําเนินการตามคําสั่งซื้อของผู้ใช้

location Location

ใน CheckoutRequestMessage ช่องนี้จะระบุที่อยู่สำหรับจัดส่ง ซึ่งจำเป็นต้องระบุหากคำสั่งซื้อมีบริการจัดส่ง สำหรับคำสั่งซื้อที่เป็นการสั่งอาหารกลับบ้านหรือมารับเอง ช่องนี้จะไม่รวมอยู่ในข้อความ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodCartExtension

ตัวอย่างที่ 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "delivery": {
        "deliveryTimeIso8601": "P0M"
      }
    }
  },
  "location": {
    "coordinates": {
      "latitude": 37.788783,
      "longitude": -122.41384
    },
    "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
    "zipCode": "94043",
    "city": "Mountain View",
    "postalAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "1350 Charleston Road"
      ]
    },
    "notes": "Gate code is #111"
  }
}

ตัวอย่างที่ 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
  "fulfillmentPreference": {
    "fulfillmentInfo": {
      "pickup": {
        "pickupTimeIso8601": "P0M"
      }
    }
  },
  "contact": {
    "displayName": "Lovefood Ordering",
    "email": "ilovefood@example.com",
    "phoneNumber": "+16501234567"
  }
}

FoodErrorExtension

ระบุข้อผิดพลาดอย่างน้อย 1 รายการที่เกิดขึ้นขณะประมวลผลคําขอ ตารางต่อไปนี้อธิบายช่องของประเภท FoodErrorExtension คุณส่งข้อผิดพลาดได้ใน CheckoutResponse

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodErrorExtension

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ต้องระบุ

ประเภทของส่วนขยายนี้

ค่า: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors List<FoodOrderError>

ต้องระบุ

อาร์เรย์ของออบเจ็กต์ FoodOrderError ที่อธิบายข้อผิดพลาดที่เกิดขึ้น แนะนำข้อผิดพลาด 1 ข้อต่อรถเข็นหรือต่อสินค้า 1 รายการ

ต้องมีอย่างน้อย 1 รายการ

correctedProposedOrder ProposedOrder

ต้องระบุเมื่อ foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED"

ProposedOrder ใหม่ที่มีการแก้ไข แสดงผลออบเจ็กต์นี้หากมีข้อผิดพลาดที่กู้คืนได้ใน ProposedOrder เดิม ตัวอย่างเช่น การเปลี่ยนแปลงราคาของรายการโฆษณาอย่างน้อย 1 รายการในรถเข็นเป็นข้อผิดพลาดที่แก้ไขได้ ข้อผิดพลาดที่แก้ไขได้ซึ่งมี ProposedOrder ที่ถูกต้องจะไปยังระยะการยืนยันแทนที่จะกำหนดให้ผู้ใช้ต้องตรวจสอบรถเข็น

paymentOptions PaymentOptions

ต้องระบุเมื่อ foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED"

ตัวเลือกการชำระเงินเริ่มต้นที่เลือกไว้สำหรับผู้ใช้

additionalPaymentOptions List<PaymentOptions>

ตัวเลือกการชำระเงินอื่นๆ ที่พร้อมให้บริการแก่ผู้ใช้

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodErrorExtension

ตัวอย่าง

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
  "foodOrderErrors": [
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_1",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 750000000
      }
    },
    {
      "error": "PRICE_CHANGED",
      "id": "sample_item_offer_id_2",
      "description": "The price has changed.",
      "updatedPrice": {
        "currencyCode": "USD",
        "units": "8"
      }
    }
  ],
  "correctedProposedOrder": {
    "id": "sample_corrected_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "tokenizationParameters": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:publishableKey": "pk_live_stripe_client_key",
          "stripe:version": "2017-04-06"
        }
      },
      "supportedCardNetworks": [
        "AMEX",
        "DISCOVER",
        "MASTERCARD",
        "JCB",
        "VISA"
      ],
      "prepaidCardDisallowed": true
    }
  }
}

FoodItemExtension

กำหนดส่วนเสริมสำหรับรายการอาหาร

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodItemExtension

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ต้องระบุ

ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" เสมอ

ค่า: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options List<FoodItemOption>

ตัวเลือกอาจเป็นสินค้าเสริมหรือกลุ่มสินค้าเสริมที่มีชุดของส่วนเสริม

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodItemExtension

ตัวอย่าง

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
  "options": [
    {
      "id": "sample_addon_offer_id_1",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
      "name": "Honey Mustard",
      "price": {
        "currencyCode": "USD"
      },
      "quantity": 1
    },
    {
      "id": "sample_addon_offer_id_2",
      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
      "name": "BBQ Sauce",
      "price": {
        "currencyCode": "USD",
        "nanos": 500000000
      },
      "quantity": 1,
      "subOptions": [
        {
          "id": "10239138",
          "offerId": "912391723",
          "name": "Fries",
          "price": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 230000000
          },
          "quantity": 1
        }
      ]
    }
  ]
}

FoodItemOption

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodItemOption

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
id String

รหัสที่ไม่ซ้ำกันซึ่ง Google กําหนด เมื่อส่ง FoodOrderError หรือ AsyncOrderUpdateRequest ให้ใช้ช่องนี้เพื่อแยกความแตกต่างในกรณีที่รถเข็นมีสินค้ามากกว่า 1 รายการที่มี offerId เดียวกัน

ตัวอย่าง: 39231093

offerId String

รหัสข้อเสนอของสินค้า

ตัวอย่าง: 912835081

name String

ชื่อตัวเลือก

ตัวอย่าง: Honey Mustard

price Money
note String

หมายเหตุที่เกี่ยวข้องกับตัวเลือก

quantity Number

สําหรับตัวเลือกที่เป็นสินค้า ให้ระบุจํานวนสินค้า

ตัวอย่าง: 3

subOptions List<FoodItemOption>

ตัวเลือกย่อยของตัวเลือกนั้นๆ (หากมี)

ตัวอย่าง: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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

ต้องระบุเมื่อ error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND"

ต้องระบุข้อมูลในช่องนี้สำหรับข้อผิดพลาดระดับสินค้า โดยจะเป็น LineItem.id ที่ Google กำหนดสำหรับรายการเมนูหรือ FoodItemOption.id สำหรับส่วนเสริม

description String

คำอธิบายข้อผิดพลาด คำอธิบายนี้มีไว้สำหรับการบันทึกภายในและผู้ใช้จะไม่เห็น

updatedPrice Money

ต้องระบุเมื่อ error = "PRICE_CHANGED"

ราคาใหม่ของสินค้าที่ทำให้เกิดข้อผิดพลาด จำเป็นต้องระบุเฉพาะในกรณีที่เกิดข้อผิดพลาด "PRICE_CHANGED"

availableQuantity จำนวนเต็ม

ต้องระบุเมื่อ error = "INVALID", or "NOT_FOUND"

จำนวนสินค้าใหม่ที่มีจำหน่ายซึ่งทำให้เกิดข้อผิดพลาด ซึ่งจำเป็นต้องมีก็ต่อเมื่อเกิดข้อผิดพลาด "INVALID" หรือ "NOT_FOUND" ค่าควรเป็น 0 สำหรับ "INVALID" และ "NOT_FOUND"

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderError

ตัวอย่างที่ 1

{
  "error": "CLOSED",
  "description": "This store is currently reachable. Please try again later."
}

ตัวอย่างที่ 2

{
  "error": "PRICE_CHANGED",
  "id": "french_fries",
  "description": "The price has changed.",
  "updatedPrice": {
    "currencyCode": "USD",
    "units": "2",
    "nanos": 750000000
  }
}

FoodOrderExtension

มีข้อมูลการดำเนินการตามคำสั่งซื้อ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodOrderExtension

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" เสมอ

ค่า: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions List<FulfillmentOption>

แสดงตัวเลือกการดำเนินการตามคำสั่งซื้อที่ใช้ได้

optinForRemarketing บูลีน

คำขอของผู้ใช้ให้เลือกใช้ช่องทางการตลาด โดยค่าเริ่มต้น คุณจะส่งเนื้อหาการตลาดโดยไม่ได้รับความยินยอมจากผู้ใช้ไม่ได้ หาก optinForRemarketing เป็น "จริง" คุณจะสมัครใช้บริการของผู้ใช้ได้ หาก optinForRemarketing เป็นเท็จหรือไม่มีอยู่ คุณต้องคงสถานะการสมัครใช้บริการในระบบไว้ตามเดิม ผู้ใช้จะเลือกไม่ใช้ผ่าน Google ไม่ได้ ทำได้ผ่านฟังก์ชันการยกเลิกการสมัครใช้บริการที่มีให้ในช่องทางการตลาดเท่านั้น Flag นี้จะอยู่ใน SubmitOrderRequestMessage เท่านั้น

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderExtension

ตัวอย่างที่ 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "delivery": {
          "deliveryTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2017-07-17T12:30:00Z"
    }
  ]
}

ตัวอย่างที่ 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
  "availableFulfillmentOptions": [
    {
      "fulfillmentInfo": {
        "pickup": {
          "pickupTimeIso8601": "P0M"
        }
      },
      "expiresAt": "2020-08-20T11:41:00Z"
    }
  ],
  "optinForRemarketing": true
}

FulfillmentOption

คุณใช้ออบเจ็กต์ FulfillmentOption ได้ดังนี้
  • ใน Checkout AppRequest และ Submit AppRequest Cart.extension.fulfillmentPreference: จัดเก็บค่ากําหนดของผู้ใช้ (การนำส่งหรือการรับสินค้า) ราคาจะเป็น 0 เสมอเมื่อส่งคำขอชำระเงิน
  • ใน Checkout AppResponse ProposedOrder.extension.availableFulfillmentOptions จะทำหน้าที่ดังนี้ กำหนดตัวเลือกการนำส่งอย่างน้อย 1 รายการ (ปัจจุบันรองรับเพียง 1 ตัวเลือกเท่านั้น) คุณระบุตัวเลือกเริ่มต้นเป็น LineItem ใน ProposedOrder.otherItems offerId ของ FulfillmentOption ควรตรงกับรหัสของ LineItem ที่ระบุไว้ใน ProposedOrder.otherItems

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentOption

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
offerId String

ตัวระบุที่ไม่ซ้ำกันสำหรับตัวเลือกการดำเนินการตามคำสั่งซื้อนี้ (หากมี)

fulfillmentInfo FulfillmentOptionInfo

ต้องระบุ

expiresAt การประทับเวลา ISO

เวลาของตัวเลือกการจำหน่ายนี้ที่หมดอายุ

price Money

ค่าใช้จ่ายของตัวเลือกนี้

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FulfillmentOption

ตัวอย่าง

{
  "offerId": "offer5",
  "fulfillmentInfo": {
    "pickup": {
      "pickupTimeIso8601": "P0M"
    }
  },
  "expiresAt": "2019-05-02T00:00:00-07:00",
  "price": {
    "currencyCode": "USD",
    "units": "5",
    "nanos": 230000000
  }
}

FulfillmentOptionInfo

กําหนดข้อมูลที่เกี่ยวข้องกับ FulfillmentInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentOptionInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม
delivery กลุ่ม 1 DeliveryInfo

ระบุคำสั่งซื้อแบบมีบริการจัดส่ง (หากมี)

pickup กลุ่ม 2 PickupInfo

ระบุคำสั่งซื้อแบบรับสินค้า (หากมี)

รูปภาพ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Image

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
sourceUrl String

ต้องระบุ

URL ของรูปภาพ รูปภาพควรมีขนาดอย่างน้อย 72x72 พิกเซล โปรดใช้รูปภาพที่มีความละเอียดอย่างน้อย 216x216 พิกเซลเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด รูปภาพต้องมีขนาดไม่เกิน 6 MB และ 64 เมกะพิกเซล

LineItem

กำหนดเนื้อหาของรถเข็น (Cart.lineItems) หรือค่าใช้จ่ายเพิ่มเติมสำหรับคำสั่งซื้อ (ProposedOrder.otherItems)

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท LineItem

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
id String

ต้องระบุเมื่อ type = "REGULAR"

สำหรับบรรทัดรายการในรถเข็น (ProposedOrder.cart.lineItems[0].id) รหัสนี้คือรหัสที่ไม่ซ้ำกันที่ Google สร้างขึ้นเมื่อสร้างคำสั่งซื้อ สำหรับ LineItem ใน ProposedOrder (ProposedOrder.otherItems[0].id) ซึ่งใช้เพื่อเพิ่มรายการต่างๆ เช่น ค่าธรรมเนียมการนำส่งและภาษี ผู้ให้บริการจะเป็นผู้กำหนดค่าของรหัส เช่น ในรถเข็นมีสินค้าเดียวกัน 2 รายการที่มีวิธีการเตรียมแตกต่างกัน (เช่น พิซซ่าขนาดกลาง 2 ถาดที่มีเครื่องเคียงชุดต่างกัน) ในกรณีนี้ รายการทั้ง 2 รายการจะมี offerId พื้นฐานเดียวกัน เมื่อส่งคำขออัปเดตคำสั่งซื้อเพื่อระบุว่ามีการปฏิเสธสินค้า ให้ใช้รหัสนี้เป็นตัวช่วยคลายความกำกวม กล่าวคือ หากพิซซ่ารายการใดรายการหนึ่งถูกปฏิเสธเนื่องจากไม่มีเครื่องปรุงบางรายการ รหัสนี้จะช่วยให้ Google ระบุได้ว่าคุณหมายถึงสินค้าใดในคำสั่งซื้อ ต้องระบุข้อมูลในช่องนี้ ยกเว้นใน otherItems

name String

ต้องระบุ

ชื่อของรายการโฆษณา สตริงนี้เป็นสตริงที่ผู้ใช้มองเห็นได้ และควรใช้ตัวพิมพ์เล็กตามแบบประโยคเมื่อเป็นไปได้ (เช่น "ค่าธรรมเนียมการนำส่ง" "ค่าบริการ" "ภาษี") ระบบจะตัดข้อความในช่องนี้ที่ 100 อักขระสำหรับผู้ใช้

type LineItemType

ต้องระบุ

quantity จำนวนเต็ม

ต้องระบุเมื่อ type = "REGULAR"

จํานวนสินค้าที่รวมอยู่ ใช้กับ ProposedOrder.otherItems ไม่ได้

description String

รายละเอียดของสินค้า

price Price

ต้องระบุ

ราคาของสินค้า ค่านี้แสดงราคารวมของสินค้าหรือบริการทั้งหมดสำหรับรายการโฆษณานี้ (กล่าวคือ เพิ่มต้นทุนของส่วนเสริมต่างๆ แล้วคูณด้วยจำนวน) เช่น หากสินค้าราคา 300 บาทมีจำนวน 3 รายการ ราคาจะเป็น 900 บาท สำหรับพิซซ่า 1 ถาดที่มีราคาฐาน $5 และส่วนเสริม $1 ราคาจะเท่ากับ $6 สำหรับพิซซ่า 2 ถาด (จำนวน = 2) ที่มีราคาฐาน 50 บาท และแต่ละถาดมีราคาส่วนเพิ่ม 10 บาท ราคารวมจะเท่ากับ 120 บาท บรรทัดรายการแต่ละรายการควรมีราคา แม้ว่าราคาจะเป็น "0" ก็ตาม เมื่อประเภทเป็น DISCOUNT ให้ระบุค่าเป็นลบ (เช่น "-2")

subLines List<SublineNote>

ไม่บังคับและใช้ได้ก็ต่อเมื่อประเภทเป็น "ปกติ" เท่านั้น ผู้ใช้อาจส่งหมายเหตุเฉพาะสินค้าในช่องนี้ในคำขอชำระเงินและคำขอส่งคำสั่งซื้อ ตรวจสอบว่าผู้ขายได้รับหมายเหตุเมื่อมีการระบุ ข้อมูลนี้จะอยู่ในคําขอเป็น subLines[0].note ซึ่งเป็นค่าเดียวที่ระบุในช่องนี้เมื่อมีอยู่ในคําขอ

ต้องมีไม่เกิน 1 รายการ

offerId String

ต้องระบุเมื่อ type = "REGULAR"

รหัสข้อเสนอของ 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.lineItems
  • TAX: รายการภาษี ใช้ได้กับ ProposedOrder.otherItems
  • DISCOUNT: รายการโฆษณาส่วนลด โปรดทราบว่าราคาควรเป็นค่าลบ ใช้ได้กับ ProposedOrder.otherItems
  • GRATUITY: รายการโฆษณาทิป โดยทั่วไปสงวนไว้สำหรับ SubmitOrderRequestMessage สำหรับเคล็ดลับที่ผู้ใช้เลือก ใช้ได้กับ ProposedOrder.otherItems
  • DELIVERY: รายการโฆษณาการแสดงโฆษณา ใช้ได้กับ ProposedOrder.otherItems
  • SUBTOTAL: รายการบรรทัดยอดรวมย่อย ใช้ได้กับ ProposedOrder.otherItems
  • FEE: รายการโฆษณาเพิ่มเติมที่ไม่ครอบคลุมโดยประเภทอื่นๆ ใช้ได้กับ ProposedOrder.otherItems

ตำแหน่ง

ระบุที่อยู่สำหรับการสั่งอาหาร ประเภท Location จะใช้ใน Cart เพื่อระบุปลายทางของคำสั่งนำส่งเท่านั้น ตำแหน่งที่สรุปแล้วจะแสดงใน TransactionDecisionValue ด้วยหากผู้ใช้สั่งซื้อ สำหรับคำสั่งซื้อที่ระบุการไปรับสินค้า ระบบจะไม่รวมสถานที่ใดๆ เลย (แม้แต่สถานที่ว่างเปล่า)

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Location

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
coordinates Coordinates
formattedAddress String

แสดงที่อยู่ของสถานที่ตั้ง

ตัวอย่าง: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode String

ตัวอย่าง: 90210

city String

ชื่อเมือง

ตัวอย่าง: Los Angeles

notes String

หมายเหตุเกี่ยวกับสถานที่ เช่น รหัสประตู โดยควรมีความยาวไม่เกิน 500 อักขระ

ตัวอย่าง: Gate code is #111

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ 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 ในฟีดร้านอาหาร

ตัวอย่าง: https://www.exampleprovider.com/merchant/id1

name String

ต้องระบุ

ชื่อผู้ขายที่ผู้ใช้มองเห็น

ตัวอย่าง: Falafel Bite

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Merchant

ตัวอย่าง

{
  "id": "https://www.exampleprovider.com/merchant/id1",
  "name": "Falafel Bite"
}

เงินทอง

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Money

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
currencyCode String

ต้องระบุ

รหัสสกุลเงิน 3 ตัวในรูปแบบ ISO 4217

ตัวอย่าง: USD

units String

จำนวนเงินเต็ม เช่น หาก currencyCode คือ "USD" หน่วย "1" จะเป็นดอลลาร์สหรัฐ 1 ดอลลาร์

ตัวอย่าง: 36

nanos จำนวนเต็ม

จํานวนหน่วยนาโน (10^-9) ของจํานวนเงิน ค่าต้องอยู่ระหว่าง -999,999,999 ถึง +999,999,999 ใช้กฎต่อไปนี้ หากหน่วยเป็นบวก nanos ต้องเป็นบวกหรือ 0 หากหน่วยเป็น 0 นาโนสจะเป็นค่าบวก 0 หรือลบก็ได้ หากหน่วยติดลบ nanos ต้องเป็นค่าลบหรือ 0 เช่น $-1.75 จะแสดงเป็น units = -1 และ nanos = -750,000,000

ตัวอย่าง: 730000000

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Money

ตัวอย่างที่ 1

{
  "currencyCode": "USD",
  "units": "36",
  "nanos": 730000000
}

ตัวอย่างที่ 2

{
  "currencyCode": "EUR",
  "units": "10"
}

สั่งซื้อ

มีคำสั่งซื้อขั้นสุดท้าย รวมถึงภาษี ค่าธรรมเนียม และค่าธรรมเนียมการนำส่ง ตลอดจนข้อมูลการชำระเงิน การดำเนินการของคุณได้รับออบเจ็กต์นี้ใน Submit AppRequest

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Order

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
finalOrder ProposedOrder

ต้องระบุ

คำสั่งซื้อที่เสนอซึ่งทำให้เกิดคำสั่งซื้อ

googleOrderId String

ต้องระบุ

รหัสคำสั่งซื้อที่ Google กำหนด รหัสนี้ควรคงที่ตลอดอายุการใช้งานของคำสั่งซื้อ ผู้ใช้ปลายทางจะไม่เห็นรหัสนี้

orderDate การประทับเวลา ISO

ต้องระบุ

วันที่และเวลาที่สร้างคำสั่งซื้อ

paymentInfo PaymentInfo

ต้องระบุ

ข้อมูลการชำระเงินที่เกี่ยวข้องกับการชำระเงินสำหรับคำสั่งซื้อนี้

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Order

ตัวอย่าง

{
  "finalOrder": {
    "cart": {
      "notes": "Guest prefers their food to be hot when it is delivered.",
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Cucina Venti"
      },
      "lineItems": [
        {
          "name": "Sizzling Prawns Dinner",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "16",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          }
        },
        "contact": {
          "displayName": "Lovefood Ordering",
          "email": "ilovefood@example.com",
          "phoneNumber": "+16501234567"
        }
      }
    },
    "otherItems": [
      {
        "name": "Service fee",
        "type": "FEE",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        }
      },
      {
        "name": "Tax",
        "type": "TAX",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 370000000
          }
        }
      },
      {
        "name": "Tip",
        "type": "GRATUITY",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 590000000
          }
        }
      }
    ],
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "23",
        "nanos": 710000000
      }
    },
    "id": "sample_final_order_id",
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "pickup": {
              "pickupTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ],
      "optinForRemarketing": true
    }
  },
  "googleOrderId": "sample_google_order_id",
  "orderDate": "2017-07-17T12:00:00Z",
  "paymentInfo": {
    "displayName": "Visa\u2006****\u20061111",
    "googleProvidedPaymentInstrument": {
      "instrumentToken": "abcd"
    },
    "paymentType": "PAYMENT_CARD"
  }
}

OrderUpdate

ตารางต่อไปนี้อธิบายช่องของประเภท OrderUpdate ซึ่งรวมอยู่ใน AppResponse

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderUpdate

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
actionOrderId String

ต้องระบุ

รหัสที่ไม่ซ้ำกันของคำสั่งซื้อในระบบของผู้ผสานรวมซึ่งใช้เพื่อระบุคำสั่งซื้อที่จะส่งการอัปเดต หากไม่ได้ระบุ receipt.user_visible_order_id อย่างน้อย 1 ครั้งใน OrderUpdate สำหรับคำสั่งซื้อที่ "สร้างแล้ว" รหัสนี้จะใช้เป็นรหัสที่ผู้ใช้มองเห็นซึ่งป้อนไว้และแสดงในการ์ดคำสั่งซื้อของ Google

orderState OrderState

ต้องระบุ

สถานะใหม่ของคำสั่งซื้อ

lineItemUpdates Map<String, LineItemUpdate>
updateTime การประทับเวลา ISO

ต้องระบุ

เวลาที่มีการอัปเดตคำสั่งซื้อ

orderManagementActions List<OrderManagementAction>

การดำเนินการหลังสั่งซื้อ เช่น ติดต่อฝ่ายสนับสนุนและดูรายละเอียดคำสั่งซื้อ

ต้องมีอย่างน้อย 1 รายการและไม่เกิน 6 รายการ

rejectionInfo RejectionInfo

ต้องระบุเมื่อ orderState.state = "REJECTED"

cancellationInfo CancellationInfo

ต้องระบุเมื่อ orderState.state = "CANCELLED"

inTransitInfo InTransitInfo

ช่องนี้เลิกใช้งานแล้ว

fulfillmentInfo FulfillmentInfo

ช่องนี้เลิกใช้งานแล้ว

receipt Receipt

ต้องระบุเมื่อ orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP"

ระบุรหัสคำสั่งซื้อที่ผู้ใช้มองเห็นได้ในใบเสร็จ

totalPrice Price

ราคารวมของคำสั่งซื้อ

infoExtension FoodOrderUpdateExtension

กําหนดรายละเอียดเพิ่มเติมของการอัปเดตคําสั่งซื้อ เช่น ช่วงเวลาของการนำส่งหรือการรับสินค้าโดยประมาณ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderUpdate

ตัวอย่าง

{
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "41",
      "nanos": 600000000
    }
  },
  "lineItemUpdates": {
    "sample_item_id_1": {
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "reason": "This item has an updated price."
    }
  },
  "receipt": {
    "userVisibleOrderId": "userVisibleId1234"
  },
  "updateTime": "2017-07-17T12:00:00Z",
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+16505554679"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
  }
}

PickupInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PickupInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
pickupTimeIso8601 String

เวลารับพัสดุโดยประมาณในรูปแบบการประทับเวลา ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M แสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งบอกว่าเวลารับที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. ใช้เพื่ออัปเดตเวลารับสินค้าโดยประมาณระหว่างการตอบกลับการชำระเงิน

ตัวอย่าง: PT90M

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PickupInfo

ตัวอย่าง

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PostalAddress

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
regionCode String

ต้องระบุ

รหัสประเทศ 2 ตัวอักษร

ตัวอย่าง: US

postalCode String

รหัสไปรษณีย์

ตัวอย่าง: 94043

administrativeArea String

เขตบริหารย่อยที่สูงที่สุดซึ่งใช้สำหรับที่อยู่ไปรษณีย์ของประเทศหรือภูมิภาค ซึ่งอาจเป็นรัฐ จังหวัด เขต หรือจังหวัด

ตัวอย่าง: CA

locality String

เมืองของสถานที่ตั้งนี้ ในภูมิภาคของโลกที่ระบุสถานที่ตั้งไม่ชัดเจนหรือไม่เหมาะกับโครงสร้างนี้ อย่าระบุสถานที่ตั้ง และใช้ช่อง addressLines แทน

ตัวอย่าง: Mountain View

addressLines List<String>

บรรทัดอย่างน้อย 1 บรรทัดที่คุณสามารถใช้เพื่อระบุที่อยู่ คุณไม่ควรแก้ไขช่องนี้เนื่องจากอาจมีสถานที่ที่ไม่ชัดเจน

ตัวอย่าง: [ "1350 Charleston Road" ]

recipients List<String>

รายชื่อผู้รับของคำสั่งซื้อ ช่องนี้ใช้ได้เฉพาะใน billingAddress

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PostalAddress

ตัวอย่าง

{
  "regionCode": "US",
  "postalCode": "94043",
  "administrativeArea": "CA",
  "locality": "Mountain View",
  "addressLines": [
    "1350 Charleston Road"
  ]
}

ราคา

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Price

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
type Enum [ "ESTIMATE", "ACTUAL" ]

ต้องระบุ

รหัสคูปองโปรโมชัน

amount Money

ต้องระบุ

โปรโมชัน

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Promotion

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
coupon String

ต้องระบุ

รหัสคูปองโปรโมชัน

ProposedOrder

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท ProposedOrder

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
id String

รหัสที่ไม่บังคับสำหรับคำสั่งซื้อที่เสนอ

cart Cart

ต้องระบุ

รายการของผู้ใช้

otherItems List<LineItem>

รายการที่ผู้ให้บริการเพิ่ม เช่น ค่าธรรมเนียมการนำส่ง ค่าธรรมเนียมอื่นๆ และภาษี นอกจากนี้ otherItems อาจมีค่าตอบแทนพิเศษและ/หรือส่วนลดที่ผู้ใช้เพิ่มไว้ด้วย

ต้องมีไม่เกิน 10 รายการ

image Image

รูปภาพที่เชื่อมโยงกับคำสั่งซื้อที่เสนอ

totalPrice Price

ต้องระบุ

ราคารวมของคำสั่งซื้อที่เสนอ

extension FoodOrderExtension

ต้องระบุ

กำหนดข้อมูลการดำเนินการตามคำสั่งซื้ออาหาร

disclaimers List<Disclaimer>

สอดคล้องกับข้อความข้อจำกัดความรับผิดที่จะแสดงใน UI ก่อนที่จะมีการสั่งซื้อ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ ProposedOrder

ตัวอย่าง

{
  "id": "sample_proposed_order_id_1",
  "otherItems": [
    {
      "name": "New customer discount",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "-5",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT"
    },
    {
      "name": "Delivery fee",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "3",
          "nanos": 500000000
        }
      },
      "type": "DELIVERY"
    },
    {
      "name": "Tax",
      "price": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 500000000
        }
      },
      "type": "TAX"
    }
  ],
  "cart": {
    "merchant": {
      "id": "https://www.exampleprovider.com/merchant/id1",
      "name": "Falafel Bite"
    },
    "lineItems": [
      {
        "name": "Pita Chips",
        "type": "REGULAR",
        "id": "sample_item_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "2",
            "nanos": 750000000
          }
        },
        "subLines": [
          {
            "note": "Notes for this item."
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
          "options": [
            {
              "id": "sample_addon_offer_id_1",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
              "name": "Honey Mustard",
              "price": {
                "currencyCode": "USD"
              },
              "quantity": 1
            },
            {
              "id": "sample_addon_offer_id_2",
              "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
              "name": "BBQ Sauce",
              "price": {
                "currencyCode": "USD",
                "nanos": 500000000
              },
              "quantity": 1
            }
          ]
        }
      },
      {
        "name": "Chicken Shwarma Wrap",
        "type": "REGULAR",
        "id": "sample_item_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "8"
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Greek Salad",
        "type": "REGULAR",
        "id": "sample_item_offer_id_3",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "9",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      },
      {
        "name": "Prawns Biryani",
        "type": "REGULAR",
        "id": "sample_item_offer_id_4",
        "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
        "quantity": 1,
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "15",
            "nanos": 990000000
          }
        },
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
        }
      }
    ],
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
      "fulfillmentPreference": {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P90M"
          }
        }
      },
      "location": {
        "coordinates": {
          "latitude": 37.788783,
          "longitude": -122.41384
        },
        "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1350 Charleston Road"
          ]
        },
        "notes": "Gate code is #111"
      }
    }
  },
  "totalPrice": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "36",
      "nanos": 730000000
    }
  },
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
    "availableFulfillmentOptions": [
      {
        "fulfillmentInfo": {
          "delivery": {
            "deliveryTimeIso8601": "P0M"
          }
        },
        "expiresAt": "2017-07-17T12:30:00Z"
      }
    ]
  }
}

SublineNote

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท SublineNote

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
note String

ต้องระบุ

การประทับเวลา

วันที่และเวลาในรูปแบบต่อไปนี้ "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

มี Order

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TransactionDecisionValue

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
order Order

ต้องระบุ

สั่งซื้อพร้อมรายละเอียดการชําระเงิน

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TransactionDecisionValue

ตัวอย่าง

{
  "order": {
    "finalOrder": {
      "cart": {
        "notes": "Guest prefers their food to be hot when it is delivered.",
        "merchant": {
          "id": "https://www.exampleprovider.com/merchant/id1",
          "name": "Cucina Venti"
        },
        "lineItems": [
          {
            "name": "Sizzling Prawns Dinner",
            "type": "REGULAR",
            "id": "sample_item_offer_id_1",
            "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
            "quantity": 1,
            "price": {
              "type": "ESTIMATE",
              "amount": {
                "currencyCode": "USD",
                "units": "16",
                "nanos": 750000000
              }
            },
            "subLines": [
              {
                "note": "Notes for this item."
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
              "options": [
                {
                  "id": "sample_addon_offer_id_1",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                  "name": "Honey Mustard",
                  "price": {
                    "currencyCode": "USD"
                  },
                  "quantity": 1
                },
                {
                  "id": "sample_addon_offer_id_2",
                  "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                  "name": "BBQ Sauce",
                  "price": {
                    "currencyCode": "USD",
                    "nanos": 500000000
                  },
                  "quantity": 1
                }
              ]
            }
          }
        ],
        "extension": {
          "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
          "fulfillmentPreference": {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            }
          },
          "contact": {
            "displayName": "Lovefood Ordering",
            "email": "ilovefood@example.com",
            "phoneNumber": "+16501234567"
          }
        }
      },
      "otherItems": [
        {
          "name": "Service fee",
          "type": "FEE",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 500000000
            }
          }
        },
        {
          "name": "Tax",
          "type": "TAX",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "1",
              "nanos": 370000000
            }
          }
        },
        {
          "name": "Tip",
          "type": "GRATUITY",
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 590000000
            }
          }
        }
      ],
      "totalPrice": {
        "type": "ESTIMATE",
        "amount": {
          "currencyCode": "USD",
          "units": "23",
          "nanos": 710000000
        }
      },
      "id": "sample_final_order_id",
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
        "availableFulfillmentOptions": [
          {
            "fulfillmentInfo": {
              "pickup": {
                "pickupTimeIso8601": "P0M"
              }
            },
            "expiresAt": "2017-07-17T12:30:00Z"
          }
        ],
        "optinForRemarketing": true
      }
    },
    "googleOrderId": "sample_google_order_id",
    "orderDate": "2017-07-17T12:00:00Z",
    "paymentInfo": {
      "displayName": "Visa\u2006****\u20061111",
      "googleProvidedPaymentInstrument": {
        "instrumentToken": "abcd"
      },
      "paymentType": "PAYMENT_CARD"
    }
  }
}

คำขอดำเนินการตามคำสั่งซื้อ

AppRequest

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AppRequest

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
isInSandbox บูลีน

ระบุว่าธุรกรรมต่อๆ ไปจะดำเนินการในสภาพแวดล้อมเสมือนจริงหรือไม่

conversation Conversation
inputs List<Input>

ต้องระบุ

มีอาร์กิวเมนต์ที่คาดไว้สำหรับการชำระเงิน

ต้องมีรายการเดียว

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AppRequest

ตัวอย่างที่ 1

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "subLines": [
                  {
                    "note": "Notes for this item."
                  }
                ],
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                  "options": [
                    {
                      "id": "sample_addon_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "name": "Honey Mustard",
                      "price": {
                        "currencyCode": "USD"
                      },
                      "quantity": 1
                    },
                    {
                      "id": "sample_addon_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                      "name": "BBQ Sauce",
                      "price": {
                        "currencyCode": "USD",
                        "nanos": 500000000
                      },
                      "quantity": 1
                    }
                  ]
                }
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    "deliveryTimeIso8601": "P0M"
                  }
                }
              },
              "location": {
                "coordinates": {
                  "latitude": 37.788783,
                  "longitude": -122.41384
                },
                "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                "zipCode": "94043",
                "city": "Mountain View",
                "postalAddress": {
                  "regionCode": "US",
                  "postalCode": "94043",
                  "administrativeArea": "CA",
                  "locality": "Mountain View",
                  "addressLines": [
                    "1350 Charleston Road"
                  ]
                },
                "notes": "Gate code is #111"
              }
            }
          }
        }
      ]
    }
  ]
}

ตัวอย่างที่ 2

{
  "isInSandbox": true,
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Lovefood Ordering",
                      "email": "ilovefood@example.com",
                      "phoneNumber": "+16501234567"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Service fee",
                    "type": "FEE",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "2",
                        "nanos": 590000000
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "23",
                    "nanos": 710000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ],
                  "optinForRemarketing": true
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                "displayName": "Visa\u2006****\u20061111",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "abcd"
                },
                "paymentType": "PAYMENT_CARD"
              }
            }
          }
        }
      ]
    }
  ]
}

CheckoutRequestMessage

CheckoutRequestMessage คือ AppRequest ที่มีความตั้งใจ actions.foodordering.intent.CHECKOUT

SubmitOrderRequestMessage

SubmitOrderRequestMessage คือ AppRequest ที่มีความตั้งใจ actions.foodordering.intent.TRANSACTION_DECISION

การสนทนา

Conversation จะใช้ได้กับเซสชันเดียวเท่านั้น คุณสามารถใช้เพื่อลิงก์การดำเนินการ Checkout และ SubmitOrder หลายรายการเข้าด้วยกันได้หากจำเป็น

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Conversation

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
conversationId String

ต้องระบุ

รหัสที่ไม่ซ้ำกันสำหรับการสนทนา

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Conversation

ตัวอย่าง

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

อินพุต

อาร์กิวเมนต์ที่คาดไว้สำหรับการชําระเงินในรถเข็น

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Input

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

ต้องระบุ

ตั้งค่าเป็น "actions.foodordering.intent.CHECKOUT" สำหรับข้อความคำขอชำระเงิน หรือ "actions.intent.TRANSACTION_DECISION" สำหรับข้อความคำขอส่งคำสั่งซื้อ

arguments List<Argument>

ต้องระบุ

มีรถเข็นที่จะชำระเงินหรือคำสั่งซื้อที่จะสั่งซื้อ

ต้องมีรายการเดียว

อาร์กิวเมนต์

มีรายละเอียดเกี่ยวกับรายการอาหารซึ่งผู้ใช้ต้องการชำระเงิน สำหรับการชําระเงิน เฉพาะส่วนขยายเท่านั้นที่มีผล สําหรับการสั่งซื้อที่ส่ง เฉพาะ transactionDecisionValue เท่านั้นที่ใช้ได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Argument

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม
extension กลุ่ม 1 Cart

รายละเอียดอาหารที่ต้องการชำระเงิน

transactionDecisionValue กลุ่ม 2 TransactionDecisionValue

มีคำสั่งซื้อที่จะสั่งซื้อพร้อมรายละเอียดการชำระเงิน

การตอบสนองการจำหน่าย

AppResponse

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AppResponse

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
expectUserResponse Const

ตั้งค่าเป็น "เท็จ"

ค่า: False

finalResponse FinalResponse

ต้องระบุ

มีคำตอบของคุณสำหรับการชําระเงินในรถเข็น

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AppResponse

ตัวอย่างที่ 1

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "otherItems": [
                  {
                    "name": "New customer discount",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": -500000000
                      }
                    },
                    "type": "DISCOUNT"
                  },
                  {
                    "name": "Delivery fee",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 500000000
                      }
                    },
                    "type": "TAX"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "subLines": [
                        {
                          "note": "Notes for this item."
                        }
                      ],
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
                        "options": [
                          {
                            "id": "sample_addon_offer_id_1",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                            "name": "Honey Mustard",
                            "price": {
                              "currencyCode": "USD"
                            },
                            "quantity": 1
                          },
                          {
                            "id": "sample_addon_offer_id_2",
                            "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                            "name": "BBQ Sauce",
                            "price": {
                              "currencyCode": "USD",
                              "nanos": 500000000
                            },
                            "quantity": 1
                          }
                        ]
                      }
                    },
                    {
                      "name": "Chicken Shwarma Wrap",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_2",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "8"
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Greek Salad",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_3",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    },
                    {
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_4",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "15",
                          "nanos": 990000000
                        }
                      },
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P90M"
                        }
                      }
                    },
                    "location": {
                      "coordinates": {
                        "latitude": 37.788783,
                        "longitude": -122.41384
                      },
                      "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
                      "zipCode": "94043",
                      "city": "Mountain View",
                      "postalAddress": {
                        "regionCode": "US",
                        "postalCode": "94043",
                        "administrativeArea": "CA",
                        "locality": "Mountain View",
                        "addressLines": [
                          "1350 Charleston Road"
                        ]
                      },
                      "notes": "Gate code is #111"
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "36",
                    "nanos": 730000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2017-07-17T12:30:00Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
                }
              },
              "additionalPaymentOptions": [
                {
                  "actionProvidedOptions": {
                    "paymentType": "ON_FULFILLMENT",
                    "displayName": "Cash on delivery."
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

ตัวอย่างที่ 2

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Provider confirmed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+18005554679"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                }
              ],
              "infoExtension": {
                "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
              }
            }
          }
        }
      ]
    }
  }
}

ตัวอย่างที่ 3

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "CLOSED",
                  "description": "The restaurant is closed."
                }
              ]
            }
          }
        }
      ]
    }
  }
}

ตัวอย่าง 4

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "subLines": [],
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "OWG_ACTIVE_CODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Pita Chips",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "2",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "OWG_ACTIVE_CODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "14",
                    "nanos": 860000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-04-10T01:20:08.471Z"
                    }
                  ]
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "pk_live_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true,
                  "billingAddressRequired": true
                }
              }
            }
          }
        }
      ]
    }
  }
}

CheckoutResponseMessage

CheckoutResponseMessage คือ AppResponse ที่มี checkoutResponse หรือ error ใน StructuredResponse

SubmitOrderResponseMessage

SubmitOrderResponseMessage คือ AppResponse ที่มี orderUpdate ใน StructuredResponse

FinalResponse

การตอบกลับการชำระเงินผ่านรถเข็นหรือ SubmitOrderRequestMessage

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FinalResponse

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
richResponse RichResponse

ต้องระบุ

มีคำตอบของคุณสำหรับ CheckoutRequestMessage หรือ SubmitOrderRequestMessage

CheckoutResponse

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CheckoutResponse

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
proposedOrder ProposedOrder

ต้องระบุ

คำสั่งซื้อที่เสนอให้ใช้สำหรับธุรกรรม

paymentOptions PaymentOptions

ต้องระบุ

ตัวเลือกการชำระเงินเริ่มต้นที่เลือกไว้สำหรับผู้ใช้

additionalPaymentOptions List<PaymentOptions>

ตัวเลือกการชำระเงินอื่นๆ ที่พร้อมให้บริการแก่ผู้ใช้

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CheckoutResponse

ตัวอย่าง

{
  "proposedOrder": {
    "id": "sample_proposed_order_id_1",
    "otherItems": [
      {
        "name": "New customer discount",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "-5",
            "nanos": -500000000
          }
        },
        "type": "DISCOUNT"
      },
      {
        "name": "Delivery fee",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "3",
            "nanos": 500000000
          }
        },
        "type": "DELIVERY"
      },
      {
        "name": "Tax",
        "price": {
          "type": "ESTIMATE",
          "amount": {
            "currencyCode": "USD",
            "units": "1",
            "nanos": 500000000
          }
        },
        "type": "TAX"
      }
    ],
    "cart": {
      "merchant": {
        "id": "https://www.exampleprovider.com/merchant/id1",
        "name": "Falafel Bite"
      },
      "lineItems": [
        {
          "name": "Pita Chips",
          "type": "REGULAR",
          "id": "sample_item_offer_id_1",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "2",
              "nanos": 750000000
            }
          },
          "subLines": [
            {
              "note": "Notes for this item."
            }
          ],
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
            "options": [
              {
                "id": "sample_addon_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                "name": "Honey Mustard",
                "price": {
                  "currencyCode": "USD"
                },
                "quantity": 1
              },
              {
                "id": "sample_addon_offer_id_2",
                "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
                "name": "BBQ Sauce",
                "price": {
                  "currencyCode": "USD",
                  "nanos": 500000000
                },
                "quantity": 1
              }
            ]
          }
        },
        {
          "name": "Chicken Shwarma Wrap",
          "type": "REGULAR",
          "id": "sample_item_offer_id_2",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id2",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "8"
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Greek Salad",
          "type": "REGULAR",
          "id": "sample_item_offer_id_3",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id3",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "9",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        },
        {
          "name": "Prawns Biryani",
          "type": "REGULAR",
          "id": "sample_item_offer_id_4",
          "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
          "quantity": 1,
          "price": {
            "type": "ESTIMATE",
            "amount": {
              "currencyCode": "USD",
              "units": "15",
              "nanos": 990000000
            }
          },
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
          }
        }
      ],
      "extension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
        "fulfillmentPreference": {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P90M"
            }
          }
        },
        "location": {
          "coordinates": {
            "latitude": 37.788783,
            "longitude": -122.41384
          },
          "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
          "zipCode": "94043",
          "city": "Mountain View",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94043",
            "administrativeArea": "CA",
            "locality": "Mountain View",
            "addressLines": [
              "1350 Charleston Road"
            ]
          },
          "notes": "Gate code is #111"
        }
      }
    },
    "totalPrice": {
      "type": "ESTIMATE",
      "amount": {
        "currencyCode": "USD",
        "units": "36",
        "nanos": 730000000
      }
    },
    "extension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
      "availableFulfillmentOptions": [
        {
          "fulfillmentInfo": {
            "delivery": {
              "deliveryTimeIso8601": "P0M"
            }
          },
          "expiresAt": "2017-07-17T12:30:00Z"
        }
      ]
    }
  },
  "paymentOptions": {
    "googleProvidedOptions": {
      "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
    }
  },
  "additionalPaymentOptions": [
    {
      "actionProvidedOptions": {
        "paymentType": "ON_FULFILLMENT",
        "displayName": "Cash on delivery."
      }
    }
  ]
}

รายการ

มีคำตอบของคุณสำหรับการชําระเงินในรถเข็นหรือ SubmitOrderRequestMessage

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Item

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
structuredResponse StructuredResponse

ต้องระบุ

RichResponse

มีคำตอบของคุณสำหรับการชําระเงินในรถเข็น

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท RichResponse

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
items List<Item>

ต้องระบุ

ต้องมีรายการเดียว

StructuredResponse

สำหรับ CheckoutResponseMessage อาจเป็นค่าใดค่าหนึ่งต่อไปนี้ CheckoutResponse บ่งบอกว่าการชำระเงินสำเร็จ หรือ FoodErrorExtension: บ่งบอกถึงความล้มเหลวระหว่างการชำระเงิน การตอบกลับอาจรวม ProposedOrder และ PaymentOptions ที่แก้ไขแล้ว หรือข้อความแสดงข้อผิดพลาดที่ไม่มี PaymentOptions สำหรับ SubmitOrderResponseMessage เฉพาะ orderUpdate เท่านั้นที่ใช้ได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท StructuredResponse

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม
checkoutResponse กลุ่ม 1 CheckoutResponse

สินค้าในตะกร้าบวกภาษีและส่วนลด

error กลุ่ม 2 FoodErrorExtension

ข้อผิดพลาดที่พบในรายการรถเข็น พร็อพเพอร์ตี้นี้อาจมี ProposedOrder และ PaymentOptions ที่แก้ไขแล้ว หรืออาจเป็นเพียงข้อความแสดงข้อผิดพลาดที่ไม่มี PaymentOptions ทั้งนี้ขึ้นอยู่กับลักษณะของข้อผิดพลาด

orderUpdate กลุ่ม 3 OrderUpdate

การอัปเดตคำสั่งซื้อแบบอะซิงโครนัส

ส่วนนี้จะอธิบายประเภทระดับสูงที่ประกอบกันเป็นคําขอและการตอบกลับของการโต้ตอบการดําเนินการแบบฝังที่พบได้ทั่วไปในการสั่งอาหาร

AsyncOrderUpdateRequestMessage

แจ้งให้ผู้ใช้ทราบถึงการเปลี่ยนแปลงหลังจากที่ส่งคำสั่งซื้อและยืนยันแล้ว เช่น คุณสามารถแจ้งให้ผู้ใช้ทราบว่าคำสั่งซื้ออยู่ระหว่างการขนส่งหรือราคามีการเปลี่ยนแปลง สำหรับข้อมูลเพิ่มเติม โปรดดู

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท AsyncOrderUpdateRequestMessage

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
isInSandbox บูลีน

บ่งชี้ว่าคำสั่งซื้อที่ส่งการอัปเดตนี้มาเป็นการชําระเงินในกล่องทดสอบ

customPushMessage CustomPushMessage

ต้องระบุ

มี OrderUpdate สำหรับคำขอ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ AsyncOrderUpdateRequestMessage

ตัวอย่าง

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}

AsyncOrderUpdateResponseMessage

หลังจากส่ง AsyncOrderUpdateRequestMessage เรียบร้อยแล้ว Google จะตอบกลับด้วยสถานะ HTTP 200 และเนื้อหาว่าง หากอัปเดตไม่สำเร็จ Google จะตอบกลับพร้อมรายละเอียดเกี่ยวกับสาเหตุที่การอัปเดตคำสั่งซื้อไม่สำเร็จ

ประเภทการอัปเดตคำสั่งซื้อ

ปุ่ม

กําหนดองค์ประกอบอินเทอร์เฟซผู้ใช้ที่คุณสามารถเพิ่มเพื่อให้ผู้ใช้โต้ตอบได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Button

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
title String

ต้องระบุ

ป้ายกำกับที่แสดง ใช้ลักษณะตัวพิมพ์ของประโยคที่มีอักขระไม่เกิน 30 ตัวเพื่อให้แน่ใจว่าการแสดงผลถูกต้อง

ตัวอย่าง: Contact us

openUrlAction OpenUrlAction

ต้องระบุ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Button

ตัวอย่าง

{
  "title": "Send us feedback",
  "openUrlAction": {
    "url": "mailto:person@example.com"
  }
}

CancellationInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CancellationInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
reason String

ต้องระบุ

เหตุผลแบบข้อความที่แสดงได้สำหรับการปฏิเสธเมื่อ OrderState.state เป็น "CANCELLED"

ตัวอย่าง: Restaurant closed

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CancellationInfo

ตัวอย่าง

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

ประเภทนี้จะแสดงช่วงเวลาโดยประมาณที่สินค้าจะจัดส่งหรือพร้อมให้รับ ส่งส่วนขยายนี้ใน OrderUpdate ทุกครั้งที่มีข้อมูลหรือมีการเปลี่ยนแปลงข้อมูลนับตั้งแต่ส่งครั้งล่าสุด

ระบุค่าประมาณแบบอนุรักษ์นิยมสำหรับช่วงเวลาการดำเนินการเพื่อให้เป็นไปตามความคาดหวังของผู้ใช้อย่างสม่ำเสมอ เช่น หากคาดว่าจะนำส่งคำสั่งซื้อในวันนี้เวลา 13:00 น. คุณควรส่งช่วงเวลาโดยประมาณที่สอดคล้องกับความผันผวนเนื่องจากสภาพการจราจร เช่น วันนี้เวลา 12:45 น. ถึง 13:15 น.

ระบบจะตีความระยะเวลาหรือการประทับเวลา ISO 8601 ว่าหมายถึงช่วงเวลาจาก updateTime ของ OrderUpdate (โดยพื้นฐานคือ "ตอนนี้") ถึง updateTime บวก duration อย่าใช้รูปแบบนี้ เว้นแต่ว่า "ตอนนี้" จะเป็นความคาดหวังที่สมเหตุสมผล

ระบบจะตีความช่วงเวลา ISO 8601 ว่าหมายถึงช่วงเวลาตั้งแต่เริ่มต้นจนถึงสิ้นสุดของช่วงเวลา

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FoodOrderUpdateExtension

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
@type Const

ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension" เสมอ

ค่า: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 String

เวลาโดยประมาณที่จะมีการนำส่งคำสั่งซื้อหรือพร้อมให้มารับ สตริงต้องอยู่ในรูปแบบ ISO 8601 และต้องสอดคล้องกับช่วงเวลา ไม่ใช่เวลาแบบคงที่ครั้งเดียว รูปแบบที่ยอมรับ ได้แก่ ช่วงเวลา ระยะเวลา และวันที่/เวลา ฟิลด์นี้สามารถส่งใน SubmitOrderResponseMessage หรือ AsyncOrderUpdateRequestMessage เมื่อข้อมูลพร้อมใช้งานหรือมีการเปลี่ยนแปลง เช่น มาถึงก่อนกำหนดหรือล่าช้า

ตัวอย่าง: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors List<FoodOrderError>

อธิบายข้อผิดพลาดที่เกิดขึ้นหลังการสั่งซื้อ แนะนำข้อผิดพลาด 1 ข้อต่อรถเข็นหรือต่อสินค้า 1 รายการ ใช้ FoodOrderUpdateExtension.FoodOrderErrors สำหรับข้อผิดพลาดที่ไม่ได้อยู่ใน RejectionInfo

ต้องมีอย่างน้อย 1 รายการ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FoodOrderUpdateExtension

ตัวอย่างที่ 1

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
}

ตัวอย่างที่ 2

{
  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
  "foodOrderErrors": [
    {
      "error": "NO_CAPACITY",
      "description": "Sorry, the restaurant cannot take your order right now."
    }
  ]
}

FulfillmentInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท FulfillmentInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม
deliveryTime กลุ่ม 1 การประทับเวลา ISO

ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

pickupTime กลุ่ม 2 การประทับเวลา ISO

ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ FulfillmentInfo

ตัวอย่างที่ 1

{
  "deliveryTime": "2017-05-10T02:36:38.803Z"
}

ตัวอย่างที่ 2

{
  "pickupTime": "2019-12-26T07:24:27.803Z"
}

InTransitInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท InTransitInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
updatedTime การประทับเวลา ISO

ใช้ estimatedFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ InTransitInfo

ตัวอย่าง

{
  "updatedTime": "2017-05-10T02:36:38.803Z"
}

LineItemUpdate

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท LineItemUpdate

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
orderState OrderState
price Price
reason String

เหตุผลของการเปลี่ยนแปลง ต้องระบุสำหรับการเปลี่ยนแปลงราคา

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ LineItemUpdate

ตัวอย่าง

{
  "orderState": {
    "state": "CONFIRMED",
    "label": "Provider confirmed"
  },
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "5",
      "nanos": 500000000
    }
  },
  "reason": "Menu updated prices."
}

OpenUrlAction

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OpenUrlAction

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
url String

ต้องระบุ

การดําเนินการที่เรียกให้แสดงด้วยการคลิกหรือแตะปุ่ม รายการคำนำหน้าที่เกี่ยวข้องจะขึ้นอยู่กับ orderManagementActionType "EMAIL": คำนำหน้าต้องเป็น "mailto" "CALL": คำนำหน้าต้องเป็น "tel" "CUSTOMER_SERVICE": คำนำหน้าต้องเป็น "mailto", "tel", "http" หรือ "https"

ตัวอย่าง: https://www.google.com

OrderManagementAction

การจัดการคำสั่งซื้อช่วยให้ผู้ใช้ได้รับการสนับสนุนหลังสั่งซื้อ และควรส่งใน OrderUpdate แต่ละรายการภายในคำสั่งซื้อที่ส่ง AppResponse และAsyncOrderUpdateRequestMessage แต่ละรายการที่ส่งตามมา การดำเนินการจัดการคำสั่งซื้อที่ส่งสำหรับคำสั่งซื้อหนึ่งๆ อาจแตกต่างกันไปตามสถานะ

ตัวอย่างเช่น ในสถานะ "สร้างแล้ว" CUSTOMER_SERVICE อาจอ้างอิงหมายเลขโทรศัพท์ของฝ่ายสนับสนุนลูกค้า จากนั้นในสถานะ "ยืนยันแล้ว" CUSTOMER_SERVICEจะเปลี่ยนเป็นหมายเลขโทรศัพท์ของร้านอาหารได้หากเป็นช่องทางติดต่อที่ดีที่สุดสำหรับลูกค้า ในทำนองเดียวกัน เมื่อคำสั่งซื้ออยู่ในสถานะ "ดำเนินการแล้ว" CUSTOMER_SERVICE จะอ้างอิงอีเมลการสนับสนุนของคุณได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderManagementAction

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
type OrderManagementActionType

ต้องระบุ

button Button

ต้องระบุ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderManagementAction

ตัวอย่างที่ 1

{
  "type": "CUSTOMER_SERVICE",
  "button": {
    "title": "Contact customer service",
    "openUrlAction": {
      "url": "mailto:support@example.com"
    }
  }
}

ตัวอย่างที่ 2

{
  "type": "EMAIL",
  "button": {
    "title": "Email restaurant",
    "openUrlAction": {
      "url": "mailto:person@example.com"
    }
  }
}

OrderManagementActionType

กำหนดประเภทที่เกี่ยวข้องกับ OrderManagementAction

ประเภท OrderManagementActionType มีค่าที่เป็นไปได้ดังนี้

  • CUSTOMER_SERVICE: อีเมลและ/หรือหมายเลขติดต่อของฝ่ายบริการลูกค้าที่จะแสดงในหน้ายืนยันคำสั่งซื้อ ต้องระบุค่านี้ โดยคำนำหน้า openUrlAction.url ต้องคือ "mailto", "tel", "http" หรือ "https"
  • EMAIL: การดำเนินการทางอีเมลในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "mailto"
  • CALL_DRIVER: เรียกใช้การดําเนินการในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "tel"
  • CALL_RESTAURANT: เรียกใช้การดําเนินการในหน้ารายละเอียดคำสั่งซื้อเท่านั้น โดยคำนำหน้า openUrlAction.url ต้องเป็น "tel"

OrderState

สถานะปัจจุบันของคำสั่งซื้อ ค่า state แต่ละค่าของ OrderState ยังสอดคล้องกับสถานะการซื้อใน myaccount.google.com ด้วย

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OrderState

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
state OrderStateEnum

ต้องระบุ

label String

ต้องระบุ

สตริงการแสดงผลที่ผู้ใช้มองเห็นสำหรับสถานะ ขึ้นต้นประโยคด้วยตัวพิมพ์ใหญ่ หรือใช้ตัวพิมพ์ใหญ่กับอักษรตัวแรกของคำและวิสามานยนาม (สำหรับภาษาอังกฤษ)

ตัวอย่าง: Your order has been received

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OrderState

ตัวอย่าง

{
  "state": "CONFIRMED",
  "label": "Provider confirmed"
}

OrderStateEnum

กำหนดประเภทที่เกี่ยวข้องกับ OrderState

ประเภท OrderStateEnum มีค่าที่เป็นไปได้ดังนี้

  • CREATED: คำสั่งซื้อที่สร้างโดยผู้ผสานรวมและรอการยืนยันจากผู้ให้บริการ สอดคล้องกับสถานะการซื้อ "สั่งซื้อแล้ว"
  • CONFIRMED: คำสั่งซื้อที่ยืนยันโดยผู้ให้บริการและใช้งานอยู่ สอดคล้องกับสถานะการซื้อ "ยอมรับ"
  • REJECTED: คำสั่งซื้อถูกปฏิเสธโดยผู้ผสานรวมหรือผู้ให้บริการ สอดคล้องกับสถานะการซื้อ "ถูกปฏิเสธ"
  • CANCELLED: ผู้ใช้ยกเลิกคำสั่งซื้อ สอดคล้องกับสถานะการซื้อ "ยกเลิกแล้ว"
  • IN_PREPARATION: กำลังเตรียมอาหาร สอดคล้องกับสถานะการซื้อ "สถานะไม่รู้จัก"
  • READY_FOR_PICKUP: อาหารพร้อมให้รับแล้ว สอดคล้องกับสถานะการซื้อ "พร้อมรับสินค้า"
  • IN_TRANSIT: กำลังนำส่งคำสั่งซื้อ สอดคล้องกับสถานะการซื้อ "อยู่ระหว่างดำเนินการ"
  • FULFILLED: ผู้ใช้ได้รับสิ่งที่สั่งซื้อ สอดคล้องกับสถานะการซื้อ "รับแล้ว"

ใบเสร็จรับเงิน

ส่งประเภทนี้ในคําสั่งซื้อที่ส่ง AppResponse โดยที่ OrderState คือ "CONFIRMED", "FULFILLED" หรือ "IN_TRANSIT" ส่งใบเสร็จเมื่อuserVisibleOrderIdพร้อมให้บริการ คุณไม่จำเป็นต้องส่งใบเสร็จในการอัปเดตครั้งต่อๆ ไป

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Receipt

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
userVisibleOrderId String

ต้องระบุ

ต้องระบุหากคำสั่งซื้อเป็น "CONFIRMED", "IN_TRANSIT" หรือ "FULFILLED" ฟิลด์นี้เป็นรหัสที่แสดงต่อผู้ใช้รายการเดียวสําหรับคําสั่งซื้อนี้ (โดยปกติคือรหัสคําสั่งซื้อของร้านอาหาร) ซึ่งแสดงทั้งในใบเสร็จของผู้ผสานรวมและการ์ดคําสั่งซื้อของ Google ผู้ใช้ต้องใช้รหัสนี้เพื่ออ้างอิงคำสั่งซื้อสำหรับบริการลูกค้ากับผู้ให้บริการและผู้ผสานรวมได้ คุณจะต้องระบุรหัสนี้เพียงครั้งเดียวใน OrderUpdate แต่ละรายการ จนกว่าจะระบุค่านี้ ระบบจะใช้ actionOrderId เป็น userVisibleOrderId เช่น คุณอาจไม่มี userVisibleOrderId จนกว่าร้านอาหารจะยืนยันคำสั่งซื้อ เมื่อยืนยันแล้ว คุณต้องส่ง AsyncOrderUpdateRequestMessage พร้อม OrderUpdate และใบเสร็จ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Receipt

ตัวอย่าง

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท RejectionInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
type RejectionType

ต้องระบุ

reason String

เหตุผลที่ปฏิเสธซึ่งใช้สำหรับการบันทึกภายใน ผู้ใช้จะไม่เห็นช่องนี้

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ RejectionInfo

ตัวอย่าง

{
  "type": "PAYMENT_DECLINED",
  "reason": "There is an issue with payment processing."
}

RejectionType

ประเภท RejectionType มีค่าที่เป็นไปได้ดังนี้

  • INELIGIBLE: ผู้ใช้ไม่มีสิทธิ์เนื่องจากข้อกังวลด้านนโยบายหรือความเสี่ยง
  • PAYMENT_DECLINED: มีปัญหาเกี่ยวกับการประมวลผลการชำระเงิน
  • UNAVAILABLE_SLOT: ไม่สามารถดำเนินการตามคำสั่งซื้อได้ในเวลาสั่งซื้อล่วงหน้าที่ระบุโดย DeliveryInfo หรือ PickupInfo
  • PROMO_NOT_APPLICABLE: มีปัญหาเกี่ยวกับโปรโมชัน
  • UNKNOWN: เหตุผลอื่นๆ

ประเภทที่เกี่ยวข้องกับการชําระเงิน

ส่วนนี้จะอธิบายประเภทที่เกี่ยวข้องกับการชำระเงินซึ่งใช้สำหรับการสั่งซื้ออาหารและการดำเนินการตามคำสั่งซื้อ

ActionProvidedPaymentOptions

ข้อกำหนดสำหรับวิธีการชำระเงินที่ระบุการดำเนินการ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท ActionProvidedPaymentOptions

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
paymentType PaymentType

ต้องระบุ

displayName String

ต้องระบุ

ชื่อเครื่องมือการชำระเงินที่แสดงในใบเสร็จ

ตัวอย่าง: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

ข้อมูลเพิ่มเติมสำหรับ paymentType "ON_FULFILLMENT" เช่น คุณสามารถใช้ช่องนี้เพื่อระบุว่าการจำหน่ายสินค้ารองรับการชำระเงินด้วยเงินสดหรือบัตรหรือไม่

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ ActionProvidedPaymentOptions

ตัวอย่าง

{
  "paymentType": "ON_FULFILLMENT",
  "displayName": "Pay when you get your food.",
  "onFulfillmentPaymentData": {
    "supportedPaymentOptions": [
      "Cash",
      "Card"
    ]
  }
}

AllowedAuthMethods

ประเภท AllowedAuthMethods มีค่าที่เป็นไปได้ดังนี้

  • PAN_ONLY: วิธีการตรวจสอบสิทธิ์ที่เชื่อมโยงกับบัตรสําหรับชําระเงินที่จัดเก็บไว้ในบัญชี Google ของผู้ใช้ ข้อมูลการคืนเงินประกอบด้วยหมายเลขบัญชีส่วนบุคคล (PAN) พร้อมเดือนและปีหมดอายุ

AllowedCardNetworks

ประเภท AllowedCardNetworks มีค่าที่เป็นไปได้ดังนี้

  • AMEX
  • DISCOVER
  • INTERAC
  • JCB
  • MASTERCARD
  • VISA

BillingAddressParameters

ออบเจ็กต์นี้ช่วยให้คุณตั้งค่าฟิลด์เพิ่มเติมที่จะแสดงผลสําหรับที่อยู่สําหรับการเรียกเก็บเงินที่ขอได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท BillingAddressParameters

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
format String

รูปแบบที่อยู่สำหรับการเรียกเก็บเงินต้องถูกต้องเพื่อทำธุรกรรมให้เสร็จสมบูรณ์ MIN: ชื่อ รหัสประเทศ และรหัสไปรษณีย์ สมบูรณ์: ชื่อ ที่อยู่ สถานที่ตั้ง ภูมิภาค รหัสประเทศ และรหัสไปรษณีย์

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ BillingAddressParameters

ตัวอย่างที่ 1

{
  "format": "MIN"
}

ตัวอย่างที่ 2

{
  "format": "FULL"
}

CardParameters

ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท CardParameters

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
allowedAuthMethods List<Const>

ต้องระบุ

ฟิลด์ที่รองรับการตรวจสอบสิทธิ์ธุรกรรมผ่านบัตร

ต้องมีอย่างน้อย 1 รายการ

allowedCardNetworks List<AllowedCardNetworks>

ต้องระบุ

เครือข่ายบัตรอย่างน้อย 1 เครือข่ายที่คุณรองรับและ Google Pay API รองรับด้วย

ต้องมีอย่างน้อย 1 รายการ

billingAddressRequired บูลีน

ตั้งค่าเป็น "จริง" หากต้องการที่อยู่สําหรับการเรียกเก็บเงิน ขอที่อยู่สำหรับเรียกเก็บเงินเฉพาะในกรณีที่จำเป็นต้องดำเนินการธุรกรรม คำขอข้อมูลเพิ่มเติมอาจทำให้เกิดความยุ่งยากในกระบวนการชำระเงินและทำให้อัตรา Conversion ลดลง

billingAddressParameters BillingAddressParameters

ฟิลด์ที่คาดไว้ซึ่งจะแสดงหากตั้งค่า billingAddressRequired เป็น "จริง"

cvcRequired บูลีน

ตั้งค่าเป็น "จริง" หากใช้ TimesofMoney และ "เท็จ" สำหรับผู้ให้บริการประมวลผลการชำระเงินรายอื่นๆ ทั้งหมด

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ CardParameters

ตัวอย่างที่ 1

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": false,
  "cvcRequired": false
}

ตัวอย่างที่ 2

{
  "allowedAuthMethods": [
    "PAN_ONLY"
  ],
  "allowedCardNetworks": [
    "AMEX",
    "DISCOVER"
  ],
  "billingAddressRequired": true,
  "billingAddressParameters": {
    "format": "MIN"
  },
  "cvcRequired": false
}

GoogleProvidedPaymentInstrument

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท GoogleProvidedPaymentInstrument

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
instrumentToken String

ต้องระบุ

สตริงที่เข้ารหัส Base 64 ซึ่งมีโทเค็นการชำระเงินสำหรับการเรียกเก็บเงินจากผู้ใช้ด้วยผู้ประมวลผลการชำระเงิน Google Pay ที่เข้าร่วมตาม GoogleProvidedPaymentOptions ที่ระบุไว้ก่อนหน้านี้

billingAddress PostalAddress

ที่อยู่สําหรับเรียกเก็บเงิน

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ GoogleProvidedPaymentInstrument

ตัวอย่าง

{
  "instrumentToken": "abcd",
  "billingAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  }
}

GoogleProvidedPaymentOptions

ข้อกำหนดสำหรับวิธีการชำระเงินที่ Google มีให้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท GoogleProvidedPaymentOptions

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
facilitationSpecification String

JSON ของ PaymentDataRequest เป็นสตริง ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์

supportedCardNetworks List<SupportedCardNetworks>

ให้ใช้ facilitationSpecification แทน ประเภทเครือข่ายบัตรที่ตัวแทนรองรับ

ช่องนี้เลิกใช้งานแล้ว

prepaidCardDisallowed บูลีน

ให้ใช้ facilitationSpecification แทน อนุญาตให้ใช้บัตรแบบชำระเงินล่วงหน้าเป็นประเภทการชำระเงินหรือไม่

ช่องนี้เลิกใช้งานแล้ว

billingAddressRequired บูลีน

ให้ใช้ facilitationSpecification แทน จำเป็นต้องระบุที่อยู่สำหรับการเรียกเก็บเงินหรือไม่

ช่องนี้เลิกใช้งานแล้ว

tokenizationParameters TokenizationParameters

ช่องนี้เลิกใช้งานแล้ว

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ GoogleProvidedPaymentOptions

ตัวอย่างที่ 1

{
  "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
}

ตัวอย่างที่ 2

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "braintree",
      "braintree:apiVersion": "v1",
      "braintree:sdkVersion": "1.4.0",
      "braintree:merchantId": "a1b2c3d4e5",
      "braintree:clientKey": "production_braintree_client_key",
      "braintree:authorizationFingerprint": "same_as_client_key"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "JCB",
    "VISA"
  ],
  "prepaidCardDisallowed": true
}

ตัวอย่างที่ 3

{
  "tokenizationParameters": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "stripe",
      "stripe:publishableKey": "pk_live_stripe_client_key",
      "stripe:version": "2017-04-06"
    }
  },
  "supportedCardNetworks": [
    "AMEX",
    "DISCOVER",
    "MASTERCARD",
    "VISA",
    "JCB"
  ],
  "prepaidCardDisallowed": true,
  "billingAddressRequired": true
}

MerchantInfo

ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท MerchantInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
merchantId String

ตัวระบุผู้ขายของ Google ที่ Google Pay ออกให้คุณ

merchantName String

ต้องระบุ

ชื่อผู้ขายที่เข้ารหัสเป็น UTF-8 ชื่อผู้ขายจะแสดงในใบแจ้งหนี้

OnFulfillmentPaymentData

ใช้ออบเจ็กต์นี้เพื่อส่งข้อมูลเพิ่มเติมสำหรับ PaymentType "ON_FULFILLMENT"

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท OnFulfillmentPaymentData

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
supportedPaymentOptions List<PaymentOptionsEnums>

รายการตัวเลือกการชำระเงินที่พร้อมให้บริการแก่ผู้ใช้ ณ เวลาที่ดำเนินการตามคำสั่งซื้อ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ OnFulfillmentPaymentData

ตัวอย่าง

{
  "supportedPaymentOptions": [
    "Cash",
    "Card"
  ]
}

พารามิเตอร์

กำหนดประเภทที่เกี่ยวข้องกับ TokenizationParameters

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท Parameters

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
gateway String

ต้องระบุ

ตัวอย่าง: braintree

gatewayMerchantId String
[additionalKey: string] String คู่คีย์-ค่าเพิ่มเติม

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ Parameters

ตัวอย่างที่ 1

{
  "gatewayMerchantId": "90412491",
  "gateway": "olo"
}

ตัวอย่างที่ 2

{
  "gateway": "braintree",
  "braintree:apiVersion": "v1",
  "braintree:sdkVersion": "1.4.0",
  "braintree:merchantId": "YOUR_MERCHANT_ID",
  "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY"
}

PaymentDataRequest

ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentDataRequest

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
apiVersion Const

ต้องระบุ

เวอร์ชันหลักของ API

ค่า: 2

apiVersionMinor Const

ต้องระบุ

เวอร์ชันย่อยของ API

ค่า: 0

merchantInfo MerchantInfo

ต้องระบุ

(รหัสผู้ขาย Google Pay) ข้อมูลเกี่ยวกับผู้ขายที่ขอข้อมูลการชำระเงิน

allowedPaymentMethods List<PaymentMethod>

ต้องระบุ

ระบุการรองรับวิธีการชำระเงินอย่างน้อย 1 วิธีซึ่ง Google Pay API รองรับ

transactionInfo TransactionInfo

ต้องระบุ

รายละเอียดเกี่ยวกับการให้สิทธิ์ธุรกรรมโดยขึ้นอยู่กับว่าผู้ใช้ยอมรับธุรกรรมหรือไม่ ช่องนี้ประกอบด้วยราคารวมและสถานะราคา

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentDataRequest

ตัวอย่าง

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "billingAddressParameters": {
          "format": "FULL"
        },
        "cvcRequired": false
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "stripe",
          "stripe:version": "2019-05-16",
          "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA"
        }
      }
    }
  ],
  "transactionInfo": {
    "currencyCode": "INR",
    "totalPriceStatus": "ESTIMATED",
    "totalPrice": "185.00"
  }
}

PaymentInfo

ข้อมูลเกี่ยวกับการชำระเงินสำหรับคำสั่งซื้อ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
displayName String

ต้องระบุ

ชื่อเครื่องมือการชำระเงินที่ผู้ใช้มองเห็นได้เพื่อแสดงในใบเสร็จ

paymentType PaymentType

ต้องระบุ

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

โทเค็นที่การดำเนินการใช้ได้ โปรดระบุเฉพาะในกรณีที่คุณระบุ GoogleProvidedPaymentOptions เป็นตัวเลือกการชำระเงินใน CheckoutResponseMessage

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentInfo

ตัวอย่างที่ 1

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd"
  },
  "paymentType": "PAYMENT_CARD"
}

ตัวอย่างที่ 2

{
  "displayName": "Visa\u2006****\u20061111",
  "googleProvidedPaymentInstrument": {
    "instrumentToken": "abcd",
    "billingAddress": {
      "regionCode": "US",
      "postalCode": "94043",
      "administrativeArea": "CA",
      "locality": "Mountain View",
      "addressLines": [
        "123 Random Street",
        "Unit ABC"
      ],
      "recipients": [
        "sample_receipient"
      ]
    }
  },
  "paymentType": "PAYMENT_CARD"
}

PaymentMethod

ใช้ออบเจ็กต์นี้เพื่อกำหนดค่าการรองรับ Google Pay API ของเว็บไซต์

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentMethod

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
type Const

ต้องระบุ

ตัวระบุสั้นๆ สำหรับวิธีการชำระเงินที่รองรับ ปัจจุบันรองรับเฉพาะ CARD เท่านั้น

ค่า: CARD

parameters CardParameters

ต้องระบุ

พารามิเตอร์ที่จําเป็นสําหรับกําหนดค่าประเภทวิธีการชําระเงินที่ระบุ

tokenizationSpecification TokenizationSpecification

ต้องระบุ

กำหนดค่าบัญชีหรือผู้ให้บริการการถอดรหัสเพื่อรับข้อมูลการชำระเงิน พร็อพเพอร์ตี้นี้จำเป็นสำหรับวิธีการชำระเงินแบบบัตร

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentMethod

ตัวอย่าง

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": [
      "PAN_ONLY"
    ],
    "allowedCardNetworks": [
      "VISA",
      "AMEX",
      "MASTERCARD"
    ],
    "billingAddressRequired": false
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gatewayMerchantId": "90412491",
      "gateway": "olo"
    }
  }
}

PaymentOptions

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท PaymentOptions

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
คุณต้องระบุกลุ่มพร็อพเพอร์ตี้ต่อไปนี้เพียง 1 กลุ่ม
googleProvidedOptions กลุ่ม 1 GoogleProvidedPaymentOptions

ใช้ร่วมกันไม่ได้กับ actionProvidedOptions ใช้สำหรับการชำระเงินออนไลน์โดยใช้ gPay

actionProvidedOptions กลุ่ม 2 ActionProvidedPaymentOptions

ใช้ร่วมกันไม่ได้กับ googleProvidedOptions ใช้สำหรับ "ชำระเงินเมื่อนำส่ง" หรือ "ชำระเงินเมื่อดำเนินการตามคำสั่งซื้อ"

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ PaymentOptions

ตัวอย่างที่ 1

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\": false    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

ตัวอย่างที่ 2

{
  "googleProvidedOptions": {
    "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": {  \"merchantId\": \"Merchant ID\",  \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [  {    \"type\": \"CARD\",    \"parameters\": {      \"allowedAuthMethods\": [        \"PAN_ONLY\"      ],      \"allowedCardNetworks\": [        \"VISA\",        \"AMEX\",        \"MASTERCARD\"      ],      \"billingAddressRequired\":true,   \"billingAddressParameters\": {  \"format\":\"MIN\"  }    },    \"tokenizationSpecification\": {      \"type\": \"PAYMENT_GATEWAY\",      \"parameters\": {        \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\",        \"gateway\": \"stripe\",        \"stripe:version\": \"2019-05-16\"      }    }  }],\"transactionInfo\": {  \"currencyCode\": \"AUD\",  \"totalPriceStatus\": \"ESTIMATED\",  \"totalPrice\": \"1.0\"}}"
  }
}

ตัวอย่างที่ 3

{
  "actionProvidedOptions": {
    "paymentType": "ON_FULFILLMENT",
    "displayName": "Pay when you get your food.",
    "onFulfillmentPaymentData": {
      "supportedPaymentOptions": [
        "Cash",
        "Card"
      ]
    }
  }
}

PaymentOptionsEnums

ประเภท PaymentOptionsEnums มีค่าที่เป็นไปได้ดังนี้

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

ประเภท PaymentType มีค่าที่เป็นไปได้ดังนี้

  • PAYMENT_CARD: สำหรับ GoogleProvidedPaymentOptions
  • ON_FULFILLMENT: สำหรับ ActionProvidedPaymentOptions

SupportedCardNetworks

กำหนดประเภทที่เกี่ยวข้องกับ GoogleProvidedPaymentOptions

ประเภท SupportedCardNetworks มีค่าที่เป็นไปได้ดังนี้

  • UNSPECIFIED_CARD_NETWORK
  • AMEX
  • DISCOVER
  • JCB
  • MASTERCARD
  • VISA

TokenizationParameters

กำหนดประเภทที่เกี่ยวข้องกับ GoogleProvidedPaymentOptions

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TokenizationParameters

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

ต้องระบุ

ให้ใช้ facilitationSpecification แทน ประเภทโทเค็นที่ยอมรับ

parameters Parameters

ให้ใช้ facilitationSpecification แทน

TokenizationSpecification

ออบเจ็กต์นี้ช่วยให้คุณกำหนดค่าบัญชีเพื่อรับข้อมูลการชำระเงินแบบเรียกเก็บเงินได้

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TokenizationSpecification

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
type Const

ต้องระบุ

parameters Parameters

ต้องระบุ

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TokenizationSpecification

ตัวอย่างที่ 1

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gatewayMerchantId": "1247192",
    "gateway": "cybersource"
  }
}

ตัวอย่างที่ 2

{
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "stripe",
    "stripe:version": "2018-10-31",
    "stripe:publishableKey": "12378127"
  }
}

TransactionInfo

ออบเจ็กต์นี้อธิบายธุรกรรมที่กําหนดความสามารถในการชําระเงินของผู้ชําระเงิน ใช้เพื่อแสดงกล่องโต้ตอบการกันวงเงินบัตรเครดิต/บัตรเดบิต

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้สำหรับประเภท TransactionInfo

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
currencyCode String

ต้องระบุ

รหัสสกุลเงินที่เป็นตัวอักษรตามมาตรฐาน ISO 4217

transactionId String

รหัสที่ไม่ซ้ำกันซึ่งระบุถึงธุรกรรมที่พยายามทำ ผู้ขายอาจใช้รหัสที่มีอยู่หรือสร้างรหัสเฉพาะสำหรับการพยายามทำธุรกรรมผ่าน Google Pay คุณต้องกรอกข้อมูลในช่องนี้เมื่อส่งการเรียกกลับไปยัง Google Transaction Events API

totalPriceStatus Const

ต้องระบุ

ใช้ "ESTIMATED" เป็นค่าเริ่มต้น ราคารวมอาจปรับตามรายละเอียดของคำตอบ เช่น ภาษีการขายที่เรียกเก็บตามที่อยู่สำหรับการเรียกเก็บเงิน

ค่า: ESTIMATED

totalPrice String

ต้องระบุ

มูลค่าเงินทั้งหมดของธุรกรรมที่มีทศนิยม 2 ตำแหน่ง (ไม่บังคับ) ช่องนี้ควรมีค่าเดียวกับ cart.totalPrice

ตัวอย่างต่อไปนี้แสดงองค์ประกอบ TransactionInfo

ตัวอย่าง

{
  "totalPriceStatus": "ESTIMATED",
  "totalPrice": "12.34",
  "currencyCode": "USD"
}