סכימת הפעולות למילוי הזמנות

בדף הזה מתואר המטען הייעודי (payload) של שירות האינטרנט למילוי הזמנות (Ordering End-to-End API) כשעובדים עם Order-to-end-End Action API. אם אתם צריכים גרסה של המידע הזה לקריאה למחשבים, אתם יכולים להוריד את סכימת ה-JSON.

סוגי בסיסים

עגלת קניות

יש לציין את פרטי ההזמנה וגם אם מדובר בבקשה לאיסוף או משלוח. עגלת קניות מכילה גם פרטי משלוח, תגמולים וסוג המשלוח address. האובייקט Cart מוגדר בפורמט Checkout AppRequest.f כללת עותק של עגלת הקניות בCheckout AppResponse

בטבלה הבאה מפורטים המאפיינים לסוג Cart:

נכס סוג תיאור
@type המשך

סוג האובייקט הזה. יש להשמיט את השדה הזה אם אובייקט ההורה של עגלת הקניות הוא חלק מ-ProposedOrder.

ערך: type.googleapis.com/google.actions.v2.orders.Cart

id String

מזהה אופציונלי של עגלת הקניות.

merchant Merchant

מוכר שמשויך לעגלת הקניות הזו.

lineItems רשימה<LineItem>

חובה.

רשימה של המוצרים או השירותים שהמשתמש מזמין.

אפשר להזין עד פריט אחד.

promotions רשימה<Promotion>

מבצע שהוחל בעגלת הקניות הזו. כרגע יש תמיכה רק במבצע אחד.

notes String

הערות לגבי ההזמנה או ההוראות למשלוח.

extension FoodCartExtension

מגדיר פרטים על המשתמש, כמו העדפות למילוי הזמנות.

בדוגמה הבאה מוצג רכיב Cart:

דוגמה 1

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

דוגמה 2

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

יצירת קשר

מציין פרטים על האדם שיקבל את ההזמנה. האפשרות הזו זמינה רק ב- AppResponse

בטבלה הבאה מפורטים המאפיינים לסוג Contact:

נכס סוג תיאור
displayName String

שם מקבל ההזמנה, כפי שברצונך להציג. צריך להשתמש בשדה הזה אם לא צוינו firstName ו-lastName.

דוגמה: Lovefood Ordering

email String

כתובת האימייל של האדם שיקבל את ההזמנה.

דוגמה: ilovefood@example.com

firstName String

השם הפרטי של האדם שמקבל את ההזמנה.

דוגמה: Lovefood

lastName String

השם הפרטי של האדם שמקבל את ההזמנה.

דוגמה: Ordering

phoneNumber String

מספר הטלפון של מי שיקבל את ההזמנה, כולל קידומת המדינה.

דוגמה: +16501234567

emailVerified בוליאני

מציין אם האדם שמקבל את ההזמנה מחובר לחשבון Google שלו.

בדוגמה הבאה מוצג רכיב Contact:

דוגמה

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

CustomPushMessage

מכיל את ה-OrderUpdate של הבקשה.

בטבלה הבאה מפורטים המאפיינים לסוג CustomPushMessage:

נכס סוג תיאור
orderUpdate OrderUpdate

חובה.

המידע עודכן עבור ההזמנה.

בדוגמה הבאה מוצג רכיב CustomPushMessage:

דוגמה

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

DeliveryInfo

בטבלה הבאה מפורטים המאפיינים לסוג DeliveryInfo:

נכס סוג תיאור
deliveryTimeIso8601 String

זמן אספקה משוער, בפורמט חותמת זמן לפי תקן ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" או פורמט משך זמן: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". לדוגמה, PT90M מייצג משך זמן של 90 דקות. ערך ברירת המחדל 'PT0M' מציין שזמן האספקה המועדף הוא מוקדם ככל האפשר. מידע נוסף: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. הנתון הזה מאפשר לכם לעדכן את זמן האספקה המשוער במהלך תגובת התשלום.

דוגמה: PT90M

בדוגמה הבאה מוצג רכיב DeliveryInfo:

דוגמה

{
  "deliveryTimeIso8601": "PT90M"
}

כתב ויתור

בטבלה הבאה מפורטים המאפיינים לסוג Disclaimer:

נכס סוג תיאור
predefinedMessage PredefinedMessage

חובה.

כדי להציג הודעות כתבי ויתור שהוגדרו מראש במהלך התשלום בקופה.

feeAmount Money

השותף יחייב את המוכר בעמלה בסך N על ההזמנה הזו.

feeAmountRange FeeAmountRange

השותף יחייב את המסעדה בעמלה בסכום של N עד M לכל הזמנה.

feePercent מספר

השותף יחייב את המוכר בעמלה של 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 או CollectInfo.
  • 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: לא ניתן למצוא פריט Line, FulfillmentOption או קידום מכירות.
  • PRICE_CHANGED: מחיר הפריט השתנה.

FeeAmountRange

בטבלה הבאה מפורטים המאפיינים לסוג FeeAmountRange:

נכס סוג תיאור
minFeeAmount Money

הגבול התחתון של סכום העמלה.

maxFeeAmount Money

גבול עליון של סכום עמלה.

FeePercentRange

בטבלה הבאה מפורטים המאפיינים לסוג FeePercentRange:

נכס סוג תיאור
minFeePercent מספר

הגבול התחתון של אחוז העמלה חויב.

maxFeePercent מספר

גבול עליון של אחוז עמלה.

FoodCartExtension

מכיל פרטים על המשתמש, כמו העדפות למילוי הזמנות.

בטבלה הבאה מפורטים המאפיינים לסוג FoodCartExtension:

נכס סוג תיאור
@type המשך

סוג התוסף הזה. השדה הזה מוגדר תמיד כ-"type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

