סכימה של פעולות מימוש

הדף הזה מתאר את המטען הייעודי (payload) של שירות האינטרנט לאספקת הזמנות (Order with Google API) בעבודה עם Order with Google Built-In Action API. כדי לקבל את המידע הזה לקריאה במחשב, אפשר להוריד את סכימת ה-JSON.

סוגי בסיס

עגלת קניות

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

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

מאפיין (property) סוג תיאור
@type ניגודיות

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

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

id מחרוזת

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

merchant Merchant

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

lineItems List<LineItem>

חובה.

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

אין לכלול יותר מפריט אחד.

promotions List<Promotion>

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

notes מחרוזת

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

extension FoodCartExtension

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

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

דוגמה 1

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

דוגמה 2

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

יצירת קשר

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

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

מאפיין (property) סוג תיאור
displayName מחרוזת

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

לדוגמה: Lovefood Ordering

email מחרוזת

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

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

firstName מחרוזת

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

לדוגמה: Lovefood

lastName מחרוזת

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

לדוגמה: Ordering

phoneNumber מחרוזת

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

לדוגמה: +16501234567

emailVerified ערך בוליאני

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

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

דוגמה

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

הודעת Push מותאמת אישית

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

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

מאפיין (property) סוג תיאור
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:

מאפיין (property) סוג תיאור
deliveryTimeIso8601 מחרוזת

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

לדוגמה: PT90M

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

דוגמה

{
  "deliveryTimeIso8601": "PT90M"
}

כתב ויתור

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

מאפיין (property) סוג תיאור
predefinedMessage PredefinedMessage

חובה.

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

feeAmount Money

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

feeAmountRange FeeAmountRange

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

feePercent מספר

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

feePercentRange FeePercentRange

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

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

טווח עמלה

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

מאפיין (property) סוג תיאור
minFeeAmount Money

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

maxFeeAmount Money

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

טווח עמלה

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

מאפיין (property) סוג תיאור
minFeePercent מספר

סף החיוב התחתון באחוזים של עמלה.

maxFeePercent מספר

סף עליון לעמלה באחוזים.

תוסף מזון

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

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

מאפיין (property) סוג תיאור
@type ניגודיות

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

ערך: 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. ניתן לשלוח שגיאות בקובץ CheckoutResponse.

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

מאפיין (property) סוג תיאור
@type ניגודיות

חובה.

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

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

foodOrderErrors List<FoodOrderError>

חובה.

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

אין לכלול יותר מפריט אחד.

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".

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

paymentOptions PaymentOptions

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

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

additionalPaymentOptions List<PaymentOptions>

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

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

דוגמה

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

תוסף מזון

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

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

מאפיין (property) סוג תיאור
@type ניגודיות

חובה.

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

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

options List<FoodItemOption>

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

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

דוגמה

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

FoodItemOption

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

מאפיין (property) סוג תיאור
id מחרוזת

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

לדוגמה: 39231093

offerId מחרוזת

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

לדוגמה: 912835081

name מחרוזת

שם האפשרות.

לדוגמה: Honey Mustard

price Money
note מחרוזת

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

quantity מספר

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

לדוגמה: 3

subOptions List<FoodItemOption>

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

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

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

דוגמה 1

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

דוגמה 2

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

שגיאת הזמנת אוכל

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

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

מאפיין (property) סוג תיאור
error Error

חובה.

id מחרוזת

חובה בתאריך error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

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

description מחרוזת

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

updatedPrice Money

חובה בתאריך error = "PRICE_CHANGED".

מחיר חדש של פריט שגרם לשגיאה. צריך לעשות זאת רק אם השגיאה היא "PRICE_changed".

availableQuantity Integer

חובה בתאריך error = "INVALID", or "NOT_FOUND".

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

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

דוגמה 1

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

דוגמה 2

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

תוסף הזמנת אוכל

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

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

מאפיין (property) סוג תיאור
@type ניגודיות

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

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

availableFulfillmentOptions List<FulfillmentOption>

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

optinForRemarketing ערך בוליאני

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

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

דוגמה 1

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

דוגמה 2

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

אפשרות בחירה

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

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

מאפיין (property) סוג תיאור
offerId מחרוזת

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

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
  }
}

מידע על FulfillmentOption

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

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

מאפיין (property) סוג תיאור
רק אחת מהקבוצות של הנכסים נדרשת.
delivery קבוצה 1 DeliveryInfo

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

pickup קבוצה 2 PickupInfo

אם מופיעה הזמנה, המערכת מציגה הזמנה לאיסוף.

תמונה

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

מאפיין (property) סוג תיאור
sourceUrl מחרוזת

חובה.

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

פריט

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

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

מאפיין (property) סוג תיאור
id מחרוזת

