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

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

ประเภทฐาน

รถเข็น

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

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

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

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

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

id String

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

merchant Merchant

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

lineItems รายการ<LineItem>

ต้องระบุ

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

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

promotions รายการ<Promotion>

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

notes String

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

extension FoodCartExtension

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

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

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

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

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

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

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

ระบุรายละเอียดเกี่ยวกับผู้ที่รับคำสั่งซื้อ ซึ่งมีจำหน่ายเฉพาะใน AppResponse

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

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

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

เช่น 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{hours}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M จะแสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งชี้ว่าเวลานำส่งที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Merged_date_and_time_representations ใช้ข้อมูลนี้เพื่ออัปเดตเวลานำส่งโดยประมาณในช่วงตอบกลับการชำระเงิน

เช่น 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 ข้อเสีย

ประเภทของส่วนขยายนี้ ช่องนี้จะตั้งค่าเป็น "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 ข้อเสีย

ต้องระบุ

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

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

foodOrderErrors รายการ<FoodOrderError>

ต้องระบุ

อาร์เรย์ของออบเจ็กต์ FoodOrderError ที่อธิบายข้อผิดพลาดที่เกิดขึ้น แนะนำให้ระบุข้อผิดพลาด 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 รายการ<PaymentOptions>

ตัวเลือกการชําระเงินอื่นๆ ที่ผู้ใช้ใช้งานได้

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

ตัวอย่าง

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

FoodItemExtension

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

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

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

ต้องระบุ

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

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

options รายการ<FoodItemOption>

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

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

ตัวอย่าง

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

FoodItemOption

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

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

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

เช่น 39231093

offerId String

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

เช่น 912835081

name String

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

เช่น Honey Mustard

price Money
note String

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

quantity Number

จำนวนรายการสำหรับตัวเลือกที่เป็นสินค้า

เช่น 3

subOptions รายการ<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"

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

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

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

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

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

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

FoodOrderExtension

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

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

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

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

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

availableFulfillmentOptions รายการ<FulfillmentOption>

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

optinForRemarketing บูลีน

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

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

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

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

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

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

FulfillmentOption

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

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

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

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

fulfillmentInfo FulfillmentOptionInfo

ต้องระบุ

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

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

price Money

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

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

ตัวอย่าง

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

FulfillmentOptionInfo

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

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

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

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

pickup กลุ่ม 2 PickupInfo

หากมี ให้ระบุคำสั่งซื้อแบบไปรับเอง

รูปภาพ

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

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

ต้องระบุ

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

LineItem

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

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

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

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

สำหรับบรรทัดรายการในรถเข็น (ProposedOrder.cart.lineItems[0].id) นี่คือรหัสที่ไม่ซ้ำกันที่ Google สร้างขึ้นเมื่อสร้างคำสั่งซื้อ สำหรับบรรทัดรายการใน ProposedOrder (ProposedOrder.otherItems[0].id) ซึ่งใช้ในการเพิ่มรายการต่างๆ เช่น ค่าธรรมเนียมการนำส่งและภาษี ผู้ให้บริการจะเป็นผู้กำหนดค่าของรหัส เช่น ในรถเข็นจะมีรายการเดียวกัน 2 รายการพร้อมวิธีการเตรียมที่แตกต่างกัน (เช่น พิซซ่าขนาดกลาง 2 ถาดที่มีท็อปปิ้งหลายชุด) ในกรณีนี้ สินค้าทั้ง 2 รายการมีรหัสข้อเสนอพื้นฐานเหมือนกัน เมื่อคุณส่งคำขออัปเดตคำสั่งซื้อเพื่อระบุว่าสินค้าถูกปฏิเสธ ให้ใช้รหัสนี้เป็นเครื่องหมายชี้แจง กล่าวอีกนัยหนึ่งคือ ถ้าพิซซ่าอันใดอันหนึ่งถูกปฏิเสธเนื่องจากไม่มีท็อปปิ้ง รหัสจะช่วยให้ 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) ราคาฐานคือ 150 บาทและพิซซ่าแต่ละชิ้นมีส่วนเสริม 30 บาท ราคาจะเท่ากับ 360 บาท รายการโฆษณาแต่ละรายการควรมีราคา แม้ว่าราคาจะเป็น "0" ก็ตาม เมื่อประเภทคือ DISCOUNT ให้ระบุค่าเป็นลบ (เช่น "-2")