ערך: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

הפרטים ליצירת קשר של מי שיקבל את ההזמנה. הפרטים כוללים את השם, מספר הטלפון וכתובת האימייל של המשתמש.

fulfillmentPreference FulfillmentOption

חובה.

ההעדפה של המשתמש למילוי הזמנות.

location Location

בשדה CheckoutRequestMessage, שדה זה מציין את הכתובת למשלוח, נדרשת אם ההזמנה מיועדת למסירה. בהזמנות שמיועדות לאיסוף עצמי או לאיסוף עצמי, השדה הזה לא ייכלל בהודעה.

בדוגמה הבאה מוצג רכיב FoodCartExtension:

דוגמה 1

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

דוגמה 2

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

FoodErrorExtension

מזהה שגיאה אחת או יותר שאירעה במהלך עיבוד בקשה. בטבלה הבאה מתוארים השדות מסוג FoodErrorExtension. ניתן לשלוח שגיאות בקובץ CheckoutResponse.

בטבלה הבאה מפורטים המאפיינים לסוג FoodErrorExtension:

נכס סוג תיאור
@type המשך

חובה.

סוג התוסף הזה.

ערך: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors רשימה<FoodOrderError>

חובה.

מערך אובייקטים של FoodOrderError שמתארים את השגיאות שהתרחשו. מומלץ שגיאה אחת לכל עגלת קניות או לכל פריט.

אפשר להזין עד פריט אחד.

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 המקורי. לדוגמה, שינוי במחיר של פריט אחד או יותר בעגלת הקניות הוא שגיאה שניתנת לשחזור. שגיאות ניתנות לשחזור עם 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 הקצתה. כששולחים cookieOrderError או AsyncOrderUpdateRequest, אפשר להשתמש בשדה הזה כדי להבדיל בין מקרים שבהם עגלה מכילה יותר מפריט אחד עם אותו OfferId.

דוגמה: 39231093

offerId String

מזהה המבצע של הפריט.

דוגמה: 912835081

name String

שם האפשרות.

דוגמה: Honey Mustard

price Money
note String

הערה שקשורה לאפשרות.

quantity מספר

לאפשרויות שהן פריטים, זהו מספר הפריטים.

דוגמה: 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 Integer

נדרש כאשר error = "INVALID", or "NOT_FOUND"

הכמות הזמינה החדשה של הפריט שגרמה לשגיאה. יש לעשות זאת רק כאשר השגיאה היא "INVALID" או "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 בוליאני

בקשה מהמשתמש להביע הסכמה לערוצים השיווקיים שלך. כברירת מחדל, לא ניתן לשלוח תוכן שיווקי ללא הסכמת המשתמש. אם האפשרות optinForDownload היא True, יש לכם אפשרות להירשם למשתמש. אם optinForDownloads לא חוקי או לא קיים, צריך להשאיר את סטטוס המינוי במערכת כפי שהוא. המשתמשים לא יכולים לבטל את הסכמתם דרך Google, אלא רק באמצעות פונקציה לביטול ההרשמה שמסופקת בערוצי השיווק שלכם. הסימון הזה מופיע רק ב-SubmitOrderRequestMessage.

בדוגמה הבאה מוצג רכיב FoodOrderExtension:

דוגמה 1

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

דוגמה 2

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

FulfillmentOption

אפשר להשתמש באובייקט FulfillmentOption בדרכים הבאות:
  • בCheckout AppRequest וב Submit AppRequest, Cart.extension.fulfillmentPreference: שמירת ההעדפה של המשתמש (משלוח או איסוף). המחיר הוא תמיד 0 כשבקשת התשלום נשלחת.
  • ב-Checkout AppResponse, ProposedOrder.extension.availableFulfillmentOptions: מגדירה אפשרות הצגה אחת או יותר (כרגע יש רק אפשרות אחת נתמך). צריך לציין את אפשרות ברירת המחדל כ-LineItem ב- ProposedOrder.otherItems. offerId של FulfillmentOption צריך להתאים למזהה של השדה LineItem צוין ב-ProposedOrder.otherItems.

בטבלה הבאה מפורטים המאפיינים לסוג FulfillmentOption:

נכס סוג תיאור
offerId String

מזהה ייחודי לאפשרות מילוי ההזמנה הזו, אם יש כזו.

fulfillmentInfo FulfillmentOptionInfo

חובה.

expiresAt חותמת זמן של ISO

השעה שבה יפוג התוקף של אפשרות מילוי ההזמנה הזו.

price Money

העלות של האפשרות הזו.

בדוגמה הבאה מוצג רכיב FulfillmentOption:

דוגמה

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

FulfillmentOptionInfo

מגדיר מידע שקשור אל FulfillmentInfo.

בטבלה הבאה מפורטים המאפיינים לסוג FulfillmentOptionInfo:

נכס סוג תיאור
דרושה בדיוק אחת מקבוצות הנכסים הבאות.
delivery קבוצה 1 DeliveryInfo

אם יש כזו, מציין את הזמנת המשלוח.

pickup קבוצה 2 PickupInfo

אם יש כזו, יצוין הזמנה לאיסוף.

תמונה

בטבלה הבאה מפורטים המאפיינים לסוג Image:

נכס סוג תיאור
sourceUrl String

חובה.

כתובת ה-URL של התמונה. התמונה צריכה להיות בגודל 72x72 פיקסלים לפחות. לקבלת התוצאות הטובות ביותר, מומלץ להשתמש בתמונה בגודל 216x216 פיקסלים לפחות. התמונה צריכה להיות קטנה מ-6MB ו-64 מגה-פיקסל.

LineItem

מגדיר את התוכן של עגלת קניות (Cart.lineItems) או חיובים נוספים עבור הזמנה (ProposedOrder.otherItems).

