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

หน้านี้อธิบายเปย์โหลดของบริการเว็บการดําเนินการตามคําสั่งซื้อ (Order with Google API) เมื่อทํางานกับ Order with Google API ในตัว สําหรับข้อมูลในเวอร์ชันที่เครื่องอ่านได้ คุณจะดาวน์โหลดสคีมา JSON ได้

ประเภทฐาน

รถเข็น

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

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

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

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

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

id สตริง

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

merchant Merchant

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

lineItems List<LineItem>

ต้องระบุ

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

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

promotions List<Promotion>

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

notes สตริง

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

extension FoodCartExtension

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

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

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

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

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

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

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

ระบุรายละเอียดเกี่ยวกับผู้รับสินค้าที่สั่งซื้อ และจะใช้ได้เฉพาะใน AppResponse

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

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

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

เช่น Lovefood Ordering

email สตริง

อีเมลของผู้ที่รับสินค้าที่สั่งซื้อ

เช่น ilovefood@example.com

firstName สตริง

ชื่อของบุคคลที่ได้รับคําสั่งซื้อ

เช่น Lovefood

lastName สตริง

นามสกุลของบุคคลที่ได้รับคําสั่งซื้อ

เช่น Ordering

phoneNumber สตริง

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

เช่น +16501234567

emailVerified บูลีน

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

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

ตัวอย่าง

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

ข้อความ Push ที่กําหนดเอง

มี OrderUpdate สําหรับคําขอ

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท CustomPushMessage

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

ต้องระบุ

อัปเดตข้อมูลคําสั่งซื้อแล้ว

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

ตัวอย่าง

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

ข้อมูลการส่ง

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท DeliveryInfo

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

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

เช่น 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: LineItem, FulfillmentOption หรือโปรโมชันมีข้อมูลที่ไม่ถูกต้อง
  • NOT_FOUND: ไม่พบบรรทัดสินค้า, FulfillmentOption หรือโปรโมชัน
  • PRICE_CHANGED: ราคาของสินค้ามีการเปลี่ยนแปลง

ช่วงจํานวนเงินค่าธรรมเนียม

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท FeeAmountRange

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

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

maxFeeAmount Money

ขอบเขตบนของจํานวนเงินที่เรียกเก็บที่เรียกเก็บ..

ช่วงเปอร์เซ็นต์ไทล์

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท FeePercentRange

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

ขอบเขตอัตราล่างของการเรียกเก็บเงินที่เรียกเก็บ

maxFeePercent Number

ขอบเขตบนของค่าใช้จ่ายที่เรียกเก็บ

นามสกุลอาหาร

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท FoodCartExtension

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

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

ต้องระบุ

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

location Location

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

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

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

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

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

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

ส่วนขยายข้อผิดพลาดเกี่ยวกับอาหาร

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท FoodErrorExtension

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

ต้องระบุ

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

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

foodOrderErrors List<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 List<PaymentOptions>

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

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

ตัวอย่าง

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

ส่วนขยายอาหาร

ระบุส่วนเสริมสําหรับรายการอาหาร

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

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

ต้องระบุ

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

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

options List<FoodItemOption>

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

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

ตัวอย่าง

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

ตัวเลือกอาหาร

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

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

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

เช่น 39231093

offerId สตริง

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

เช่น 912835081

name สตริง

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

เช่น Honey Mustard

price Money
note สตริง

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

quantity Number

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

เช่น 3

subOptions List<FoodItemOption>

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

เช่น [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

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

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

{
  "id": "10293231",
  "offerId": "1918491",
  "name": "Honey Mustard",
  "price": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  },
  "quantity": 5
}

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

{
  "id": "123166552",
  "offerId": "912849184",
  "name": "Make It A Meal",
  "price": {
    "currencyCode": "USD",
    "units": "3",
    "nanos": 730000000
  },
  "quantity": 1,
  "subOptions": [
    {
      "id": "10239138",
      "offerId": "912391723",
      "name": "Fries",
      "price": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 230000000
      },
      "quantity": 1
    },
    {
      "id": "57159183",
      "offerId": "81837123",
      "name": "Drink",
      "price": {
        "currencyCode": "USD",
        "units": "3",
        "nanos": 130000000
      },
      "quantity": 1
    }
  ]
}

ข้อผิดพลาดเกี่ยวกับคําสั่งซื้ออาหาร

มีรายละเอียดเกี่ยวกับข้อผิดพลาดใน CheckoutResponse

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท FoodOrderError

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

ต้องระบุ

id สตริง

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

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

description สตริง

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

updatedPrice Money

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

ราคาใหม่ของสินค้าที่ทําให้เกิดข้อผิดพลาด ต้องใช้เฉพาะเมื่อมีข้อผิดพลาด "PRICE_CHANGED"

