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

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

סוגי בסיסים

עגלת קניות

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

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

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

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

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

id String

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

merchant Merchant

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

lineItems List<LineItem>

חובה.

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

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

promotions List<Promotion>

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

notes String

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

extension FoodCartExtension

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

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

דוגמה 1

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

דוגמה 2

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

יצירת קשר

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

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

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

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

לדוגמה: Lovefood Ordering

email String

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

לדוגמה: ilovefood@example.com

firstName String

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

לדוגמה: Lovefood

lastName String

שם המשפחה של מי שיקבל את ההזמנה.

לדוגמה: Ordering

phoneNumber String

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

לדוגמה: +16501234567

emailVerified בוליאני

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

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

דוגמה

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

CustomPushMessage

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

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

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

חובה.

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

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

דוגמה

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

DeliveryInfo

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

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

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

לדוגמה: PT90M

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

דוגמה

{
  "deliveryTimeIso8601": "PT90M"
}

כתב ויתור

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

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

חובה.

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

feeAmount Money

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

feeAmountRange FeeAmountRange

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

feePercent מספר

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

FeeAmountRange

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

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

הערך התחתון של סכום העמלה שחויבת.

maxFeeAmount Money

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

FeePercentRange

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

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

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

maxFeePercent מספר

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

FoodCartExtension

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

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

נכס סוג תיאור
@type Const

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

חובה.

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

location Location

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

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

דוגמה 1

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

דוגמה 2

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

FoodErrorExtension

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

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

נכס סוג תיאור
@type Const

חובה.

הסוג של התוסף.

ערך: 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 תקין מועברות לשלב האישור, במקום לחייב את המשתמש לבדוק את עגלת הקניות.

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 Const

חובה.

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

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

options רשימה<FoodItemOption>

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

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

דוגמה

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

FoodItemOption

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

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

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

לדוגמה: 39231093

offerId String

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

לדוגמה: 912835081

name String

שם האפשרות.

לדוגמה: Honey Mustard

price Money
note String

הערה לגבי האפשרות.

quantity מספר

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

לדוגמה: 3

subOptions List<FoodItemOption>

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

לדוגמה: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

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

דוגמה 1

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

דוגמה 2

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

FoodOrderError

מכיל פרטים על שגיאות ב-CheckoutResponse.

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

נכס סוג תיאור
error Error

חובה.

id String

חובה כאשר: error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

השדה הזה נדרש לשגיאות ברמת הפריט. זהו ה-LineItem.id שהוקצה על ידי Google לפריטי תפריט או ל-FoodItemOption.id לתוספים.

description String

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

updatedPrice Money

חובה כאשר error = "PRICE_CHANGED".

המחיר החדש של הפריט שגרם לשגיאה. השדה הזה נדרש רק כשהשגיאה היא PRICE_CHANGED.

availableQuantity 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 Const

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

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

availableFulfillmentOptions List<FulfillmentOption>

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

optinForRemarketing בוליאני

בקשה של משתמש להצטרף לערוצי השיווק שלכם. כברירת מחדל, אי אפשר לשלוח תוכן שיווקי בלי הסכמת המשתמש. אם הערך של optinForRemarketing הוא True, אפשר להירשם את המשתמש. אם הערך של optinForRemarketing הוא false או שהוא לא קיים, עליכם להשאיר את סטטוס המינוי במערכת כפי שהוא. המשתמשים לא יכולים לבטל את ההסכמה דרך 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".

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

name String

חובה.

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

type LineItemType

חובה.

quantity Integer

חובה כאשר: type = "REGULAR".

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

description String

תיאור הפריט.

price Price

חובה.

המחיר של הפריט או הפריטים. הערך הזה משקף את המחיר הכולל של כל המוצרים או השירותים בפריט הזה (כלומר, מוסיפים את העלות של כל התוספים ומכפילים במספר). לדוגמה: אם הכמות של פריט שעולה 10 $‎ היא 3, המחיר יהיה 30 $‎. פיצה אחת עם מחיר בסיסי של 5 $ו-1 $תוספת תעלה 6$. אם רוצים לקנות שתי פיצות (כמות = 2) במחיר בסיסי של 5$, עם תוספת של 1 $לכל פיצה, המחיר הכולל יהיה 12$. לכל פריט צריך להיות מחיר, גם אם המחיר הוא '0'. כשהסוג הוא DISCOUNT, מציינים את הערך כשלילי (לדוגמה, '2-').