בטבלה הבאה מפורטים המאפיינים לסוג LineItem:

נכס סוג תיאור
id String

נדרש כאשר type = "REGULAR"

עבור פריט שורה בעגלת קניות (ProposedOrder.cart.lineItems[0].id), זהו המזהה הייחודי שנוצר על ידי Google בעת יצירת ההזמנה. לפריט שורה של ProposedOrder (ProposedOrder.otherItems[0].id), שמשמש להוספת פריטים כמו דמי משלוח ומיסים, ערך המזהה מוגדר על ידי הספק. לדוגמה, עגלת קניות כוללת שניים מאותו פריט עם הוראות הכנה שונות (למשל, שתי פיצות בינוניות עם תוספות שונות). במקרה הזה, לשני הפריטים יש אותו מזהה מוצר בסיסי. כששולחים בקשה לעדכון הזמנה כדי לציין שפריט מסוים נדחה, אפשר להשתמש במזהה הזה בתור הגורם ההבחנה. כלומר, אם אחת מהפיצות נדחית כי אין בה תוספות מסוימת, המזהה עוזר ל-Google לקבוע לאיזה פריט בהזמנה מתייחסת. שדה זה הוא חובה, מלבד ב- otherItems.

name String

חובה.

שם הפריט. זוהי מחרוזת גלויה למשתמש, והטקסט צריך להתחיל באות גדולה כשהדבר אפשרי (לדוגמה, 'דמי משלוח', 'חיוב שירות', 'מס'). השדה הזה נחתך ב-100 תווים למשתמשים.

type LineItemType

חובה.

quantity Integer

נדרש כאשר type = "REGULAR"

מספר הפריטים הכלולים. לא רלוונטי ל-ProposedOrder.otherItems.

description String

תיאור הפריט.

price Price

חובה.

המחיר של הפריט או הפריטים. הערך הזה משקף את המחיר הכולל של כל המוצרים או השירותים שמשויכים לפריט הזה (כלומר, צריך להוסיף את העלות של כל התוספים ולהכפיל בכמות). לדוגמה: אם פריט בשווי 40 ש"ח מכיל כמות של 3, המחיר יהיה 120 ש"ח. המחיר לפיצה אחת עם מחיר בסיס של 20 ש"ח ותוסף של 4 ש"ח יהיה 24 ש"ח. המחיר לשתי פיצות (כמות = 2) במחיר בסיס של 20 ש"ח ולכל אחת עם תוספת של 4 ש"ח, המחיר יהיה 48 ש"ח. לכל פריט צריך להיות מחיר, גם אם המחיר הוא '0'. כשהסוג הוא DISCOUNT, מציינים את הערך כשלילי (לדוגמה, '2-').

subLines רשימה<SublineNote>

אופציונלי ותקף רק אם הסוג הוא "REGULAR". בשדה הזה עשויה להישלח הערה ספציפית לפריט מהמשתמש בבקשת התשלום ובבקשה לשליחת ההזמנה. מוודאים שהמוכר מקבל את ההערה כשהיא נמסרת. הוא יופיע בבקשה בתור SubLines[0].note, הערך היחיד בשדה הזה כשהוא מופיע בבקשה.

אפשר להזין רק פריט אחד לכל היותר.

offerId String

נדרש כאשר type = "REGULAR"

מזהה המוצר של הפריט בתפריט. לא רלוונטי ל-ProposedOrder.otherItems.

extension FoodItemExtension

מגדירה תוספים לפריטי מזון.

בדוגמה הבאה מוצג רכיב LineItem:

דוגמה 1

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

דוגמה 2

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

LineItemType

הסוג LineItemType כולל את הערכים האפשריים הבאים:

  • REGULAR: פריט מוצרים. רלוונטי ל-Cart.lineItems.
  • TAX: פריט מס. רלוונטי ל-ProposedOrder.otherItems.
  • DISCOUNT: פריט הנחה. לתשומת ליבכם, המחיר צריך להיות שלילי. רלוונטי ל-ProposedOrder.otherItems.
  • GRATUITY: פריט ללא שגיאות. בדרך כלל שמורה ל-SubmitOrderRequestMessage לטיפ שנבחר על ידי המשתמש. רלוונטי ל-ProposedOrder.otherItems.
  • DELIVERY: פריט משלוח. רלוונטי ל-ProposedOrder.otherItems.
  • SUBTOTAL: פריט סיכום ביניים. רלוונטי ל-ProposedOrder.otherItems.
  • FEE: פריט נוסף שאינו מכוסה על ידי הסוגים האחרים. רלוונטי ל-ProposedOrder.otherItems.

מיקום

מציין כתובת להזמנת אוכל. הסוג Location נמצא בשימוש ב Cart כדי לציין את היעד של הזמנת המשלוח בלבד. המיקום הסופי נמצא גם ב TransactionDecisionValue אם המשתמש מבצע את ההזמנה. בהזמנות שמצוינות בהן איסוף, המיקום הוא לא כלולה בכלל (אפילו לא ריקה).

בטבלה הבאה מפורטים המאפיינים לסוג Location:

נכס סוג תיאור
coordinates Coordinates
formattedAddress String

הצגת הכתובת של המיקום.

דוגמה: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode String

דוגמה: 90210

city String

שם העיר.

דוגמה: Los Angeles

notes String

הערות לגבי המיקום, כמו קודים של השערים. השם צריך לכלול 500 תווים לכל היותר.

דוגמה: Gate code is #111

בדוגמה הבאה מוצג רכיב Location:

דוגמה

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

מוֹכר

בטבלה הבאה מפורטים המאפיינים לסוג Merchant:

נכס סוג תיאור
id String