חובה בתאריך type = "REGULAR".

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

name מחרוזת

חובה.

שם הפריט. זוהי מחרוזת שניתנת לצפייה על ידי המשתמש. הערך צריך להיות רישיות במשפט, במידת האפשר (למשל, "עמלת אספקה", "Service Service", "Tax"). השדה הזה קוצר ל-100 תווים עבור המשתמשים.

type LineItemType

חובה.

quantity Integer

חובה בתאריך type = "REGULAR".

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

description מחרוזת

תיאור של הפריט.

price Price

חובה.

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

subLines List<SublineNote>

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

אין לכלול יותר מפריט אחד.

offerId מחרוזת

חובה בתאריך type = "REGULAR".

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

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

מיקום

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

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

מאפיין (property) סוג תיאור
coordinates Coordinates
formattedAddress מחרוזת

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

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

postalAddress PostalAddress
zipCode מחרוזת

לדוגמה: 90210

city מחרוזת

שם העיר.

לדוגמה: Los Angeles

notes מחרוזת

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

מאפיין (property) סוג תיאור
id מחרוזת

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

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

name מחרוזת

חובה.

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

לדוגמה: Falafel Bite

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

דוגמה

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

כסף

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

מאפיין (property) סוג תיאור
currencyCode מחרוזת

חובה.

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

לדוגמה: USD

units מחרוזת

כל היחידות של הסכום. לדוגמה, אם currencyCode הוא "USD", ואז "1" היחידה היא דולר אחד של ארה"ב.

לדוגמה: 36

nanos Integer

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

לדוגמה: 730000000

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

דוגמה 1

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

דוגמה 2

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

הזמנה

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

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

מאפיין (property) סוג תיאור
finalOrder ProposedOrder

חובה.

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

googleOrderId מחרוזת

חובה.

מזהה ההזמנה שהוקצה על ידי 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 שכלולים ב-AppResponse.

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

מאפיין (property) סוג תיאור
actionOrderId מחרוזת

חובה.

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

orderState OrderState

חובה.

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

lineItemUpdates Maps<מחרוזת, LineItemUpdate>
updateTime חותמת זמן בתקן ISO

חובה.

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

orderManagementActions List<OrderManagementAction>

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

אין לכלול יותר מ-פריט אחד ולא יותר מ-6 פריטים.

rejectionInfo RejectionInfo

חובה בתאריך orderState.state = "REJECTED".

cancellationInfo CancellationInfo

חובה בתאריך orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

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

fulfillmentInfo FulfillmentInfo

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

receipt Receipt

חובה בתאריך orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

בקבלה יש לציין את מזהה ההזמנה הגלוי למשתמש.

totalPrice Price

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

infoExtension FoodOrderUpdateExtension

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

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

דוגמה

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

פרטי האיסוף

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

מאפיין (property) סוג תיאור
pickupTimeIso8601 מחרוזת

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

לדוגמה: PT90M

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

דוגמה

{
  "pickupTimeIso8601": "PT90M"
}

כתובת למשלוח דואר

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

מאפיין (property) סוג תיאור
regionCode מחרוזת

חובה.

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

לדוגמה: US

postalCode מחרוזת

המיקוד.

לדוגמה: 94043

administrativeArea מחרוזת

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

לדוגמה: CA

locality מחרוזת

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

לדוגמה: Mountain View

addressLines List<String>

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

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

recipients List<String>

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

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

דוגמה

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

מחיר

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

מאפיין (property) סוג תיאור
type Enum [ "ESTIMATE", "ACTUAL" ]

חובה.

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

amount Money

חובה.

קידום מכירות

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

מאפיין (property) סוג תיאור
coupon מחרוזת

חובה.

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

הצעה להזמנה

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

מאפיין (property) סוג תיאור
id מחרוזת

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

cart Cart

חובה.

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

otherItems List<LineItem>

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

אין לכלול יותר מ-10 פריטים.

image Image

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

totalPrice Price

חובה.

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

extension FoodOrderExtension

חובה.

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

disclaimers List<Disclaimer>

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

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

דוגמה

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

שורת משנה

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

מאפיין (property) סוג תיאור
note מחרוזת

חובה.

חותמת זמן

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

ערך עסקה

מכיל את Order.

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

מאפיין (property) סוג תיאור
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:

מאפיין (property) סוג תיאור
isInSandbox ערך בוליאני

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

conversation Conversation
inputs List<Input>

חובה.

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

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

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

דוגמה 1

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

דוגמה 2

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

CheckoutRequestMessage

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

שליחת OrderRequestMessage

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

שיחה

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

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

מאפיין (property) סוג תיאור
conversationId מחרוזת

חובה.

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

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

דוגמה

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

הזנת קלט

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

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