availableQuantity จำนวนเต็ม

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

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

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

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

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

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

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

ส่วนขยาย Food Food

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

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

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

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

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

availableFulfillmentOptions List<FulfillmentOption>

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

optinForRemarketing บูลีน

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

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

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

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

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

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

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

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

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

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

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

fulfillmentInfo FulfillmentOptionInfo

ต้องระบุ

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

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

price Money

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

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

ตัวอย่าง

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

ข้อมูลตัวเลือกการดําเนินการ

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

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

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

แสดงคําสั่งซื้อที่นําส่ง (หากมี)

pickup กลุ่ม 2 PickupInfo

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

อิมเมจ

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

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

ต้องระบุ

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

รายการโฆษณา

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

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

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

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

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

name สตริง

ต้องระบุ

ชื่อรายการโฆษณา นี่คือสตริงที่ผู้ใช้มองเห็นได้ และควรใส่ในประโยคเมื่อเป็นไปได้ (เช่น "Delivery Fee", "Service service", "Tax") ช่องนี้ถูกตัดให้สั้นลงเหลือ 100 อักขระสําหรับผู้ใช้

type LineItemType

ต้องระบุ

quantity จำนวนเต็ม

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

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

description สตริง

คําอธิบายสินค้า

price Price

ต้องระบุ

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

subLines List<SublineNote>

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

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

offerId สตริง

ต้องระบุเมื่อ 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 มีค่าที่เป็นไปได้ต่อไปนี้

  • 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 สตริง

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

เช่น 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode สตริง

เช่น 90210

city สตริง

ชื่อเมือง

เช่น Los Angeles

notes สตริง

หมายเหตุเกี่ยวกับสถานที่ เช่น รหัสประตู และมีอักขระไม่เกิน 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 สตริง

รหัสของผู้ขาย หากระบุไว้ จะตรงกับ Restaurant.@id ในฟีดร้านอาหาร

เช่น https://www.exampleprovider.com/merchant/id1

name สตริง

ต้องระบุ

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

เช่น Falafel Bite

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

ตัวอย่าง

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

ค่าเงิน

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท Money

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

ต้องระบุ

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

เช่น USD

units สตริง

จํานวนหน่วยทั้งหมดของจํานวน เช่น หาก 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 สตริง

ต้องระบุ

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

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

ต้องระบุ

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

paymentInfo PaymentInfo

ต้องระบุ

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

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

ตัวอย่าง

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

อัปเดตคําสั่งซื้อ

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท OrderUpdate

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

ต้องระบุ

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

orderState OrderState

ต้องระบุ

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

lineItemUpdates แผนที่<สตริง LineItemUpdate>
updateTime การประทับเวลา ISO

ต้องระบุ

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

orderManagementActions List<OrderManagementAction>

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

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

rejectionInfo RejectionInfo

ต้องระบุเมื่อ 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

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

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

เช่น PT90M

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

ตัวอย่าง

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

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

ต้องระบุ

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

เช่น US

postalCode สตริง

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

เช่น 94043

administrativeArea สตริง

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

เช่น CA

locality สตริง

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

เช่น Mountain View

addressLines List<String>

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

เช่น [ "1350 Charleston Road" ]

recipients List<String>

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

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

ตัวอย่าง

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

ราคา

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

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

ต้องระบุ

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

amount Money

ต้องระบุ

โปรโมชัน

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

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

ต้องระบุ

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

คําสั่งซื้อที่เสนอ

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

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

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

cart Cart

ต้องระบุ

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

otherItems List<LineItem>

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

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

image Image

รูปภาพที่เกี่ยวข้องกับคําสั่งซื้อที่เสนอ

totalPrice Price

ต้องระบุ

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

extension FoodOrderExtension

ต้องระบุ

กําหนดข้อมูลการดําเนินการสําหรับการสั่งอาหาร

disclaimers List<Disclaimer>

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

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

ตัวอย่าง

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

โน้ตย่อย

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

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

ต้องระบุ

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

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

ค่า TransactionDecision

มี Order

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

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

ต้องระบุ

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

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

ตัวอย่าง

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

การดําเนินการตามคําขอ

คําขอแอป

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

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

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

conversation Conversation
inputs List<Input>

ต้องระบุ

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

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

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

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

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

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

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

ข้อความคําขอชําระเงิน

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

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

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

การสนทนา

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

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

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

ต้องระบุ

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

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

ตัวอย่าง

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

อินพุต

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

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

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

ต้องระบุ

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

arguments List<Argument>

ต้องระบุ

มีรถเข็นสําหรับชําระเงินหรือคําสั่งซื้อ

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

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

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

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

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

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

transactionDecisionValue กลุ่ม 2 TransactionDecisionValue

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