המספר המזהה של המוכר. אם צוין, המערכת תתאים ל-Restaurant.@id בפיד 'מסעדות'.

דוגמה: https://www.exampleprovider.com/merchant/id1

name String

חובה.

שם המוכר הגלוי למשתמש.

דוגמה: Falafel Bite

בדוגמה הבאה מוצג רכיב Merchant:

דוגמה

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

כסף

בטבלה הבאה מפורטים המאפיינים לסוג Money:

נכס סוג תיאור
currencyCode String

חובה.

קוד מטבע בן 3 אותיות בפורמט ISO 4217.

דוגמה: USD

units String

מספר היחידות השלמות של הסכום. לדוגמה, אם הערך של קוד המטבע 'currencyCode' הוא 'USD', אז '1' הוא 1 דולר ארה"ב.

דוגמה: 36

nanos Integer

מספר יחידות הננו (10^-9) של הסכום. הערך חייב להיות בין -999,999,999 ל- +999,999,999, כולל. משתמשים בכללים הבאים: אם מספר היחידות השלמות הוא חיובי, מספר יחידות הננו חייב להיות חיובי או אפס. אם מספר היחידות השלמות הוא אפס, מספר יחידות הננו יכול להיות חיובי, אפס או שלילי. אם מספר היחידות השלמות הוא שלילי, הערך של יחידות הננו חייב להיות שלילי או אפס. לדוגמה, $-1.75 מיוצג באמצעות יחידות = 1- ו-ננוs = -750,000,000.

דוגמה: 730000000

בדוגמה הבאה מוצג רכיב Money:

דוגמה 1

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

דוגמה 2

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

הזמנה

מכילה את ההזמנה הסופית, כולל מיסים, עמלות ודמי משלוח, כמו וכן פרטי תשלום. אובייקט זה מתקבל על ידי הפעולה שלך במסגרת Submit AppRequest

בטבלה הבאה מפורטים המאפיינים לסוג Order:

נכס סוג תיאור
finalOrder ProposedOrder

חובה.

ההזמנה המוצעת שגרמה להזמנה.

googleOrderId String

חובה.

מזהה ההזמנה ש-Google הקצתה. המזהה הזה צריך להיות יציב לכל אורך מחזור החיים של הזמנה. המזהה הזה לא גלוי למשתמשי הקצה.

orderDate חותמת זמן של ISO

חובה.

התאריך והשעה שבהם ההזמנה נוצרה.

paymentInfo PaymentInfo

חובה.

פרטי התשלום המתאימים לתשלום בהזמנה הזו.

בדוגמה הבאה מוצג רכיב Order:

דוגמה

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

OrderUpdate

הטבלה הבאה מתארת את השדות מסוג OrderUpdate, נכלל ב-AppResponse.

בטבלה הבאה מפורטים המאפיינים לסוג OrderUpdate:

נכס סוג תיאור
actionOrderId String

חובה.

מזהה ייחודי של ההזמנה במערכת של מבצע השילוב ומשמש לזיהוי ההזמנה שלגביה נשלח העדכון. אם receipt.user_visible_order_id לא צוין לפחות פעם אחת ב-OrderUpdate עבור ערך CREATED המזהה הזה יהיה המזהה הגלוי למשתמש שהוזן, שמוצג בכרטיס ההזמנה ב-Google.

orderState OrderState

חובה.

המצב החדש של הצו.

lineItemUpdates מפה<String, LineItemUpdate>
updateTime חותמת זמן של ISO

חובה.

השעה שבה ההזמנה עודכנה.

orderManagementActions רשימה<OrderManagementAction>

פעולות לאחר ההזמנה, כמו פנייה לתמיכה והצגה של פרטי ההזמנה.

הם לא יכולים לכלול פחות מפריט אחד, וגם עד 6 פריטים.

rejectionInfo RejectionInfo

נדרש כאשר orderState.state = "REJECTED"

cancellationInfo CancellationInfo

נדרש כאשר orderState.state = "CANCELLED"

inTransitInfo InTransitInfo

השדה הזה הוצא משימוש.

fulfillmentInfo FulfillmentInfo

השדה הזה הוצא משימוש.

receipt Receipt

נדרש כאשר orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP"

יש לספק בקבלה את מזהה ההזמנה הגלוי למשתמש.

totalPrice Price

המחיר הכולל של ההזמנה.

infoExtension FoodOrderUpdateExtension

מגדיר פרטים נוספים על עדכון ההזמנה, כמו מרווח הזמן המשוער למסירה או לאיסוף.

בדוגמה הבאה מוצג רכיב OrderUpdate:

דוגמה

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

PickupInfo

בטבלה הבאה מפורטים המאפיינים לסוג PickupInfo:

נכס סוג תיאור
pickupTimeIso8601 String

זמן האיסוף המשוער, בפורמט חותמת זמן לפי תקן ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" או פורמט משך זמן: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". לדוגמה, PT90M מייצג משך זמן של 90 דקות. ערך ברירת המחדל 'PT0M' מציין שזמן האיסוף המועדף הוא מוקדם ככל האפשר. מידע נוסף: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. הערך הזה מאפשר לך לעדכן את זמן האיסוף המשוער במהלך תגובת התשלום.

דוגמה: PT90M

בדוגמה הבאה מוצג רכיב PickupInfo:

דוגמה

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

בטבלה הבאה מפורטים המאפיינים לסוג PostalAddress:

נכס סוג תיאור
regionCode String

חובה.

קוד מדינה בן שתי אותיות.

דוגמה: US

postalCode String

המיקוד.

דוגמה: 94043

administrativeArea String

חלוקת המשנה האדמיניסטרטיבית הגבוהה ביותר שמשמשת לכתובות דואר של מדינה או אזור. סוג זה יכול להיות מדינה, מחוז, אובלסט או מחוז.

