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

หน้านี้จะอธิบายถึงเพย์โหลดของบริการเว็บ Fulfillment (การสั่ง API แบบต้นทางถึงปลายทาง) เมื่อทำงานร่วมกับ API การดำเนินการในตัวของการสั่งซื้อจากต้นทางถึงปลายทาง หากต้องการดูข้อมูลนี้ในรูปแบบที่เครื่องอ่านได้ โปรดดาวน์โหลดสคีมา JSON

ประเภทฐาน

รถเข็น

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

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

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

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

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

id String

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

merchant Merchant

ผู้ขายที่เป็นพาร์ทเนอร์กับรถเข็นนี้

lineItems รายการ<LineItem>

ต้องระบุ

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

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

promotions รายการ<Promotion>

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

notes String

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

extension FoodCartExtension

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

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

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

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

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

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

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

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

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

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

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

เช่น Lovefood Ordering

email String

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

เช่น ilovefood@example.com

firstName String

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

เช่น Lovefood

lastName String

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

เช่น Ordering

phoneNumber String

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

เช่น +16501234567

emailVerified บูลีน

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

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

ตัวอย่าง

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

CustomPushMessage

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

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

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

ต้องระบุ

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

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

ตัวอย่าง

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

DeliveryInfo

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

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

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

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

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

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

maxFeeAmount Money

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

FeePercentRange

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

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

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

maxFeePercent Number

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

FoodCartExtension

มีรายละเอียดเกี่ยวกับผู้ใช้ เช่น ค่ากำหนด Fulfillment

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

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

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

ต้องระบุ

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

location Location

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

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

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

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

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

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

FoodErrorExtension

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

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

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

ต้องระบุ

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

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

foodOrderErrors รายการ<FoodOrderError>

ต้องระบุ

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

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

correctedProposedOrder ProposedOrder

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

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

paymentOptions PaymentOptions

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

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

additionalPaymentOptions รายการ<PaymentOptions>

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

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

ตัวอย่าง

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

FoodItemExtension

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

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

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

ต้องระบุ

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

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

options รายการ<FoodItemOption>

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

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

ตัวอย่าง

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

FoodItemOption

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

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

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

เช่น 39231093

offerId String

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

เช่น 912835081

name String

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

เช่น Honey Mustard

price Money
note String

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

quantity Number

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

เช่น 3

subOptions รายการ<FoodItemOption>

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

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

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

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

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

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

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

FoodOrderError

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

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

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

ต้องระบุ

id String

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

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

description String

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

updatedPrice Money

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

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

availableQuantity จำนวนเต็ม

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

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

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

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

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

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

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

FoodOrderExtension

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

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

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

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

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

availableFulfillmentOptions รายการ<FulfillmentOption>

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

optinForRemarketing บูลีน

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

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

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

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

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

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

FulfillmentOption

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

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

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

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

fulfillmentInfo FulfillmentOptionInfo

ต้องระบุ

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

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

price Money

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

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

ตัวอย่าง

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

FulfillmentOptionInfo

ให้คำจำกัดความข้อมูลที่เกี่ยวข้องกับ FulfillmentInfo

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

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

หากมี จะหมายถึงคำสั่งซื้อการนำส่ง

pickup กลุ่ม 2 PickupInfo

หากมี จะหมายถึงคำสั่งซื้อแบบไปรับเอง

รูปภาพ

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

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

ต้องระบุ

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

LineItem

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

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

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

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

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

name String

ต้องระบุ

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

type LineItemType

ต้องระบุ

quantity จำนวนเต็ม

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

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

description String

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

price Price

ต้องระบุ

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

subLines รายการ<SublineNote>

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

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

offerId String

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

รหัสข้อเสนอของ MenuItem สำหรับสินค้า ใช้ไม่ได้กับ ProposedOrder.otherItems

extension FoodItemExtension

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

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

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

{
  "name": "New customer discount",
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "-5",
      "nanos": -500000000
    }
  },
  "type": "DISCOUNT"
}

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

{
  "name": "Pita Chips",
  "type": "REGULAR",
  "id": "sample_item_offer_id_1",
  "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
  "quantity": 1,
  "price": {
    "type": "ESTIMATE",
    "amount": {
      "currencyCode": "USD",
      "units": "2",
      "nanos": 750000000
    }
  },
  "subLines": [
    {
      "note": "Notes for this item."
    }
  ],
  "extension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension",
    "options": [
      {
        "id": "sample_addon_offer_id_1",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
        "name": "Honey Mustard",
        "price": {
          "currencyCode": "USD"
        },
        "quantity": 1
      },
      {
        "id": "sample_addon_offer_id_2",
        "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2",
        "name": "BBQ Sauce",
        "price": {
          "currencyCode": "USD",
          "nanos": 500000000
        },
        "quantity": 1
      }
    ]
  }
}

