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

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

סוגי בסיס

עגלת קניות

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

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

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

הסוג של האובייקט. צריך להשמיט את השדה הזה אם אובייקט ההורה 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 או ב-PickupInfo.
  • OUT_OF_SERVICE_AREA: לא ניתן לשלוח את ההזמנה לכתובת של המשתמש.
  • PROMO_EXPIRED: לא ניתן היה להחיל את המבצע כי התוקף שלו פג.
  • PROMO_NOT_APPLICABLE: קוד שגיאה כללי לזיהוי כל המקרים שבהם לא ניתן להחיל קוד הטבה, אם אף אחת משגיאות הקוד האחרות לא מתאימה.
  • PROMO_NOT_RECOGNIZED: קוד השובר לא זוהה.
  • PROMO_ORDER_INELIGIBLE: לא ניתן להשתמש בשובר הזה בהזמנה הנוכחית.
  • PROMO_USER_INELIGIBLE: המשתמש הנוכחי לא עומד בדרישות לשימוש בשובר הזה.
  • AVAILABILITY_CHANGED: הפריט לא זמין יותר או שאין מספיק פריטים כדי למלא את הבקשה.
  • INCORRECT_PRICE: שגיאות במחירים של עמלות או של סכום כולל.
  • INVALID: יש נתונים לא חוקיים ב-LineItem, ב-FulfillmentOption או בקידום מכירות.
  • NOT_FOUND: לא ניתן למצוא פריט שורה, אפשרות לטיפול בהזמנה או קידום מכירות.
  • 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 List<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 List<PaymentOptions>

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

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

דוגמה

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

FoodItemExtension

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

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

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

חובה.

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

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

options List<FoodItemOption>

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

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

דוגמה

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

FoodItemOption

בטבלה הבאה מפורטים המאפיינים של הסוג 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".

עבור פריט בתוך עגלת קניות (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$ מיוצג כ-units = -1 ו-nanos = -750,000,000.

לדוגמה: 730000000

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

דוגמה 1

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

דוגמה 2

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

הזמנה

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

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

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

חובה.

הסדר המוצע שגרם להזמנה.

googleOrderId String

חובה.

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

orderDate חותמת זמן לפי תקן ISO

חובה.

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

paymentInfo PaymentInfo

חובה.

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

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

דוגמה

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

OrderUpdate

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

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

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

חובה.

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

הרמה המנהלית הגבוהה ביותר שמשמשת לכתובות דואר של מדינה או אזור. יכול להיות שמדובר במדינה, במחוז, ב-oblast או במחוז.

לדוגמה: 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 List<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 מציין שהתשלום בוצע בהצלחה. או 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 ולהתאים למרווח זמן ולא לשעה קבועה אחת. המוסכמות הקבילות הן: Intervals (מרווחי זמן), Durations (משכי זמן) ו-Dates/Times (תאריכים/שעות). אפשר לשלוח את השדה הזה ב-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 יכול לשנות את מספר הטלפון של המסעדה אם זהו אמצעי הקשר הטוב ביותר ללקוח. באופן דומה, אחרי שההזמנה תהיה בסטטוס 'הושלמה', 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.

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

חובה.

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

ערך: ESTIMATED

totalPrice String

חובה.

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

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

דוגמה

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