subLines รายการ<SublineNote>

ไม่บังคับและใช้ได้เฉพาะเมื่อประเภทเป็น "REGULAR" ระบบอาจส่งหมายเหตุเฉพาะสินค้าจากผู้ใช้ในช่องนี้ในคำขอชำระเงินและคำขอส่งคำสั่งซื้อ ตรวจสอบว่าผู้ขายได้รับหมายเหตุเมื่อมีข้อความแล้ว จะอยู่ในคำขอเป็น 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: รายการโฆษณาแบบมีค่าตอบแทน โดยทั่วไปแล้ว สงวนไว้สำหรับ SendOrderRequestMessage สำหรับเคล็ดลับที่ผู้ใช้เลือก ใช้ได้กับ 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 ใช้กฎต่อไปนี้: หากหน่วยเป็นบวก นาโนจะต้องเป็นค่าบวกหรือศูนย์ หากหน่วยเป็น 0 นาโนอาจเป็นบวก 0 หรือค่าลบ หากหน่วยเป็นค่าลบ นาโนจะต้องเป็นค่าลบหรือ 0 ตัวอย่างเช่น $-1.75 จะแสดงเป็นหน่วย = -1 และนาโน = -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 สำหรับ "CREATED" รหัสนี้จะเป็นรหัสที่ผู้ใช้ป้อนลงไปซึ่งมองเห็นได้และแสดงอยู่ในการ์ดคำสั่งซื้อของ Google

orderState OrderState

ต้องระบุ

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

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

ต้องระบุ

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

orderManagementActions รายการ<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{hours}:{min}:{sec}[.{frac_sec}]Z" หรือรูปแบบระยะเวลา: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" เช่น PT90M จะแสดงระยะเวลา 90 นาที ค่าเริ่มต้น "PT0M" บ่งชี้ว่าเวลารับสินค้าที่ต้องการคือโดยเร็วที่สุด ข้อมูลอ้างอิง: https://en.wikipedia.org/wiki/ISO_8601#Merged_date_and_time_representations ใช้ตัวเลือกนี้เพื่ออัปเดตเวลารับสินค้าโดยประมาณในช่วงตอบกลับการชำระเงิน

เช่น PT90M

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

ตัวอย่าง

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

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

ต้องระบุ

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

เช่น US

postalCode String

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

เช่น 94043

administrativeArea String

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

เช่น CA

locality String

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

เช่น Mountain View

addressLines รายการ<สตริง>

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

เช่น [ "1350 Charleston Road" ]

recipients รายการ<สตริง>

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

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

ตัวอย่าง

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

ราคา

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

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

ต้องระบุ

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

amount Money

ต้องระบุ

โปรโมชัน

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

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

ต้องระบุ

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

ProposedOrder

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

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

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

cart Cart

ต้องระบุ

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

otherItems รายการ<LineItem>

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

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

image Image

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

totalPrice Price

ต้องระบุ

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

extension FoodOrderExtension

ต้องระบุ

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

disclaimers รายการ<Disclaimer>

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

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

ตัวอย่าง

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

SublineNote

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

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

ต้องระบุ

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

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

TransactionDecisionValue

มีOrder

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

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

ต้องระบุ

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

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

ตัวอย่าง

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

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

AppRequest

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

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

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

conversation Conversation
inputs รายการ<Input>

ต้องระบุ

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

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

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

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

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

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

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

CheckoutRequestMessage