LineItemType

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

  • REGULAR: รายการโฆษณาสินค้า ใช้ได้กับ Cart.lineItems
  • TAX: บรรทัดรายการภาษี ใช้กับ ProposedOrder.otherItems
  • DISCOUNT: รายการโฆษณาส่วนลด โปรดทราบว่าราคาควรเป็นค่าลบ ใช้กับ ProposedOrder.otherItems
  • GRATUITY: รายการโฆษณาแบบไม่มีค่าใช้จ่าย โดยทั่วไปจะสงวนไว้สำหรับ SendOrderRequestMessage สำหรับเคล็ดลับที่ผู้ใช้เลือก ใช้กับ ProposedOrder.otherItems
  • DELIVERY: การแสดงรายการโฆษณา ใช้กับ ProposedOrder.otherItems
  • SUBTOTAL: รายการโฆษณายอดรวมย่อย ใช้กับ ProposedOrder.otherItems
  • FEE: รายการโฆษณาเพิ่มเติมที่ไม่ครอบคลุมอยู่ในประเภทอื่นๆ ใช้กับ ProposedOrder.otherItems

ตำแหน่ง

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

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

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

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

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

postalAddress PostalAddress
zipCode String

เช่น 90210

city String

ชื่อเมือง

เช่น Los Angeles

notes String

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

เช่น Gate code is #111

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

ตัวอย่าง

{
  "coordinates": {
    "latitude": 37.788783,
    "longitude": -122.41384
  },
  "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States",
  "zipCode": "94043",
  "city": "Mountain View",
  "postalAddress": {
    "regionCode": "US",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1350 Charleston Road"
    ]
  },
  "notes": "Gate code is #111"
}

ผู้ขาย

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

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

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

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

name String

ต้องระบุ

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

เช่น Falafel Bite

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

ตัวอย่าง

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

สกุลเงิน

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

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

ต้องระบุ

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

เช่น USD

units String

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

เช่น 36

nanos จำนวนเต็ม

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

เช่น 730000000

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

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

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

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

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

สั่งซื้อ

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

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

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

ต้องระบุ

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

googleOrderId String

ต้องระบุ

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

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

ต้องระบุ

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

paymentInfo PaymentInfo

ต้องระบุ

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

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

ตัวอย่าง

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

OrderUpdate

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

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

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

ต้องระบุ

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

orderState OrderState

ต้องระบุ

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

lineItemUpdates แผนที่<String, LineItemUpdate>
updateTime การประทับเวลา ISO

ต้องระบุ

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

orderManagementActions รายการ<OrderManagementAction>

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

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

rejectionInfo RejectionInfo

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

cancellationInfo CancellationInfo

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

inTransitInfo InTransitInfo

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

fulfillmentInfo FulfillmentInfo

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

receipt Receipt

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

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

totalPrice Price

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

infoExtension FoodOrderUpdateExtension

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

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

ตัวอย่าง

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

PickupInfo

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

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

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

เช่น PT90M

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

ตัวอย่าง

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

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

ต้องระบุ

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

เช่น US

postalCode String

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

เช่น 94043

administrativeArea String

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

เช่น CA

locality String

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

เช่น Mountain View

addressLines List<String>

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

เช่น [ "1350 Charleston Road" ]

recipients List<String>

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

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

ตัวอย่าง

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

ราคา

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

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

ต้องระบุ

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

amount Money

ต้องระบุ

โปรโมชัน

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

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

ต้องระบุ

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

ProposedOrder

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

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

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

cart Cart

ต้องระบุ

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

otherItems รายการ<LineItem>

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

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

image Image

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

totalPrice Price

ต้องระบุ

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

extension FoodOrderExtension

ต้องระบุ

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

disclaimers รายการ<Disclaimer>

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

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

ตัวอย่าง

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

SublineNote

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

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

ต้องระบุ

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

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

TransactionDecisionValue

มีOrder

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

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

ต้องระบุ

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

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

ตัวอย่าง

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

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

AppRequest

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

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

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

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

ต้องระบุ

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

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

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

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

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

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

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

CheckoutRequestMessage

CheckoutRequestMessage เป็น AppRequest ที่มี Intent actions.foodordering.intent.CHECKOUT

SubmitOrderRequestMessage

SubmitOrderRequestMessage เป็น AppRequest ที่มี Intent actions.foodordering.intent.TRANSACTION_DECISION

การสนทนา

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

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

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

ต้องระบุ

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

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

ตัวอย่าง

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

อินพุต

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

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

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

ต้องระบุ

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

arguments รายการ<Argument>

ต้องระบุ

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

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

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

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

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

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

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

transactionDecisionValue กลุ่ม 2 TransactionDecisionValue

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

การตอบกลับการดำเนินการ

AppResponse

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

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

ตั้งค่าเป็น false

ค่า: False

finalResponse FinalResponse

ต้องระบุ

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

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

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

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

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

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

ตัวอย่าง 3

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

ตัวอย่าง 4

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

CheckoutResponseMessage

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

SubmitOrderResponseMessage

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

FinalResponse

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

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

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

ต้องระบุ

ประกอบด้วยการตอบกลับ CheckoutRequestMessage หรือ SendOrderRequestMessage

CheckoutResponse

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

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

ต้องระบุ

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

paymentOptions PaymentOptions

ต้องระบุ

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

additionalPaymentOptions รายการ<PaymentOptions>

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

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

ตัวอย่าง

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