מאפיין (property) סוג תיאור
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

חובה.

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

arguments List<Argument>

חובה.

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

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

ארגומנט

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

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

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

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

transactionDecisionValue קבוצה 2 TransactionDecisionValue

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

מילוי הזמנות

תשובה לאפליקציה

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

מאפיין (property) סוג תיאור
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
                }
              }
            }
          }
        }
      ]
    }
  }
}

הודעת Checkout

CheckoutResponseMessage הוא AppResponse עם checkoutResponse או error ב-StructuredResponse.

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

SubmitOrderResponseMessage הוא AppResponse עם orderUpdate בStructuredResponse.

תגובה אחרונה

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

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

מאפיין (property) סוג תיאור
richResponse RichResponse

חובה.

מכיל את התגובה שלך ל-checkoutRequestMessage או SendOrderRequestMessage.

דף התשלום

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

מאפיין (property) סוג תיאור
proposedOrder ProposedOrder

חובה.

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

paymentOptions PaymentOptions

חובה.

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

additionalPaymentOptions List<PaymentOptions>

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

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

דוגמה

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

פריט

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

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

מאפיין (property) סוג תיאור
structuredResponse StructuredResponse

חובה.

Rich Snippets

מכיל את התשובה שלך לתשלום בקופה.

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

מאפיין (property) סוג תיאור
items List<Item>

חובה.

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

תגובה מובנית

ב-checkoutResponseMessage, זו יכולה להיות אחת מהאפשרויות הבאות: CheckoutResponse מציין תשלום מוצלח. OR FoodErrorExtension: מציין כשל בשלב התשלום. התגובה עשויה לכלול הצעה מוצעת ומתוקנת של Funding Choices או הודעת שגיאה ללא אפשרויות תשלום. רק ב-SubmitOrderResponseMessage.

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

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

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

error קבוצה 2 FoodErrorExtension

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

orderUpdate קבוצה 3 OrderUpdate

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

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

AsyncOrderUpdateRequestMessage

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

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

מאפיין (property) סוג תיאור
isInSandbox ערך בוליאני

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

customPushMessage CustomPushMessage

חובה.

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

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

דוגמה

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

AsyncOrderUpdateResponseMessage

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

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

לחצן

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

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

מאפיין (property) סוג תיאור
title מחרוזת

חובה.

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

לדוגמה: Contact us

openUrlAction OpenUrlAction

חובה.

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

דוגמה

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

מידע על ביטול

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

מאפיין (property) סוג תיאור
reason מחרוזת

חובה.

סיבת התצוגה הניתנת לדחייה כאשר OrderState.state היא "cancelLED".

לדוגמה: Restaurant closed

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

דוגמה

{
  "reason": "Insufficient inventory"
}

תוסף OrderOrderUpdate

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

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

טווח זמן או חותמת זמן בתקן ISO 8601 מציינים את המרווח מ-updateTime OrderUpdate (בעיקרית, "Now") אל updateTime + duration. אין להשתמש בפורמט זה, אלא אם כן &היא ציפייה בפועל.

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

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

מאפיין (property) סוג תיאור
@type ניגודיות

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

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

estimatedFulfillmentTimeIso8601 מחרוזת

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

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

foodOrderErrors List<FoodOrderError>

תיאור השגיאות שאירעו לאחר ההזמנה. מומלץ שגיאה אחת לכל עגלת קניות או לכל פריט. משתמשים ב-foodOrderUpdateExtension.fooddOrderErrors עבור כל השגיאות שלא נכללו ב-PushionInfo.

אין לכלול יותר מפריט אחד.

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

מאפיין (property) סוג תיאור
רק אחת מהקבוצות של הנכסים נדרשת.
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"
}

מידע על Intransit

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

מאפיין (property) סוג תיאור
updatedTime חותמת זמן בתקן ISO

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

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

דוגמה

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

LineItemUpdate

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

מאפיין (property) סוג תיאור
orderState OrderState
price Price
reason מחרוזת

סיבת השינוי. חובה לשינויי מחיר.

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

דוגמה

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

OpenUrlAction

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

מאפיין (property) סוג תיאור
url מחרוזת

חובה.

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

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

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

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

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

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

מאפיין (property) סוג תיאור
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"
    }
  }
}

סוג ניהול הזמנה

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

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

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

מצב הזמנה

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

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

מאפיין (property) סוג תיאור
state OrderStateEnum

חובה.

label מחרוזת

חובה.

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

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

מאפיין (property) סוג תיאור
userVisibleOrderId מחרוזת

חובה.

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

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

דוגמה

{
  "userVisibleOrderId": "userVisibleId1234"
}

מידע על דחייה

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

מאפיין (property) סוג תיאור
type RejectionType