CheckoutRequestMessage คือ AppRequest โดยมีเจตนา actions.foodordering.intent.CHECKOUT

SubmitOrderRequestMessage

SubmitOrderRequestMessage คือ AppRequest โดยมีเจตนา actions.foodordering.intent.TRANSACTION_DECISION

การสนทนา

Conversation จะไม่ซ้ำกันสำหรับเซสชันหนึ่งๆ เท่านั้น คุณสามารถใช้ Checkout และ SubmitOrder การดำเนินการร่วมกันหากจำเป็น

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

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

ต้องระบุ

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

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

ตัวอย่าง

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

อินพุต

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

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

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

ต้องระบุ

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

arguments รายการ<Argument>

ต้องระบุ

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

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

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

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

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

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

ระบุรายละเอียดรายการอาหารที่ผู้ใช้ต้องการจะชำระเงิน

transactionDecisionValue กลุ่ม 2 TransactionDecisionValue

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

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

AppResponse

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

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

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

ค่า: False

finalResponse FinalResponse

ต้องระบุ

มีข้อมูลตอบกลับการจ่ายเงินในรถเข็น

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

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

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

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

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

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

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

ตัวอย่าง 4

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

CheckoutResponseMessage

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

SubmitOrderResponseMessage

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

FinalResponse

การตอบกลับการชำระค่าสินค้าในรถเข็นหรือ SendOrderRequestMessage

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

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

ต้องระบุ

ประกอบด้วยการตอบกลับของคุณต่อ CheckoutRequestMessage หรือsubmitOrderRequestMessage

CheckoutResponse

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

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

ต้องระบุ

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

paymentOptions PaymentOptions

ต้องระบุ

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

additionalPaymentOptions รายการ<PaymentOptions>

ตัวเลือกการชําระเงินอื่นๆ ที่ผู้ใช้ใช้งานได้

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

ตัวอย่าง

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

รายการ

มีข้อมูลตอบกลับการชำระค่าสินค้าในรถเข็นหรือ SendOrderRequestMessage

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

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

ต้องระบุ

RichResponse

มีข้อมูลการตอบกลับการชำระเงินจากรถเข็น

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

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

ต้องระบุ

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

StructuredResponse

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

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

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

สินค้าที่ชำระเงินบวกภาษีและส่วนลด

error กลุ่ม 2 FoodErrorExtension

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

orderUpdate กลุ่ม 3 OrderUpdate

การอัปเดตคำสั่งซื้อแบบไม่พร้อมกัน

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

AsyncOrderUpdateRequestMessage

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

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

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

ระบุว่าลำดับของการส่งการอัปเดตนี้เป็นการชำระเงินแบบแซนด์บ็อกซ์

customPushMessage CustomPushMessage

ต้องระบุ

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

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

ตัวอย่าง

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

AsyncOrderUpdateResponseMessage

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

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

ปุ่ม

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

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

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

ต้องระบุ

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

เช่น 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 น. คุณควรส่งช่วงเวลาโดยประมาณที่ สอดคล้องกับรูปแบบต่างๆ เนื่องจากสภาพการจราจร เช่น วันนี้ เวลา 00:45 น. เป็น 13:15

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

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

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

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

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

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

estimatedFulfillmentTimeIso8601 String

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

เช่น 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors รายการ<FoodOrderError>

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

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

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

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

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

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

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

FulfillmentInfo

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

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

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

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

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

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

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

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

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

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

InTransitInfo

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

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

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

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

ตัวอย่าง

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

LineItemUpdate

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

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

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

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

ตัวอย่าง

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

OpenUrlAction

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

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

ต้องระบุ

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

เช่น https://www.google.com

OrderManagementAction

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

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

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

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

ต้องระบุ

button Button

ต้องระบุ

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

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

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

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

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

OrderManagementActionType

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

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

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

OrderState

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

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

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

ต้องระบุ

label String

ต้องระบุ

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