การตอบสนองที่สําเร็จ

การตอบกลับในแอป

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

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

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

ค่า: 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 คือ AppResponse ที่มี checkoutResponse หรือ error ใน StructuredResponse

ส่งข้อความตอบกลับเกี่ยวกับคําสั่งซื้อ

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

คําตอบสุดท้าย

คําตอบของคุณเกี่ยวกับการเช็คเอาต์ของรถเข็นหรือ SendOrderRequestMessage

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

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

ต้องระบุ

มีการตอบกลับ CheckoutRequestMessage หรือ SendOrderRequestMessage ของคุณ

การตอบกลับการชําระเงิน

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

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

ต้องระบุ

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

paymentOptions PaymentOptions

ต้องระบุ

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

additionalPaymentOptions List<PaymentOptions>

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

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

ตัวอย่าง

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

รายการ

มีข้อมูลตอบกลับเกี่ยวกับการชําระเงินด้วยรถเข็นหรือ SendOrderRequestMessage

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

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

ต้องระบุ

การตอบกลับแบบริชมีเดีย

ตอบกลับการชําระเงินด้วยรถเข็น

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

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

ต้องระบุ

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

คําตอบที่มีโครงสร้าง

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

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

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

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

error กลุ่ม 2 FoodErrorExtension

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

orderUpdate กลุ่ม 3 OrderUpdate

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

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

อัปเดตคําขออัปเดตของ Async

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

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

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

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

customPushMessage CustomPushMessage

ต้องระบุ

มี OrderUpdate สําหรับคําขอ

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

ตัวอย่าง

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

ข้อความอัปเดตการตอบกลับคําสั่งซื้อ

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

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

Button

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

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

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

ต้องระบุ

ป้ายกํากับที่แสดง ขึ้นต้นประโยคด้วยตัวพิมพ์ใหญ่ไม่เกิน 30 ตัวอักษร

เช่น Contact us

openUrlAction OpenUrlAction

ต้องระบุ

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

ตัวอย่าง

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

ข้อมูลการยกเลิก

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท CancellationInfo

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

ต้องระบุ

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

เช่น Restaurant closed

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

ตัวอย่าง

{
  "reason": "Insufficient inventory"
}

ส่วนขยายการอัปเดตคําสั่งซื้ออาหาร

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

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

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

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

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

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

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

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

estimatedFulfillmentTimeIso8601 สตริง

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

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

foodOrderErrors List<FoodOrderError>

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

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

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

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

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

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

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

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

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

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

ใช้การประมาณFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

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

ใช้การประมาณFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

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

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

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

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

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

ข้อมูลขนส่ง

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

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

ใช้การประมาณFulfillmentTimeIso8601 ในข้อความ FoodOrderingUpdateExtension

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

ตัวอย่าง

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

การอัปเดตรายการโฆษณา

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

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

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

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

ตัวอย่าง

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

การกระทําของ OpenUrl

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

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

ต้องระบุ

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

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

การดําเนินการจัดการคําสั่งซื้อ

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

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

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

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

ต้องระบุ

button Button

ต้องระบุ

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

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

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

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

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

ประเภทการดําเนินการจัดการ

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

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

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

สถานะคําสั่งซื้อ

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

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

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

ต้องระบุ

label สตริง

ต้องระบุ

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

เช่น Your order has been received

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

ตัวอย่าง

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

หมายเลขคําสั่งซื้อของ EState

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

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

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

ใบเสร็จ

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท Receipt

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

ต้องระบุ

ต้องระบุหากคําสั่งซื้อเป็น "CONFIRMED", "IN_TRANSIT" หรือ "FULFILLED" ช่องนี้เป็นรหัสเดียวที่ผู้ใช้มองเห็นสําหรับคําสั่งซื้อนี้ (โดยปกติแล้วจะเป็นรหัสคําสั่งซื้อของร้านอาหาร) ที่แสดงในทั้งใบเสร็จของผู้รวมรวมข้อมูลและบัตรคําสั่งซื้อของ Google ผู้ใช้ต้องสามารถใช้รหัสนี้อ้างอิงคําสั่งซื้อของตนสําหรับฝ่ายบริการลูกค้ากับผู้ให้บริการและผู้รวมระบบ คุณต้องระบุรหัสนี้ใน OrderUpdate 1 ครั้งเท่านั้น ActionOrderId จะเป็น uservisibleOrderId จนกว่าจะมีการระบุ ตัวอย่างเช่น คุณอาจไม่มี userViewOrderId จนกว่าร้านอาหารจะยืนยันคําสั่งซื้อ เมื่อยืนยันแล้ว คุณต้องส่ง AsyncOrderUpdateRequestMessage ที่มี OrderUpdate และใบเสร็จ

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