דוגמה: CA

locality String

העיר או העיירה של המיקום הזה. באזורים בעולם שבהם רשויות מוניציפאליות לא מוגדרות היטב או שלא מתאימות למבנה הזה, אין לציין את הרשות המוניציפאלית ולהשתמש במקום זאת בשדה addressLines.

דוגמה: Mountain View

addressLines List<String>

שורה אחת או יותר שבהן ניתן להשתמש כדי לציין את הכתובת. לא צריך לשנות את השדה הזה כי הוא עשוי להכיל יישובים לא ברורים.

דוגמה: [ "1350 Charleston Road" ]

recipients List<String>

רשימת נמענים של הזמנה. השדה הזה זמין רק ב-BillingAddress.

בדוגמה הבאה מוצג רכיב PostalAddress:

דוגמה

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

מחיר

בטבלה הבאה מפורטים המאפיינים לסוג Price:

נכס סוג תיאור
type Enum [ "ESTIMATE", "ACTUAL" ]

חובה.

את קוד שובר הפרסום.

amount Money

חובה.

קידום מכירות

בטבלה הבאה מפורטים המאפיינים לסוג Promotion:

נכס סוג תיאור
coupon String

חובה.

את קוד שובר הפרסום.

ProposedOrder

בטבלה הבאה מפורטים המאפיינים לסוג ProposedOrder:

נכס סוג תיאור
id String

מזהה אופציונלי להזמנה המוצעת.

cart Cart

חובה.

הפריטים של המשתמש.

otherItems רשימה<LineItem>

פריטים שהספק הוסיף, כמו דמי משלוח, עמלות אחרות ומיסים. פריטים אחרים עשויים גם לכלול פיצוי ו/או הנחה שנוספו על ידי המשתמש.

אפשר להזין עד 10 פריטים.

image Image

תמונה שמשויכת להזמנה המוצעת.

totalPrice Price

חובה.

המחיר הכולל של ההזמנה המוצעת.

extension FoodOrderExtension

חובה.

הגדרת פרטי מילוי ההזמנות של הזמנות ממסעדות.

disclaimers רשימה<Disclaimer>

תואמת להודעות כתבי ויתור שיוצגו בממשק המשתמש לפני ביצוע ההזמנה.

בדוגמה הבאה מוצג רכיב 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>

חובה.

מכיל את הארגומנטים הצפויים לבדיקה של עגלת הקניות.

חייב לכלול בדיוק פריט אחד.

בדוגמה הבאה מוצג רכיב AppRequest:

דוגמה 1

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

דוגמה 2

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

CheckoutRequestMessage

CheckoutRequestMessage הוא AppRequest עם כוונה actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

SubmitOrderRequestMessage הוא AppRequest עם כוונה actions.foodordering.intent.TRANSACTION_DECISION.

שיחה

Conversation הוא ייחודי לסשן אחד בלבד. אפשר להשתמש בו כדי לקשר Checkout ו-SubmitOrder פעולות יחד לפי הצורך.

בטבלה הבאה מפורטים המאפיינים לסוג Conversation:

נכס סוג תיאור
conversationId String

חובה.

המזהה הייחודי של השיחה.

בדוגמה הבאה מוצג רכיב Conversation:

דוגמה

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

קלט

הארגומנטים הצפויים לבדיקה של עגלת הקניות.

בטבלה הבאה מפורטים המאפיינים לסוג Input:

נכס סוג תיאור
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

חובה.

מגדירים את הערך "actions.foodordering.intent.CHECKOUT" להודעה על הבקשה לתשלום או "actions.intent.TRANSACTION_DECISION" להודעה על שליחת בקשה להזמנה.

arguments רשימה<Argument>

חובה.

מכיל את עגלת הקניות שצריך לשלם או את ההזמנה לביצוע

חייב לכלול בדיוק פריט אחד.

ארגומנט

כוללים פרטים על פריטי המזון שהמשתמש רוצה לשלם. לתשלום, רק התוסף רלוונטי. לשליחת הזמנה, רק 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

התגובה שלך בנוגע לקופה של עגלת הקניות או ל-SubmitOrderRequestMessage.

בטבלה הבאה מפורטים המאפיינים לסוג FinalResponse:

נכס סוג תיאור
richResponse RichResponse

חובה.

מכילה את התגובה שלך ל-CheckoutRequestMessage או SubmitOrderRequestMessage.

CheckoutResponse

בטבלה הבאה מפורטים המאפיינים לסוג CheckoutResponse:

נכס סוג תיאור
proposedOrder ProposedOrder

חובה.

ההזמנה המוצעת לשימוש בעסקה.

paymentOptions PaymentOptions

חובה.

אפשרות התשלום המוגדרת כברירת מחדל נבחרה עבור המשתמש.

additionalPaymentOptions רשימה<PaymentOptions>

אפשרויות תשלום חלופיות שזמינות למשתמש.

בדוגמה הבאה מוצג רכיב CheckoutResponse:

דוגמה

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

פריט

מכילה את התגובה שלך לקופה של עגלת הקניות או ל-SubmitOrderRequestMessage.

בטבלה הבאה מפורטים המאפיינים לסוג Item:

נכס סוג תיאור
structuredResponse StructuredResponse

חובה.

RichResponse

מכילה את התגובה שלכם לשלב התשלום בעגלת הקניות.

בטבלה הבאה מפורטים המאפיינים לסוג RichResponse:

נכס סוג תיאור
items רשימה<Item>

חובה.

חייב לכלול בדיוק פריט אחד.

StructuredResponse

