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

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

סוגי בסיס

עגלת קניות

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

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

נכס סוג תיאור
@type מגבלה

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

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

id String

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

merchant Merchant

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

lineItems רשימה<LineItem>

חובה.

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

אפשר לכלול עד פריט אחד.

promotions רשימה<Promotion>

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

notes String

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

extension FoodCartExtension

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

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

דוגמה 1

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

דוגמה 2

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

Contact

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

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

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

שם האדם שקיבל את ההזמנה, כפי שברצונך להציג. יש להשתמש בשדה הזה אם שם פרטי ו-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{שעה}:{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#Integrated_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: פריט שורה, אפשרות מילוי או מבצע מכילים נתונים לא חוקיים.
  • NOT_FOUND: לא ניתן למצוא LineItem, FulfillmentOption או מבצע.
  • PRICE_CHANGED: מחיר הפריט השתנה.

FeeAmountRange

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

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

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

maxFeeAmount Money

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

FeePercentRange

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

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

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

maxFeePercent מספר

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

FoodCartExtension

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

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

נכס סוג תיאור
@type מגבלה

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

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

contact Contact

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

fulfillmentPreference FulfillmentOption

חובה.

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

location Location

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

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

דוגמה 1

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

דוגמה 2

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

FoodErrorExtension

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

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

נכס סוג תיאור
@type מגבלה

חובה.

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

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

foodOrderErrors רשימה<FoodOrderError>

חובה.

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

אפשר לכלול עד פריט אחד.

correctedProposedOrder ProposedOrder

חובה כאשר foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

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

paymentOptions PaymentOptions

חובה כאשר foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

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

additionalPaymentOptions רשימה<PaymentOptions>

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

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

דוגמה

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

FoodItemExtension

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

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

נכס סוג תיאור
@type מגבלה

חובה.

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

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

options רשימה<FoodItemOption>

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

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

דוגמה

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

FoodItemOption

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

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

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

לדוגמה: 39231093

offerId String

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

לדוגמה: 912835081

name String

שם האפשרות.

לדוגמה: Honey Mustard

price Money
note String

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

quantity מספר

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

לדוגמה: 3

subOptions רשימה<FoodItemOption>

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

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

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

דוגמה 1

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

דוגמה 2

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

FoodOrderError

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

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

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

חובה.

id String

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

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

description String

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

updatedPrice Money

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

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

availableQuantity Integer

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

כמות זמינה חדשה של הפריט שגרם לשגיאה. הדבר נדרש רק כאשר השגיאה היא "INVALID" או "NOT_FOUND". הערך צריך להיות אפס במקרים של "INVALID" ו-"NOT_FOUND".

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

דוגמה 1

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

דוגמה 2

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

FoodOrderExtension

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

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

נכס סוג תיאור
@type מגבלה

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

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

availableFulfillmentOptions רשימה<FulfillmentOption>

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

optinForRemarketing בוליאני

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

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

דוגמה 1

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

דוגמה 2

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

FulfillmentOption

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

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

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

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

fulfillmentInfo FulfillmentOptionInfo

חובה.

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

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

price Money

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

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

דוגמה

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

FulfillmentOptionInfo

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

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

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

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

pickup קבוצה 2 PickupInfo

אם השדה הזה קיים, המשמעות היא שהזמנת איסוף.

תמונה

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

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

חובה.

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

LineItem

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

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

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

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

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

name String

חובה.

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

type LineItemType

חובה.

quantity Integer

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

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

description String

תיאור הפריט.

price Price

חובה.

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

subLines רשימה<SublineNote>

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

אפשר לכלול עד פריט אחד.

offerId String

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

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

extension FoodItemExtension

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

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

דוגמה 1

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

דוגמה 2

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

LineItemType

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

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

מיקום

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

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

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

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

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

postalAddress PostalAddress
zipCode String

לדוגמה: 90210

city String

שם העיר.

לדוגמה: Los Angeles

notes String

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

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

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

דוגמה

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

מוֹכר

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

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

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

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

name String

חובה.

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

לדוגמה: Falafel Bite

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

דוגמה

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

כסף

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

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

חובה.

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

לדוגמה: USD

units String

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

לדוגמה: 36

nanos Integer

מספר יחידות הננו (10^-9) של הסכום. הערך חייב להיות בין -999,999,999 ל- +999,999,999, כולל. צריך להשתמש בכללים הבאים: אם הערך של היחידות השלמות הוא חיובי, מספר יחידות הננו חייב להיות חיובי או אפס. אם מספר היחידות השלמות הוא אפס, מספר יחידות הננו יכול להיות חיובי, אפס או שלילי. אם מספר היחידות השלמות הוא שלילי, הערך של יחידות הננו חייב להיות שלילי או אפס. לדוגמה, הסכום $-1.75 מיוצג באמצעות יחידות = -1 ויחידות ננו = -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

חובה.

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

orderState OrderState

חובה.

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

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

חובה.

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

orderManagementActions רשימה<OrderManagementAction>

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

אפשר לכלול עד פריט אחד ועד 6 פריטים.

rejectionInfo RejectionInfo

חובה כאשר orderState.state = "REJECTED".

cancellationInfo CancellationInfo

חובה כאשר orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

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

fulfillmentInfo FulfillmentInfo

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

receipt Receipt

חובה כאשר orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

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

totalPrice Price

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

infoExtension FoodOrderUpdateExtension

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

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

דוגמה

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

PickupInfo

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

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

זמן איסוף משוער, בפורמט חותמת זמן לפי תקן ISO 8601: "{year}-{month}-{day}T{שעה}:{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#Integrated_date_and_time_representations. אתם יכולים להשתמש בשדה הזה כדי לעדכן את זמן האיסוף המשוער בתשובה בשלב התשלום.

לדוגמה: PT90M

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

דוגמה

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

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

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

חובה.

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

לדוגמה: US

postalCode String

המיקוד.

לדוגמה: 94043

administrativeArea String

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

לדוגמה: CA

locality String

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

לדוגמה: Mountain View

addressLines List<String>

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

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

recipients List<String>

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

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

דוגמה

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

מחיר

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

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

חובה.

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

amount Money

חובה.

תוכן מקודם

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

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

חובה.

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

ProposedOrder

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

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

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

cart Cart

חובה.

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

otherItems רשימה<LineItem>

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

אפשר לכלול עד 10 פריטים.

image Image

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

totalPrice Price

חובה.

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

extension FoodOrderExtension

חובה.

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

disclaimers רשימה<Disclaimer>

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

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

דוגמה

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

SublineNote

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

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

חובה.

חותמת זמן

התאריך והשעה, בפורמט הבא: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

מכיל את Order.

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

נכס סוג תיאור
order Order

חובה.

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

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

דוגמה

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

בקשה למילוי הזמנות

AppRequest

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

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

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

conversation Conversation
inputs רשימה<Input>

חובה.

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

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

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

דוגמה 1

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

דוגמה 2

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

CheckoutRequestMessage

השדה CheckoutRequestMessage הוא AppRequest עם ה-Intent actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

השדה SubmitOrderRequestMessage הוא AppRequest עם ה-Intent actions.foodordering.intent.TRANSACTION_DECISION.

שיחה

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

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

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

חובה.

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

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

דוגמה

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

קלט

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

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

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

חובה.

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

arguments רשימה<Argument>

חובה.

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

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

ארגומנט

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

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

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

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

transactionDecisionValue קבוצה 2 TransactionDecisionValue

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

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

AppResponse

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

נכס סוג תיאור
expectUserResponse מגבלה

הגדרה כ-False.

ערך: False

finalResponse FinalResponse

חובה.

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

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

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

דוגמה 4

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

CheckoutResponseMessage

השדה CheckoutResponseMessage הוא AppResponse שיש לו checkoutResponse או error ב-StructuredResponse.

SubmitOrderResponseMessage

SubmitOrderResponseMessage הוא AppResponse עם orderUpdate בStructuredResponse.

FinalResponse

התגובה שלך לקופה בעגלת הקניות או לשלוח OrderRequestMessage.

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

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

חובה.

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

CheckoutResponse

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

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

חובה.

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

paymentOptions PaymentOptions

חובה.

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

additionalPaymentOptions רשימה<PaymentOptions>

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

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

דוגמה

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

פריט

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

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

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

חובה.

RichResponse

כולל את התגובה שלכם לתשלום בקופה.

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

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

חובה.

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

StructuredResponse

עבור Checkout responseMessage, דוגמה זו יכולה להיות אחת מהאפשרויות הבאות: CheckoutRecipient (תגובה של Checkout)" מצביע על כך שתהליך התשלום בוצע בהצלחה. OR FoodErrorExtension: מצביע על כשל במהלך התשלום. התגובה עשויה לכלול תיקון של הצעות מסוג ProposedOrder ו-PaymentOptions, או הודעת שגיאה ללא אפשרויות PaymentOptions. לגבי SubmitOrderOrderMessage, רק האפשרות orderUpdate רלוונטית.

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

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

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

error קבוצה 2 FoodErrorExtension

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

orderUpdate קבוצה 3 OrderUpdate

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

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

AsyncOrderUpdateRequestMessage

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

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

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

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

customPushMessage CustomPushMessage

חובה.

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

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

דוגמה

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

AsyncOrderUpdateResponseMessage

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

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

לחצן

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

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

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

חובה.

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

לדוגמה: Contact us

openUrlAction OpenUrlAction

חובה.

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

דוגמה

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

CancellationInfo

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

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

חובה.

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

לדוגמה: Restaurant closed

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

דוגמה

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

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

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

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

מרווח ISO 8601 מפורש כמרווח מתחילתו ועד סופו.

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

נכס סוג תיאור
@type מגבלה

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

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

estimatedFulfillmentTimeIso8601 String

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

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

foodOrderErrors רשימה<FoodOrderError>

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

אפשר לכלול עד פריט אחד.

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

דוגמה 1

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

דוגמה 2

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

FulfillmentInfo

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

נכס סוג תיאור
נדרשת בדיוק אחת מקבוצות הנכסים הבאות.
deliveryTime קבוצה 1 חותמת זמן של ISO

שימוש ב-EstimatedFulfillmentTimeIso8601 בהודעה של FoodOrderingUpdateExtension

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

שימוש ב-EstimatedFulfillmentTimeIso8601 בהודעה של FoodOrderingUpdateExtension

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

דוגמה 1

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

דוגמה 2

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

InTransitInfo

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

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

שימוש ב-EstimatedFulfillmentTimeIso8601 בהודעה של FoodOrderingUpdateExtension

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

דוגמה

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

LineItemUpdate

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

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

הסיבה לשינוי. חובה לבצע שינויים במחיר.

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

דוגמה

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

OpenUrlAction

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

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

חובה.

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

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

OrderManagementAction

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

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

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

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

חובה.

button Button

חובה.

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

דוגמה 1

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

דוגמה 2

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

OrderManagementActionType

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

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

  • CUSTOMER_SERVICE: כתובת האימייל או המספר ליצירת קשר של שירות הלקוחות, שיוצגו בדף אישור ההזמנה. חובה לציין את התחילית openUrlAction.url חייבת להיות "mailto", "tel", "http" או "https".
  • EMAIL: פעולת אימייל בדף פרטי ההזמנה בלבד. התחילית openUrlAction.url חייבת להיות "mailto".
  • CALL_DRIVER: פעולת קריאה בדף פרטי ההזמנה בלבד. התחילית openUrlAction.url חייבת להיות tel.
  • CALL_RESTAURANT: פעולת קריאה בדף פרטי ההזמנה בלבד. התחילית openUrlAction.url חייבת להיות tel.

OrderState

המצב הנוכחי של הצו. כל ערך state של OrderState תואם גם לסטטוס רכישה בכתובת myaccount.google.com.

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

נכס סוג תיאור
state OrderStateEnum

חובה.

label String

חובה.

מחרוזת התצוגה של המדינה שגלויה למשתמש. חשוב להשתמש באות גדולה בתחילת המשפט.

לדוגמה: Your order has been received

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

דוגמה

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

OrderStateEnum

הגדרת סוגים שקשורים אל OrderState.

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

  • CREATED: ההזמנה נוצרה על ידי חברת השילוב וממתינה לאישור מהספק. תואם לסטטוס הרכישה 'הוזמנה'.
  • CONFIRMED: ההזמנה אושרה על ידי הספק והיא פעילה. תואם לסטטוס הרכישה 'אושרה'.
  • REJECTED: ההזמנה נדחתה על ידי המטמיע או הספק. תואם לסטטוס הרכישה 'נדחתה'.
  • CANCELLED: המשתמש ביטל את ההזמנה. תואם לסטטוס הרכישה 'בוטלה'.
  • IN_PREPARATION: מכינים אוכל. תואם לסטטוס הרכישה "סטטוס לא ידוע".
  • READY_FOR_PICKUP: האוכל מוכן לאיסוף. תואם לסטטוס הרכישה 'מוכן לאיסוף'.
  • IN_TRANSIT: ההזמנה נמסרת. תואם לסטטוס הרכישה 'בתהליך'.
  • FULFILLED: המשתמש קיבל את מה שהוזמן. תואם לסטטוס הרכישה 'אספתי'.

קבלה

יש לשלוח את הסוג הזה בהזמנת שליחה AppResponse, כאשר הערך של OrderState הוא "CONFIRMED", "FULFILLED" או "IN_TRANSIT". לשלוח קבלה כשuserVisibleOrderId יהיה זמין. אין צורך להמשיך לשלוח את הקבלה בעדכונים הבאים.

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

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

חובה.

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

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

דוגמה

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

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

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

חובה.

reason String

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

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

דוגמה

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

RejectionType

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

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

סוגי תשלומים

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

ActionProvidedPaymentOptions

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

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

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

חובה.

displayName String

חובה.

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

לדוגמה: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

דוגמה

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

AllowedAuthMethods

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

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

AllowedCardNetworks

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

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

BillingAddressParameters

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

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

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

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

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

דוגמה 1

{
  "format": "MIN"
}

דוגמה 2

{
  "format": "FULL"
}

CardParameters

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

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

נכס סוג תיאור
allowedAuthMethods List<Const>

חובה.

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

אפשר לכלול עד פריט אחד.

allowedCardNetworks רשימה<AllowedCardNetworks>

חובה.

לפחות אחת מרשתות הכרטיסים שנתמכות על ידי Google Pay API.

אפשר לכלול עד פריט אחד.

billingAddressRequired בוליאני

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

billingAddressParameters BillingAddressParameters

השדות הצפויים שמוחזרים אם billingAddressAddress מוגדר כ-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

חובה.

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

billingAddress PostalAddress

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

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

דוגמה

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

GoogleProvidedPaymentOptions

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

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

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

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

supportedCardNetworks רשימה<SupportedCardNetworks>

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

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

prepaidCardDisallowed בוליאני

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

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

billingAddressRequired בוליאני

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

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

tokenizationParameters TokenizationParameters

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

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

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

MerchantInfo

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

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

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

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

merchantName String

חובה.

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

OnFulfillmentPaymentData

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

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

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

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

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

דוגמה

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

פרמטרים

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

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

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

חובה.

לדוגמה: braintree

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

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

דוגמה 1

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

דוגמה 2

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

PaymentDataRequest

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

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

נכס סוג תיאור
apiVersion מגבלה

חובה.

גרסת API ראשית.

ערך: 2

apiVersionMinor מגבלה

חובה.

גרסת ה-API המשנית.

ערך: 0

merchantInfo MerchantInfo

חובה.

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

allowedPaymentMethods רשימה<PaymentMethod>

חובה.

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

transactionInfo TransactionInfo

חובה.

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

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

דוגמה

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

PaymentInfo

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

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

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

חובה.

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

paymentType PaymentType

חובה.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

דוגמה 1

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

דוגמה 2

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

PaymentMethod

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

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

נכס סוג תיאור
type מגבלה

חובה.

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

ערך: CARD

parameters CardParameters

חובה.

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

tokenizationSpecification TokenizationSpecification

חובה.

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

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

דוגמה

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

PaymentOptions

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

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

בלעדי הדדית עם actionProvidedOptions. הכרטיס הזה ישמש לתשלום באינטרנט באמצעות gPay.

actionProvidedOptions קבוצה 2 ActionProvidedPaymentOptions

בלעדי הדדית עם googleProvidedOptions. אפשר להשתמש בשדה הזה עבור "מזומן בעת המסירה" או "תשלום בעת מילוי ההזמנה".

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

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

PaymentOptionsEnums

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

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

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

  • PAYMENT_CARD: עבור GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: עבור ActionProvidedPaymentOptions.

SupportedCardNetworks

הגדרת סוגים שקשורים אל GoogleProvidedPaymentOptions.

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

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

TokenizationParameters

מוגדרים סוגים שקשורים ל-GoogleProvidedPaymentOptions.

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

נכס סוג תיאור
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

חובה.

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

parameters Parameters

במקום זאת, אפשר להשתמש ב-facilitationSpecification.

TokenizationSpecification

אובייקט זה מאפשר להגדיר חשבון לקבלת פרטי תשלום לחיוב.

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

נכס סוג תיאור
type מגבלה

חובה.

parameters Parameters

חובה.

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

דוגמה 1

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

דוגמה 2

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

TransactionInfo

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

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

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

חובה.

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

transactionId String

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

totalPriceStatus מגבלה

חובה.

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

ערך: ESTIMATED

totalPrice String

חובה.

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

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

דוגמה

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