חובה.

reason מחרוזת

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

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

דוגמה

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

סוג דחייה

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

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

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

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

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

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

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

מאפיין (property) סוג תיאור
paymentType PaymentType

חובה.

displayName מחרוזת

חובה.

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

לדוגמה: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

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

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

דוגמה

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

שיטות מותרות

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

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

רשתות מורשות

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

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

פרמטרים של כרטיס

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

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

מאפיין (property) סוג תיאור
allowedAuthMethods List<Const>

חובה.

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

אין לכלול יותר מפריט אחד.

allowedCardNetworks List<AllowedCardNetworks>

חובה.

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

אין לכלול יותר מפריט אחד.

billingAddressRequired ערך בוליאני

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

cvcRequired ערך בוליאני

הערך של הפרמטר הזה צריך להיות True אם משתמשים ב-TimeofMoney, מוגדר כ-false בכל שאר מעבדי התשלומים.

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

דוגמה

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

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

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

מאפיין (property) סוג תיאור
instrumentToken מחרוזת

חובה.

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

billingAddress PostalAddress

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

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

דוגמה

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

אפשרויות תשלום ש-Google מספקת

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

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

מאפיין (property) סוג תיאור
facilitationSpecification מחרוזת

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

supportedCardNetworks List<SupportedCardNetworks>

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

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

prepaidCardDisallowed ערך בוליאני

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

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

billingAddressRequired ערך בוליאני

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

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

tokenizationParameters TokenizationParameters

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

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

דוגמה 1

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

דוגמה 2

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

דוגמה 3

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

פרטי המוכר

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

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

מאפיין (property) סוג תיאור
merchantId מחרוזת

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

merchantName מחרוזת

חובה.

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

נתוני תשלום של OnFulfillment

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

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

מאפיין (property) סוג תיאור
supportedPaymentOptions List<PaymentOptionsEnums>

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

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

דוגמה

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

פרמטרים

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

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

מאפיין (property) סוג תיאור
gateway מחרוזת

חובה.

לדוגמה: braintree

gatewayMerchantId מחרוזת
[additionalKey: 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"
}

בקשת נתוני תשלום

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

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

מאפיין (property) סוג תיאור
apiVersion ניגודיות

חובה.

גרסת API ראשית.

ערך: 2

apiVersionMinor ניגודיות

חובה.

גרסת ממשק API מצומצמת.

ערך: 0

merchantInfo MerchantInfo

חובה.

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

allowedPaymentMethods List<PaymentMethod>

חובה.

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

transactionInfo TransactionInfo

חובה.

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

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

דוגמה

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantId": "10391231",
    "merchantName": "Burrito Town"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": [
          "PAN_ONLY"
        ],
        "allowedCardNetworks": [
          "VISA",
          "AMEX",
          "MASTERCARD"
        ],
        "billingAddressRequired": true,
        "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:

מאפיין (property) סוג תיאור
displayName מחרוזת

חובה.

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

paymentType PaymentType

חובה.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

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

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

דוגמה 1

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

דוגמה 2

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

אמצעי תשלום

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

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

מאפיין (property) סוג תיאור
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:

מאפיין (property) סוג תיאור
רק אחת מהקבוצות של הנכסים נדרשת.
googleProvidedOptions קבוצה 1 GoogleProvidedPaymentOptions

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

actionProvidedOptions קבוצה 2 ActionProvidedPaymentOptions

בלעדי ל-googleProvidedOption. אפשר להשתמש במאפיין הזה עבור "Cash on Delivery" או "pay on fulfillment".

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

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

אפשרויות תשלום

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

  • Cash
  • Card
  • UPI
  • Paytm

סוג תשלום

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

  • PAYMENT_CARD: עבור GoogleProvidedPaymentOption.
  • ON_FULFILLMENT: ל-ActionProvidedPaymentOption.

רשתות נתמכות

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

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

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

פרמטרים של אסימון

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

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

מאפיין (property) סוג תיאור
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

חובה.

יש להשתמש במקום זאת ב-FacilitationSpecification. ניתן להשתמש בסוג האסימונים.

parameters Parameters

יש להשתמש במקום זאת ב-FacilitationSpecification.

מפרט האסימון

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

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

מאפיין (property) סוג תיאור
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:

מאפיין (property) סוג תיאור
currencyCode מחרוזת

חובה.

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

transactionId מחרוזת

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

totalPriceStatus ניגודיות

חובה.

יש להשתמש ב-"estimated" כברירת המחדל. המחיר הכולל עשוי להשתנות בהתאם לפרטי התגובה, כמו מס מכירה שנאסף על סמך כתובת לחיוב.

ערך: ESTIMATED

totalPrice מחרוזת

חובה.

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

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

דוגמה

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