לגבי CheckoutResponseMessage, זו יכולה להיות אחת מהאפשרויות הבאות: CheckoutResponse מצביע על כך שתהליך התשלום בוצע בהצלחה. או FoodErrorExtension: מציין כשל במהלך התשלום בקופה. התגובה עשויה לכלול הצעה מתוקנת ו-ProposedOrder ו-PaymentOptions, או הודעת שגיאה ללא PaymentOptions. עבור SubmitOrderResponseMessage, רק orderUpdate רלוונטי.

בטבלה הבאה מפורטים המאפיינים לסוג StructuredResponse:

נכס סוג תיאור
דרושה בדיוק אחת מקבוצות הנכסים הבאות.
checkoutResponse קבוצה 1 CheckoutResponse

פריטים שנבחרו, כולל מיסים והנחות.

error קבוצה 2 FoodErrorExtension

זוהו שגיאות בפריטי עגלת הקניות. בהתאם לאופי השגיאה, המאפיין הזה יכול לכלול הצעה מתוקנת ו-PaymentOptions, או הודעת שגיאה ללא PaymentOptions.

orderUpdate קבוצה 3 OrderUpdate

עדכונים אסינכרוניים בקשר להזמנות

בקטע הזה מתוארים הסוגים הכלליים שמרכיבים את הבקשות, תגובות של אינטראקציה מובנית של הזמנת אוכל בדרך כלל.

AsyncOrderUpdateRequestMessage

מודיע למשתמש על שינויים, לאחר שההזמנה נשלחה ואושרה. לדוגמה, אפשר להודיע למשתמש שההזמנה בדרך או אם המחיר השתנה. למידע נוסף, ראה

בטבלה הבאה מפורטים המאפיינים לסוג AsyncOrderUpdateRequestMessage:

נכס סוג תיאור
isInSandbox בוליאני

מציין שההזמנה שעבורה העדכון הזה נשלח היא תשלום מסוג Sandbox.

customPushMessage CustomPushMessage

חובה.

מכיל את OrderUpdate עבור הבקשה.

בדוגמה הבאה מוצג רכיב AsyncOrderUpdateRequestMessage:

דוגמה

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

AsyncOrderUpdateResponseMessage

אחרי ששולחים AsyncOrderUpdateRequestMessage, Google משיבה תשובה עם סטטוס HTTP 200 וגוף ריק. אם העדכון נכשל, Google משיבה פרטים על הסיבה לכך שעדכון ההזמנה נכשל.

סוגי עדכונים של הזמנות

לחצן

מגדיר רכיב בממשק המשתמש שאפשר להוסיף כדי לספק אינטראקציה עם המשתמש.

בטבלה הבאה מפורטים המאפיינים לסוג Button:

נכס סוג תיאור
title String

חובה.

תווית התצוגה. כדי שהעיבוד יתבצע כראוי, הטקסט צריך לכלול 30 תווים או פחות.

דוגמה: Contact us

openUrlAction OpenUrlAction

חובה.

בדוגמה הבאה מוצג רכיב Button:

דוגמה

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

CancellationInfo

בטבלה הבאה מפורטים המאפיינים לסוג CancellationInfo:

נכס סוג תיאור
reason String

חובה.

סיבת הטקסט המוצג לדחייה כאשר OrderState.state הוא "CANCELLED".

דוגמה: Restaurant closed

בדוגמה הבאה מוצג רכיב CancellationInfo:

דוגמה

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

הסוג הזה מספק למשתמש מרווח זמן משוער שבו ההזמנה תהיה במשלוח או מוכן לאיסוף. שליחת התוסף הזה ב OrderUpdate כשהמידע זמין או השתנה מאז שהוא נשלח בפעם האחרונה.

לספק הערכה שמרנית למרווח זמן האספקה, כך שהמשתמש לעמוד בציפיות באופן עקבי. לדוגמה, אם ההזמנה משוערת שהועברה היום ב-13:00, יש לשלוח פרק זמן משוער בהתאם לשינויים עקב מצב התנועה, כמו היום בשעה 12:45 עד 13:15.

המערכת מפרשת את משך הזמן או חותמת זמן לפי תקן ISO 8601 בתור מרווח הזמן updateTime של OrderUpdate (במהות, "עכשיו") updateTime ועוד duration. אין להשתמש בפורמט הזה, אלא אם זה 'עכשיו' היא ציפייה סבירה.

רווח לפי תקן ISO 8601 מפורש בתור המרווח מההתחלה עד בסוף המרווח.

בטבלה הבאה מפורטים המאפיינים לסוג FoodOrderUpdateExtension:

נכס סוג תיאור
@type המשך

סוג התוסף הזה. השדה הזה תמיד מוגדר בתור "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

ערך: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 String

משך הזמן המשוער שבו ההזמנה תימסר או תהיה מוכנה לאיסוף. המחרוזת צריכה להיות בפורמט ISO 8601 והיא צריכה להתאים למרווח זמן ולא לזמן קבוע אחד. המוסכמות המקובלות הן: הפוגות, משכי זמן ותאריכים/שעות. ניתן לשלוח את השדה הזה ב-SubmitOrderResponseMessage או ב-AsyncOrderUpdateRequestMessage כשהמידע הופך לזמין או כשיש שינוי, כגון עדכונים ראשוניים או מאוחרים.

דוגמה: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors רשימה<FoodOrderError>

תיאור השגיאות שקרו לאחר ההזמנה. מומלץ שגיאה אחת לכל עגלת קניות או לכל פריט. אפשר להשתמש ב-FoodOrderUpdateExtension.FoodOrderErrors בשגיאות שלא נכללות ב-RejectionInfo.

אפשר להזין עד פריט אחד.

בדוגמה הבאה מוצג רכיב 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

שימוש ב-estimatedFulfillmentTimeIso8601 בהודעה לגבי FoodOrderingUpdateExtension