รายการ

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

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

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

ต้องระบุ

RichResponse

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

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

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

ต้องระบุ

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

StructuredResponse

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

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

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

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

error กลุ่ม 2 FoodErrorExtension

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

orderUpdate กลุ่ม 3 OrderUpdate

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

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

AsyncOrderUpdateRequestMessage

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

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

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

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

customPushMessage CustomPushMessage

ต้องระบุ

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

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

ตัวอย่าง

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

AsyncOrderUpdateResponseMessage

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

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

ปุ่ม

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

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

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

ต้องระบุ

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

เช่น Contact us

openUrlAction OpenUrlAction

ต้องระบุ

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

ตัวอย่าง

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

CancellationInfo

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

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

ต้องระบุ

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

เช่น Restaurant closed

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

ตัวอย่าง

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

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

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

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

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

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

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

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

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

estimatedFulfillmentTimeIso8601 String

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

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

foodOrderErrors รายการ<FoodOrderError>

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

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

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

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

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

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

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

FulfillmentInfo

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

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
ต้องระบุกลุ่มพร็อพเพอร์ตี้อย่างใดอย่างหนึ่งต่อไปนี้
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

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

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

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

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

ตัวอย่าง

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

LineItemUpdate

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

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

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

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

ตัวอย่าง

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

OpenUrlAction

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

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

ต้องระบุ

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

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

OrderManagementAction

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

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

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

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

ต้องระบุ

button Button

ต้องระบุ

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

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

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

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

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

OrderManagementActionType

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

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

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

OrderState

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

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

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

ต้องระบุ

label String

ต้องระบุ

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

เช่น Your order has been received

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

ตัวอย่าง

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

OrderStateEnum

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

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

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

ใบเสร็จ

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

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

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

ต้องระบุ

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

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

ตัวอย่าง

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

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

ต้องระบุ

reason String

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

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

ตัวอย่าง

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

RejectionType

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

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

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

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

ActionProvidedPaymentOptions

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

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

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

ต้องระบุ

displayName String

ต้องระบุ

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

เช่น Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

ตัวอย่าง

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

AllowedAuthMethods

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

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

AllowedCardNetworks

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

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

BillingAddressParameters

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

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

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

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

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

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

{
  "format": "MIN"
}

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

{
  "format": "FULL"
}

CardParameters

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

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

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

ต้องระบุ

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

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

allowedCardNetworks รายการ<AllowedCardNetworks>

ต้องระบุ

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

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

billingAddressRequired บูลีน

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

billingAddressParameters BillingAddressParameters

ช่องที่คาดไว้จะแสดงขึ้นหากตั้งค่า billingAddressRequired เป็น "จริง"

cvcRequired บูลีน

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

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

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

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

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

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

GoogleProvidedPaymentInstrument

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

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

ต้องระบุ

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

billingAddress PostalAddress

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

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

ตัวอย่าง

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

GoogleProvidedPaymentOptions

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

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

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

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

supportedCardNetworks รายการ<SupportedCardNetworks>

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

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

prepaidCardDisallowed บูลีน

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

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

billingAddressRequired บูลีน

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

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

tokenizationParameters TokenizationParameters

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

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

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

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

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

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

ตัวอย่าง 3

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

MerchantInfo

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

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

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

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

merchantName String

ต้องระบุ

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

OnFulfillmentPaymentData

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

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

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

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

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

ตัวอย่าง

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

พารามิเตอร์

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

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

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

ต้องระบุ

เช่น braintree

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

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

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

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

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

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

PaymentDataRequest

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

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

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

ต้องระบุ

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

ค่า: 2

apiVersionMinor ข้อเสีย

ต้องระบุ

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

ค่า: 0

merchantInfo MerchantInfo

ต้องระบุ

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

allowedPaymentMethods รายการ<PaymentMethod>

ต้องระบุ

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

transactionInfo TransactionInfo

ต้องระบุ

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

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

ตัวอย่าง

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

PaymentInfo

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

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

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

ต้องระบุ

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

paymentType PaymentType

ต้องระบุ

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

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

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

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

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

PaymentMethod

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

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

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

ต้องระบุ

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

ค่า: CARD

parameters CardParameters

ต้องระบุ

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

tokenizationSpecification TokenizationSpecification

ต้องระบุ

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

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

ตัวอย่าง

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

PaymentOptions

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

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

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

actionProvidedOptions กลุ่ม 2 ActionProvidedPaymentOptions

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

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

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

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

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

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

ตัวอย่าง 3

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

PaymentOptionsEnums

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

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

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

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

SupportedCardNetworks

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

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

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

TokenizationParameters

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

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

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

ต้องระบุ

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

parameters Parameters

ใช้ facilitationSpecification แทน

TokenizationSpecification

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

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

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

ต้องระบุ

parameters Parameters

ต้องระบุ

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

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

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

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

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

TransactionInfo

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

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

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

ต้องระบุ

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

transactionId String

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

totalPriceStatus ข้อเสีย

ต้องระบุ

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

ค่า: ESTIMATED

totalPrice String

ต้องระบุ

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

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

ตัวอย่าง

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