ตัวอย่าง

{
  "userVisibleOrderId": "userVisibleId1234"
}

ข้อมูลการปฏิเสธ

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท RejectionInfo

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

ต้องระบุ

reason สตริง

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

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

ตัวอย่าง

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

ประเภทการปฏิเสธ

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

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

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

ส่วนนี้จะอธิบายประเภทที่เกี่ยวข้องกับการชําระเงินที่ใช้สําหรับการดําเนินการสั่งอาหาร

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

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท ActionProvidedPaymentOptions

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

ต้องระบุ

displayName สตริง

ต้องระบุ

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

เช่น Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

ตัวอย่าง

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

วิธีการการตรวจสอบสิทธิ์ที่อนุญาต

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

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

เครือข่ายการ์ดที่ได้รับอนุญาต

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

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

พารามิเตอร์การ์ด

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

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

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

ต้องระบุ

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

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

allowedCardNetworks List<AllowedCardNetworks>

ต้องระบุ

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

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

billingAddressRequired บูลีน

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

cvcRequired บูลีน

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

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

ตัวอย่าง

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

เครื่องมือการชําระเงินจาก Google

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

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

ต้องระบุ

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

billingAddress PostalAddress

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

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

ตัวอย่าง

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

ตัวเลือกการชําระเงินที่ได้จาก Google

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

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

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

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

supportedCardNetworks List<SupportedCardNetworks>

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

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

prepaidCardDisallowed บูลีน

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

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

billingAddressRequired บูลีน

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

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

tokenizationParameters TokenizationParameters

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

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

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

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

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

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

ตัวอย่าง 3

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

ข้อมูลผู้ขาย

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

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

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

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

merchantName สตริง

ต้องระบุ

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

ข้อมูลการชําระเงินล่วงหน้า

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

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

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

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

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

ตัวอย่าง

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

พารามิเตอร์

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

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

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

ต้องระบุ

เช่น braintree

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

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

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

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

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

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

คําขอข้อมูลการชําระเงิน

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท PaymentDataRequest

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

ต้องระบุ

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

ค่า: 2

apiVersionMinor สถานะ

ต้องระบุ

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

ค่า: 0

merchantInfo MerchantInfo

ต้องระบุ

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

allowedPaymentMethods List<PaymentMethod>

ต้องระบุ

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

transactionInfo TransactionInfo

ต้องระบุ

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

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

ตัวอย่าง

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

ข้อมูลการชําระเงิน

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

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

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

ต้องระบุ

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

paymentType PaymentType

ต้องระบุ

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

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

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

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

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

วิธีการชําระเงิน

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

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

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

ต้องระบุ

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

ค่า: CARD

parameters CardParameters

ต้องระบุ

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

tokenizationSpecification TokenizationSpecification

ต้องระบุ

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

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

ตัวอย่าง

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

ตัวเลือกการชําระเงิน

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

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

สุดเอ็กซ์คลูซีฟกับ actionProvidedOptions ใช้สําหรับการชําระเงินออนไลน์โดยใช้ gPay

actionProvidedOptions กลุ่ม 2 ActionProvidedPaymentOptions

ใช้ได้กับ googleProvidedOptions เท่านั้น ใช้ตัวเลือกนี้สําหรับ&การเสนอราคาเพื่อการนําส่ง&การเสนอราคา หรือ&การชําระเงิน

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

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

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

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

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

จํานวนวิธีการชําระเงิน

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

  • Cash
  • Card
  • UPI
  • Paytm

ประเภทการชําระเงิน

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

  • PAYMENT_CARD: สําหรับ GoogleProvidedPaymentOptions
  • ON_FULFILLMENT: สําหรับ ActionProvidedPaymentOptions

เครือข่ายการ์ดที่สนับสนุน

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

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

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

พารามิเตอร์โทเค็น

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท TokenizationParameters

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

ต้องระบุ

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

parameters Parameters

โปรดใช้ facilitationSpecification แทน

ข้อกําหนดของโทเค็น

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

ตารางต่อไปนี้แสดงพร็อพเพอร์ตี้ของประเภท TokenizationSpecification

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

ต้องระบุ

parameters Parameters

ต้องระบุ

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

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

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

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

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

ข้อมูลธุรกรรม

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

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

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

ต้องระบุ

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

transactionId สตริง

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

totalPriceStatus สถานะ

ต้องระบุ

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

ค่า: ESTIMATED

totalPrice สตริง

ต้องระบุ

มูลค่าทางการเงินทั้งหมดของธุรกรรมพร้อมทศนิยมทศนิยม 2 ตําแหน่งแบบไม่บังคับ ช่องนี้ควรมีค่าเดียวกับรถเข็น totalPrice

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

ตัวอย่าง

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