pickupTime קבוצה 2 חותמת זמן של ISO

שימוש ב-estimatedFulfillmentTimeIso8601 בהודעה לגבי FoodOrderingUpdateExtension

בדוגמה הבאה מוצג רכיב FulfillmentInfo:

דוגמה 1

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

דוגמה 2

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

InTransitInfo

בטבלה הבאה מפורטים המאפיינים לסוג InTransitInfo:

נכס סוג תיאור
updatedTime חותמת זמן של ISO

שימוש ב-estimatedFulfillmentTimeIso8601 בהודעה לגבי FoodOrderingUpdateExtension

בדוגמה הבאה מוצג רכיב InTransitInfo:

דוגמה

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

LineItemUpdate

בטבלה הבאה מפורטים המאפיינים לסוג LineItemUpdate:

נכס סוג תיאור
orderState OrderState
price Price
reason String

הסיבה לשינוי. נדרש במקרה של שינויים במחיר.

בדוגמה הבאה מוצג רכיב LineItemUpdate:

דוגמה

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

OpenUrlAction

בטבלה הבאה מפורטים המאפיינים לסוג OpenUrlAction:

נכס סוג תיאור
url String

חובה.

הפעולה שמופעלת על ידי לחיצה על הלחצן או נגיעה בו. רשימת הקידומות הרלוונטיות תלויה ב-orderManagementActionType. "EMAIL": התחילית חייבת להיות "mailto". "CALL": הקידומת חייבת להיות "tel". "CUSTOMER_SERVICE": הקידומת חייבת להיות "mailto", "tel", "http" או "https".

דוגמה: https://www.google.com

OrderManagementAction

ניהול הזמנות מאפשר למשתמשים לקבל תמיכה לאחר ההזמנה וצריך לשלוח אותה כל OrderUpdate בהזמנת השליחה AppResponse וכל AsyncOrderUpdateRequestMessage הפעולות של ניהול ההזמנות שנשלחות בהזמנה מסוימת יכולות להשתנות בהתאם .

לדוגמה, בעמודה "CREATED" של המדינה, CUSTOMER_SERVICE עשוי להפנות אל הטלפון לתמיכת לקוחות. לאחר מכן, בקטע 'אושר' מדינה (CUSTOMER_SERVICE), יכול להשתנות לטלפון של המסעדה אם זו הסיבה הטובה ביותר איש הקשר של הלקוח. באופן דומה, כשההזמנה מופיעה בפורמט "FULFILLED" מדינה, CUSTOMER_SERVICE יכול להפנות לכתובות האימייל שלך לתמיכה.

בטבלה הבאה מפורטים המאפיינים לסוג OrderManagementAction:

נכס סוג תיאור
type OrderManagementActionType

חובה.

button Button

חובה.

בדוגמה הבאה מוצג רכיב OrderManagementAction:

דוגמה 1

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

דוגמה 2

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

OrderManagementActionType

מגדירה סוגים שקשורים אל OrderManagementAction.

הסוג OrderManagementActionType כולל את הערכים האפשריים הבאים:

  • CUSTOMER_SERVICE: כתובת האימייל ו/או מספר הטלפון ליצירת קשר של שירות הלקוחות שיוצג בדף אישור ההזמנה. אי אפשר לדלג על השלב הזה. הקידומת openUrlAction.url חייבת להיות "mailto", "tel", "http" או "https".
  • EMAIL: פעולה באימייל בדף פרטי ההזמנה בלבד. התחילית openUrlAction.url חייבת להיות "mailto".
  • CALL_DRIVER: פעולת קריאה בדף פרטי ההזמנה בלבד. הקידומת 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

חובה.

חובה אם ההזמנה בסטטוס 'אושרה', 'IN_TRANSIT' או 'FULFILLED'. השדה הזה הוא המזהה היחיד ומוצג למשתמש של ההזמנה הזו (בדרך כלל מזהה ההזמנה של המסעדה), שמוצג בקבלה של מבצע השילוב וגם בכרטיס ההזמנה של Google. המשתמש חייב להיות מסוגל להשתמש במזהה הזה כדי להפנות להזמנה של שירות לקוחות אצל הספק והמטמיע. צריך לציין את המזהה הזה רק פעם אחת בכל OrderUpdate נתון. עד לחישוב הערך הזה, השדה actionOrderId הוא userViewOrderId. לדוגמה, אסור להציג את הפרמטר userViewOrderId עד שהמסעדה תאשר את ההזמנה. לאחר האישור, תצטרכו לשלוח 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 או CollectInfo.
  • PROMO_NOT_APPLICABLE: יש בעיה במבצע.
  • UNKNOWN: כל סיבה אחרת.

סוגים הקשורים לתשלומים

בקטע הזה מתוארים הסוגים הקשורים לתשלומים שמשמשים להזמנת אוכל.

ActionProvidedPaymentOptions

הדרישות לאמצעי התשלום שסופק על ידי פעולה.

בטבלה הבאה מפורטים המאפיינים לסוג ActionProvidedPaymentOptions:

נכס סוג תיאור
paymentType PaymentType

חובה.

displayName String

חובה.

שם אמצעי התשלום המוצג בקבלה.

דוגמה: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

נתונים נוספים עבור paymentType "ON_FULFILLMENT". לדוגמה, אפשר להשתמש בשדה הזה כדי לציין אם יש תמיכה במזומן או בכרטיס בזמן אספקה.

בדוגמה הבאה מוצג רכיב ActionProvidedPaymentOptions:

דוגמה

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

AllowedAuthMethods