subLines List<SublineNote>

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

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

offerId String

חובה כאשר: type = "REGULAR".

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

extension FoodItemExtension

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

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

דוגמה 1

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

דוגמה 2

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

LineItemType

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

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

מיקום

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

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

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

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

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

postalAddress PostalAddress
zipCode String

לדוגמה: 90210

city String

שם העיר.

לדוגמה: Los Angeles

notes String

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

לדוגמה: Gate code is #111

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

דוגמה

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

מוֹכר

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

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

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

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

name String

חובה.

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

לדוגמה: Falafel Bite

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

דוגמה

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

כסף

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

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

חובה.

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

לדוגמה: USD

units String

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

לדוגמה: 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 עבור הזמנה בסטטוס 'נוצרה', המזהה הזה יהיה המזהה הגלוי למשתמש שהוזן ומוצג בכרטיס ההזמנה ב-Google.

orderState OrderState

חובה.

המצב החדש של ההזמנה.

lineItemUpdates Map<String, LineItemUpdate>
updateTime חותמת זמן לפי תקן ISO

חובה.

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

orderManagementActions List<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 List<LineItem>

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

לא יכולים להיות יותר מ-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 List<Input>

חובה.

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

חייב להיות בה פריט אחד בלבד.

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

דוגמה 1

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

דוגמה 2

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

CheckoutRequestMessage

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

SubmitOrderRequestMessage

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

שיחה

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

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

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

חובה.

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

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

דוגמה

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

קלט

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

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

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

חובה.

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

arguments List<Argument>

חובה.

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

חייב להיות בה פריט אחד בלבד.

ארגומנט

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

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

נכס סוג תיאור
צריך לציין בדיוק אחת מהקבוצות הבאות של מאפיינים.
extension קבוצה 1 Cart

כאן אפשר לראות פרטים על פריטי המזון שהמשתמש רוצה לשלם.

transactionDecisionValue קבוצה 2 TransactionDecisionValue

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

תגובה לטיפול בהזמנה

AppResponse

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

נכס סוג תיאור
expectUserResponse Const

מוגדר כ-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 List<PaymentOptions>

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

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

דוגמה

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

פריט

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

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

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

חובה.

RichResponse

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

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

נכס סוג תיאור
items List<Item>

חובה.

חייב להיות בה פריט אחד בלבד.

StructuredResponse

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

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

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

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

error קבוצה 2 FoodErrorExtension

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

orderUpdate קבוצה 3 OrderUpdate

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

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

AsyncOrderUpdateRequestMessage

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

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

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

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

customPushMessage CustomPushMessage

חובה.

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

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

דוגמה

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

AsyncOrderUpdateResponseMessage

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

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

לחצן

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

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

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

חובה.

תווית התצוגה. כדי להבטיח עיבוד תקין, יש להשתמש באותיות גדולות בתחילת המשפט (באנגלית) באורך 30 תווים לכל היותר.

לדוגמה: Contact us

openUrlAction OpenUrlAction

חובה.

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

דוגמה

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

CancellationInfo

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

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

חובה.

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

לדוגמה: Restaurant closed

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

דוגמה

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

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

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

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

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

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

נכס סוג תיאור
@type Const

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

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

estimatedFulfillmentTimeIso8601 String

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

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

foodOrderErrors List<FoodOrderError>

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

חובה.

חובה אם סטטוס ההזמנה הוא 'CONFIRMED',‏ 'IN_TRANSIT' או 'FULFILLED'. השדה הזה הוא המזהה היחיד של ההזמנה שגלוי למשתמשים (בדרך כלל מזהה ההזמנה של המסעדה), והוא מוצג גם בקבלה של המשתמש המאוחזר וגם בכרטיס ההזמנה ב-Google. המשתמש צריך להיות מסוגל להשתמש במזהה הזה כדי להפנות את ההזמנה לשירות הלקוחות של הספק והממשק. צריך לספק את המזהה הזה רק פעם אחת בכל OrderUpdate נתון. עד שהוא מסופק, הערך של actionOrderId הוא userVisibleOrderId. לדוגמה, יכול להיות שלא יהיה לכם userVisibleOrderId עד שהמסעדה תאשר את ההזמנה. לאחר האישור, תצטרכו לשלוח AsyncOrderUpdateRequestMessage עם OrderUpdate וקבלה.

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