เช่น 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 ผู้ใช้ต้องสามารถใช้รหัสนี้เพื่ออ้างอิงคำสั่งซื้อสำหรับฝ่ายบริการลูกค้ากับผู้ให้บริการและผู้ผสานรวมระบบ คุณต้องระบุรหัสนี้เพียงครั้งเดียวในคำสั่งซื้ออัปเดตแต่ละครั้งเท่านั้น 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

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

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

ตัวอย่าง

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

AllowedAuthMethods

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

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

AllowedCardNetworks

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

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

BillingAddressParameters

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

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

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

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

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

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

{
  "format": "MIN"
}

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

{
  "format": "FULL"
}

CardParameters

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

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

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

ต้องระบุ

ช่องที่รองรับเพื่อตรวจสอบสิทธิ์ธุรกรรมผ่านบัตร

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

allowedCardNetworks รายการ<AllowedCardNetworks>

ต้องระบุ

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

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

billingAddressRequired บูลีน

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

billingAddressParameters BillingAddressParameters

ระบบจะแสดงผลฟิลด์ที่คาดไว้หากมีการตั้งค่า billingAddressต้องระบุเป็น "จริง"

cvcRequired บูลีน

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

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

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

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

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

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

GoogleProvidedPaymentInstrument

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

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

ต้องระบุ

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

billingAddress PostalAddress

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

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

ตัวอย่าง

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

GoogleProvidedPaymentOptions

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

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

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

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

supportedCardNetworks รายการ<SupportedCardNetworks>

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

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

prepaidCardDisallowed บูลีน

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

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

billingAddressRequired บูลีน

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

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

tokenizationParameters TokenizationParameters

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

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

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

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

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

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

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

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

MerchantInfo

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

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

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

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

merchantName String

ต้องระบุ

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

OnFulfillmentPaymentData

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

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

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

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

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

ตัวอย่าง

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

พารามิเตอร์

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

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

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

ต้องระบุ

เช่น 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 ข้อเสีย

ต้องระบุ

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

ค่า: 2

apiVersionMinor ข้อเสีย

ต้องระบุ

เวอร์ชัน API รอง

ค่า: 0

merchantInfo MerchantInfo

ต้องระบุ

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

allowedPaymentMethods รายการ<PaymentMethod>

ต้องระบุ

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

transactionInfo TransactionInfo

ต้องระบุ

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

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

ตัวอย่าง

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

PaymentInfo

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

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

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

ต้องระบุ

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

paymentType PaymentType

ต้องระบุ

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

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

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

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

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

PaymentMethod

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

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

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

ต้องระบุ

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

ค่า: CARD

parameters CardParameters

ต้องระบุ

ต้องใช้พารามิเตอร์เพื่อกำหนดค่าประเภทวิธีการชำระเงินที่ระบุ

tokenizationSpecification TokenizationSpecification

ต้องระบุ

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

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

ตัวอย่าง

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

PaymentOptions

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

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

พิเศษพร้อมกันสำหรับ actionProvidedOptions ใช้บัตรนี้ชำระเงินออนไลน์โดยใช้ gPay

actionProvidedOptions กลุ่ม 2 ActionProvidedPaymentOptions

พิเศษร่วมกันสำหรับ googleProvidedOptions ใช้สำหรับ "เก็บเงินปลายทาง" หรือ "จ่ายเมื่อดำเนินการตามคำสั่งซื้อ"

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

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

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

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

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

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

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

PaymentOptionsEnums

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

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

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

  • PAYMENT_CARD: สำหรับ 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 ข้อเสีย

ต้องระบุ

parameters Parameters

ต้องระบุ

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

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

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

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

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

TransactionInfo

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

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

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

ต้องระบุ

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

transactionId String

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

totalPriceStatus ข้อเสีย

ต้องระบุ

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

ค่า: ESTIMATED

totalPrice String

ต้องระบุ

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

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

ตัวอย่าง

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