הסוג AllowedAuthMethods כולל את הערכים האפשריים הבאים:

  • PAN_ONLY: שיטת האימות המשויכת לכרטיסי התשלום ששמורים בחשבון Google של המשתמש. נתוני התשלום שהוחזרו כוללים מספר חשבון אישי (PAN) עם חודש התפוגה ושנת התפוגה.

AllowedCardNetworks

הסוג AllowedCardNetworks כולל את הערכים האפשריים הבאים:

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

BillingAddressParameters

האובייקט הזה מאפשר להגדיר שדות נוספים שיוחזרו עבור כתובת מבוקשת לחיוב.

בטבלה הבאה מפורטים המאפיינים לסוג BillingAddressParameters:

נכס סוג תיאור
format String

הפורמט של הכתובת לחיוב נדרש כדי להשלים את העסקה. MIN: שם, קוד מדינה ומיקוד. מלא: שם, רחוב, יישוב, אזור, קוד מדינה ומיקוד.

בדוגמה הבאה מוצג רכיב BillingAddressParameters:

דוגמה 1

{
  "format": "MIN"
}

דוגמה 2

{
  "format": "FULL"
}

CardParameters

אפשר להשתמש באובייקט הזה כדי להגדיר את התמיכה של האתר ב-Google Pay API.

בטבלה הבאה מפורטים המאפיינים לסוג CardParameters:

נכס סוג תיאור
allowedAuthMethods רשימה<Const>

חובה.

שדות נתמכים לאימות עסקה בכרטיס.

אפשר להזין עד פריט אחד.

allowedCardNetworks רשימה<AllowedCardNetworks>

חובה.

אחת או יותר מרשתות הכרטיסים שאתם תומכים בהן ותומכות גם ב-Google Pay API.

אפשר להזין עד פריט אחד.

billingAddressRequired בוליאני

צריך להגדיר את הערך כ-True אם נדרשת כתובת לחיוב. יש להגיש בקשה לכתובת חיוב רק אם היא נדרשת לעיבוד העסקה. בקשות נוספות לנתונים יכולות להגביר את החיכוך בתהליך התשלום ולהוביל לשיעורי המרה (CVR) נמוכים יותר.

billingAddressParameters BillingAddressParameters

השדות הצפויים שמוחזרים אם billingAddressrequired מוגדר כ-True.

cvcRequired בוליאני

יש להגדיר את הערך כ-True אם משתמשים ב-TimeofMoney, כ-FALSE לכל שאר החברות לעיבוד תשלומים.

בדוגמה הבאה מוצג רכיב CardParameters:

דוגמה 1

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

דוגמה 2

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

GoogleProvidedPaymentInstrument

בטבלה הבאה מפורטים המאפיינים לסוג GoogleProvidedPaymentInstrument:

נכס סוג תיאור
instrumentToken String

חובה.

מחרוזת בקידוד בסיס 64 שמכילה את אסימון התשלום לצורך חיוב המשתמש במעבד תשלום של Google Pay שמשתתף בתוכנית, בהתאם ל-GoogleProvidedPaymentOptions שצוין בעבר.

billingAddress PostalAddress

הכתובת לחיוב של התשלום.

בדוגמה הבאה מוצג רכיב GoogleProvidedPaymentInstrument:

דוגמה

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

GoogleProvidedPaymentOptions

הדרישות לשימוש באמצעי התשלום ש-Google סיפקה.

בטבלה הבאה מפורטים המאפיינים לסוג GoogleProvidedPaymentOptions:

נכס סוג תיאור
facilitationSpecification String

JSON של PaymentDataRequest כמחרוזת. אפשר להשתמש באובייקט הזה כדי להגדיר את התמיכה של האתר ב-Google Pay API.

supportedCardNetworks רשימה<SupportedCardNetworks>

במקום זאת, אפשר להשתמש ב-facilitationSpecification. סוגי רשתות הכרטיסים שהנציג תומך בהן.

השדה הזה הוצא משימוש.

prepaidCardDisallowed בוליאני

במקום זאת, אפשר להשתמש ב-facilitationSpecification. האם אפשר להשתמש בכרטיס בתשלום מראש כסוג תשלום.

השדה הזה הוצא משימוש.

billingAddressRequired בוליאני

במקום זאת, אפשר להשתמש ב-facilitationSpecification. האם נדרשת כתובת לחיוב או לא.

השדה הזה הוצא משימוש.

tokenizationParameters TokenizationParameters

השדה הזה הוצא משימוש.

בדוגמה הבאה מוצג רכיב GoogleProvidedPaymentOptions:

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

MerchantInfo

אפשר להשתמש באובייקט הזה כדי להגדיר את התמיכה של האתר ב-Google Pay API.

בטבלה הבאה מפורטים המאפיינים לסוג MerchantInfo:

נכס סוג תיאור
merchantId String

מספר חשבון Merchant ב-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

חובה.

(מספר חשבון Merchant ב-Google Pay) מידע על המוכר שמבקש נתוני תשלום.

allowedPaymentMethods רשימה<PaymentMethod>

חובה.

מציינת את התמיכה באמצעי תשלום אחד או יותר שנתמכים ב-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. השדה הזה נדרש כששולחים קריאות חוזרות לממשק ה-API של אירועי העסקאות ב-Google.

totalPriceStatus המשך

חובה.

שימוש בתכונה 'ESTIMATED' כברירת המחדל. המחיר הכולל עשוי להשתנות על סמך פרטי התגובה, למשל מס מכירה שנגבה לפי כתובת לחיוב.

ערך: ESTIMATED

totalPrice String

חובה.

הערך הכספי הכולל של העסקה עם דיוק עשרוני עם שתי ספרות אחרי הנקודה העשרונית. הערך של השדה הזה צריך להיות זהה לערך של Car.totalPrice.

בדוגמה הבאה מוצג רכיב TransactionInfo:

דוגמה

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