דוגמה

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

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

חובה.

reason String

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

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

דוגמה

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

RejectionType

אלה הערכים האפשריים של הסוג RejectionType:

  • INELIGIBLE: המשתמש לא עומד בדרישות בגלל בעיות שקשורות למדיניות או לסיכון.
  • PAYMENT_DECLINED: יש בעיה בעיבוד התשלום.
  • UNAVAILABLE_SLOT: לא ניתן למלא את ההזמנה במועד שצוין בהזמנה מראש בשדות DeliveryInfo או PickupInfo.
  • PROMO_NOT_APPLICABLE: יש בעיה במבצע.
  • UNKNOWN: כל סיבה אחרת.

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

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

ActionProvidedPaymentOptions

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

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

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

חובה.

displayName String

חובה.

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

לדוגמה: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

דוגמה

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

AllowedAuthMethods

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

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

AllowedCardNetworks

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

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

BillingAddressParameters

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

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

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

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

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

דוגמה 1

{
  "format": "MIN"
}

דוגמה 2

{
  "format": "FULL"
}

CardParameters

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

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

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

חובה.

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

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

allowedCardNetworks List<AllowedCardNetworks>

חובה.

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

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

billingAddressRequired בוליאני

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

billingAddressParameters BillingAddressParameters

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

cvcRequired בוליאני

מגדירים את הערך כ-true אם משתמשים ב-TimesofMoney, ו-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

חובה.

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

billingAddress PostalAddress

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

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

דוגמה

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

GoogleProvidedPaymentOptions

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

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

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

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

supportedCardNetworks List<SupportedCardNetworks>

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

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

prepaidCardDisallowed בוליאני

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

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

billingAddressRequired בוליאני

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

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

tokenizationParameters TokenizationParameters

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

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

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

MerchantInfo

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

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

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

מזהה המוכר ב-Google שהונפקה לכם על ידי Google Pay.

merchantName String

חובה.

שם המוכר מקודד כ-UTF-8. שם המוֹכר מוצג בגיליון התשלומים.

OnFulfillmentPaymentData

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

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

נכס סוג תיאור
supportedPaymentOptions רשימה<PaymentOptionsEnums>

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

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

דוגמה

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

פרמטרים

הגדרת סוגים שקשורים ל-TokenizationParameters.

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

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

חובה.

לדוגמה: braintree

gatewayMerchantId String
[additionalKey: string] String צמדים נוספים של מפתח/ערך

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

דוגמה 1

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

דוגמה 2

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

PaymentDataRequest

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

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

נכס סוג תיאור
apiVersion Const

חובה.

גרסת ה-API הראשית.

ערך: 2

apiVersionMinor Const

חובה.

גרסת API משנית.

ערך: 0

merchantInfo MerchantInfo

חובה.

(מזהה מוכר ב-Google Pay) מידע על המוכר שמבקש את נתוני התשלום.

allowedPaymentMethods List<PaymentMethod>

חובה.

מציין תמיכה באמצעי תשלום אחד או יותר שנתמכים על ידי Google Pay API.

transactionInfo TransactionInfo

חובה.

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

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

דוגמה

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

PaymentInfo

מידע שקשור לתשלום בהזמנה.

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

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

חובה.

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

paymentType PaymentType

חובה.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

דוגמה 1

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

דוגמה 2

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

PaymentMethod

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

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

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

חובה.

מזהה קצר של אמצעי התשלום הנתמך. בשלב זה, יש תמיכה רק ב-CARD.

ערך: CARD

parameters CardParameters

חובה.

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

tokenizationSpecification TokenizationSpecification

חובה.

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

חובה.

parameters Parameters

חובה.

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

דוגמה 1

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

דוגמה 2

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

TransactionInfo

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

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

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

חובה.

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

transactionId String

מזהה ייחודי שמזהה ניסיון לביצוע עסקה. מוכרים יכולים להשתמש במזהה קיים או ליצור מזהה ספציפי לניסיונות עסקאות ב-Google Pay. השדה הזה נדרש כששולחים קריאות חזרה (callbacks) ל-Google Transaction Events API.

totalPriceStatus המשך

חובה.

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

ערך: ESTIMATED

totalPrice String

חובה.

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

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

דוגמה

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