مخطط إجراءات التنفيذ

تصف هذه الصفحة حمولة خدمة الويب للتنفيذ (Ordering End-to-End API) عند التعامل مع واجهة برمجة التطبيقات Ordering-to-End Built-in Action API. للحصول على نسخة من هذه المعلومات يمكن للجهاز قراءتها، يمكنك تنزيل مخطّط JSON.

أنواع القواعد

سلة التسوق

تحتوي على تفاصيل الطلب، وكذلك ما إذا كان الطلب مخصصًا للاستلام أو التوصيل. تحتوي عربة التسوق أيضًا على تفاصيل التسليم والمزايا وعنوان التسليم. يتم تحديد العنصر Cart في Checkout AppRequest. فعليك تضمين نسخة من سلة التسوق في Checkout AppResponse.

يعرض الجدول التالي خصائص النوع Cart:

الموقع النوع الوصف
@type الثابت

تمثّل هذه السمة نوع هذا الكائن. احذف هذا الحقل إذا كان كائن سلة التسوق الرئيسي جزءًا من ProposedOrder.

القيمة: type.googleapis.com/google.actions.v2.orders.Cart

id String

معرّف اختياري لسلة التسوق

merchant Merchant

التاجر تابع لسلة التسوّق هذه.

lineItems القائمة<LineItem>

مطلوبة.

تمثّل هذه السمة قائمة السلع أو الخدمات التي يطلبها المستخدم.

يجب ألا يقل عدد السلع عن سلعة واحدة.

promotions القائمة<Promotion>

العرض الترويجي الذي يتم تطبيقه في سلة التسوّق هذه يتوفّر عرض ترويجي واحد فقط حاليًا.

notes String

ملاحظات حول تعليمات الطلب أو التسليم

extension FoodCartExtension

تحدِّد تفاصيل حول المستخدم، مثل الإعدادات المفضّلة لطريقة التنفيذ.

يعرض المثال التالي عنصر Cart:

مثال 1

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

مثال 2

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

جهة اتصال

تحدّد هذه السمة تفاصيل حول الشخص الذي يتلقّى الطلب. يتوفّر هذا الإصدار فقط في AppResponse.

يعرض الجدول التالي خصائص النوع Contact:

الموقع النوع الوصف
displayName String

اسم مستلِم الطلب كما تريد عرضه استخدِم هذا الحقل في حال عدم تحديد firstName وlastName.

مثال: Lovefood Ordering

email String

عنوان البريد الإلكتروني للشخص الذي يتلقّى الطلب

مثال: ilovefood@example.com

firstName String

الاسم الأوّل للشخص الذي يتلقّى الطلب

مثال: Lovefood

lastName String

اسم العائلة للشخص الذي يتلقّى الطلب

مثال: Ordering

phoneNumber String

رقم هاتف للشخص الذي يتلقّى الطلب، بما في ذلك رمز البلد

مثال: +16501234567

emailVerified منطقية

تشير هذه السمة إلى ما إذا كان الشخص الذي يتلقّى الطلب قد سجّل الدخول إلى حسابه على Google.

يعرض المثال التالي عنصر Contact:

مثال

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

CustomPushMessage

يحتوي على OrderUpdate للطلب.

يعرض الجدول التالي خصائص النوع CustomPushMessage:

الموقع النوع الوصف
orderUpdate OrderUpdate

مطلوبة.

تم تعديل معلومات الطلب.

يعرض المثال التالي عنصر CustomPushMessage:

مثال

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

DeliveryInfo

يعرض الجدول التالي خصائص النوع DeliveryInfo:

الموقع النوع الوصف
deliveryTimeIso8601 String

الوقت المقدّر للتسليم بتنسيق الطابع الزمني ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" أو تنسيق المدة: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". على سبيل المثال، تمثل PT90M المدة 90 دقيقة. وتشير القيمة التلقائية "PT0M" إلى أنّ وقت التسليم المفضّل هو في أقرب وقت ممكن. المرجع: https://en.wikipedia.org/wiki/ISO_8601#builtd_date_and_time_representations. استخدِم هذا الزر لتعديل الوقت المُقدَّر للتسليم أثناء الردّ على صفحة الدفع.

مثال: PT90M

يعرض المثال التالي عنصر DeliveryInfo:

مثال

{
  "deliveryTimeIso8601": "PT90M"
}

إخلاء المسؤولية

يعرض الجدول التالي خصائص النوع Disclaimer:

الموقع النوع الوصف
predefinedMessage PredefinedMessage

مطلوبة.

لعرض رسائل إخلاء مسؤولية محدّدة مسبقًا أثناء الدفع

feeAmount Money

سيفرض الشريك رسومًا على التاجر بمبلغ N مقابل هذا الطلب.

feeAmountRange FeeAmountRange

سيفرض الشريك رسومًا على المطعم (من N إلى M) لكل طلب.

feePercent Number

سيحصّل الشريك رسومًا بقيمة N% من التاجر مقابل هذا الطلب.

feePercentRange FeePercentRange

سيحصّل الشريك من التاجر رسومًا تتراوح بين N% وM% لكل طلب.

يعرض المثال التالي عنصر Disclaimer:

مثال 1

{
  "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER"
}

مثال 2

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE"
}

مثال 3

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercent": 25
}

مثال 4

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feePercentRange": {
    "minFeePercent": 20,
    "maxFeePercent": 30
  }
}

المثال الخامس

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmount": {
    "currencyCode": "AUD",
    "units": 2,
    "nanos": 500000000
  }
}

مثال 6

{
  "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE",
  "feeAmountRange": {
    "minFeeAmount": {
      "currencyCode": "AUD",
      "units": 2,
      "nanos": 500000000
    },
    "maxFeeAmount": {
      "currencyCode": "AUD",
      "units": 10,
      "nanos": 0
    }
  }
}

خطأ

يحتوي النوع Error على القيم المحتمَلة التالية:

  • CLOSED: المطعم مغلق للعمل في وقت الطلب
  • NO_CAPACITY: لا تتوفّر سعة خدمة (على سبيل المثال، انقطاع مؤقت بسبب أوقات الذروة).
  • NO_COURIER_AVAILABLE: تعذّرت معالجة الطلب بسبب عدد موظفي التسليم المحدود.
  • REQUIREMENTS_NOT_MET: لم يتم استيفاء القيود المفروضة على قبول الطلب (على سبيل المثال، الحد الأدنى لحجم سلة التسوّق).
  • UNAVAILABLE_SLOT: لا يمكن توصيل الطلب في الطلب المسبق المحدّد في DeliveryInfo أو PickupInfo.
  • OUT_OF_SERVICE_AREA: يتعذّر تسليم الطلب إلى عنوان المستخدم.
  • PROMO_EXPIRED: تعذّر تطبيق العرض الترويجي لأنّ صلاحيته.
  • PROMO_NOT_APPLICABLE: رمز خطأ عام لرصد جميع حالات تعذُّر تطبيق الرمز الترويجي، إذا لم يكن أي من أخطاء الرمز الترويجي الأخرى مناسبة
  • PROMO_NOT_RECOGNIZED: لم يتم التعرف على رمز القسيمة.
  • PROMO_ORDER_INELIGIBLE: الطلب الحالي ليس مؤهلاً للحصول على هذه القسيمة.
  • PROMO_USER_INELIGIBLE: المستخدم الحالي ليس مؤهلاً للحصول على هذه القسيمة.
  • AVAILABILITY_CHANGED: السلعة لم تعُد متوفّرة أو لا توجد عناصر كافية لتلبية الطلب
  • INCORRECT_PRICE: أخطاء في السعر أو إجمالي الرسوم
  • INVALID: يحتوي العنصر LineItem أو FulfillmentOption أو العرض الترويجي على بيانات غير صالحة.
  • NOT_FOUND: تعذّر العثور على عنصر LineItem أو FulfillmentOption أو عرض ترويجي.
  • PRICE_CHANGED: تم تغيير سعر سلعة معيّنة

FeeAmountRange

يعرض الجدول التالي خصائص النوع FeeAmountRange:

الموقع النوع الوصف
minFeeAmount Money

الحد الأدنى لمبلغ الرسوم المطلوب تحصيله..

maxFeeAmount Money

الحد الأقصى لمبلغ الرسوم الذي يتم تحصيله..

FeePercentRange

يعرض الجدول التالي خصائص النوع FeePercentRange:

الموقع النوع الوصف
minFeePercent Number

يتم تحصيل الحد الأدنى من نسبة الرسوم.

maxFeePercent Number

يتم تحصيل الحد الأقصى لنسبة الرسوم.

FoodCartExtension

تحتوي على تفاصيل حول المستخدم، مثل الإعدادات المفضّلة لطريقة التنفيذ.

يعرض الجدول التالي خصائص النوع FoodCartExtension:

الموقع النوع الوصف
@type الثابت

نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodCartExtension".

القيمة: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

معلومات الاتصال بالشخص الذي يستلم الطلب وتتضمن التفاصيل اسم الشخص ورقم هاتفه وعنوان بريده الإلكتروني.

fulfillmentPreference FulfillmentOption

مطلوبة.

تفضيل المستخدم لتنفيذ الطلب

location Location

في CheckoutRequestMessage، يحدد هذا الحقل عنوان التسليم، وهو مطلوب إذا كان الطلب للتسليم. بالنسبة إلى الطلبات الموجّهة إلى الطعام السفري أو الاستلام، لا يتم تضمين هذا الحقل في الرسالة.

يعرض المثال التالي عنصر FoodCartExtension:

مثال 1

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

مثال 2

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

FoodErrorExtension

يحدد خطأً واحدًا أو أكثر حدث أثناء معالجة طلب. يوضّح الجدول التالي حقول النوع FoodErrorExtension. يمكن إرسال الأخطاء في CheckoutResponse.

يعرض الجدول التالي خصائص النوع FoodErrorExtension:

الموقع النوع الوصف
@type الثابت

مطلوبة.

نوع هذه الإضافة

القيمة: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors القائمة<FoodOrderError>

مطلوبة.

مصفوفة من كائنات FoodOrderError التي تصف الأخطاء التي حدثت. يُنصح بحدوث خطأ واحد في كل سلة تسوّق أو لكل سلعة.

يجب ألا يقل عدد السلع عن سلعة واحدة.

correctedProposedOrder ProposedOrder

تكون هذه السمة مطلوبة عند foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

ProposedOrder جديد مع التصحيحات. اعرض هذا الكائن إذا كانت هناك أخطاء قابلة للاسترداد في ProposedOrder الأصلي. على سبيل المثال، يُعدّ التغيير في سعر عنصر واحد أو أكثر في سلة التسوّق خطأً يمكن استرداده. يتم نقل الأخطاء القابلة للاسترداد التي تتضمّن ProposedOrder صالح إلى مرحلة التأكيد، بدلاً من أن تطلب من المستخدم مراجعة سلة التسوّق.

paymentOptions PaymentOptions

تكون هذه السمة مطلوبة عند foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED".

تم تحديد خيارات الدفع التلقائية للمستخدم.

additionalPaymentOptions القائمة<PaymentOptions>

خيارات الدفع البديلة المتوفرة للمستخدم.

يعرض المثال التالي عنصر FoodErrorExtension:

مثال

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

FoodItemExtension

تحدد الإضافات لأصناف الطعام.

يعرض الجدول التالي خصائص النوع FoodItemExtension:

الموقع النوع الوصف
@type الثابت

مطلوبة.

نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodItemExtension".

القيمة: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options القائمة<FoodItemOption>

يمكن أن يكون الخيار عنصرًا إضافيًا أو مجموعة إضافات تحتوي على مجموعة من الإضافات.

يعرض المثال التالي عنصر FoodItemExtension:

مثال

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

FoodItemOption

يعرض الجدول التالي خصائص النوع FoodItemOption:

الموقع النوع الوصف
id String

المعرّف الفريد الذي تعيّنه Google. عند إرسال FoodOrderError أو AsyncOrderUpdateRequest، استخدم هذا الحقل للتمييز في الحالات التي تحتوي فيها سلة التسوق على أكثر من عنصر بنفس قيمة OfferId.

مثال: 39231093

offerId String

معرّف العرض للسلعة.

مثال: 912835081

name String

اسم الخيار.

مثال: Honey Mustard

price Money
note String

ملاحظة ذات صلة بالخيار

quantity Number

بالنسبة إلى خيارات العناصر، عدد العناصر.

مثال: 3

subOptions القائمة<FoodItemOption>

خيارات فرعية للخيار، إن توفّرت.

مثال: [ { "id": "71283712", "offerId": "51209121", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "units": "3", "nanos": 780000000 }, "quantity": 2 }, { "id": "102941024", "offerId": "12084102", "name": "Ketchup", "price": { "currencyCode": "USD", "units": "2", "nanos": 980000000 }, "quantity": 6 } ]

يعرض المثال التالي عنصر FoodItemOption:

مثال 1

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

مثال 2

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

FoodOrderError

تحتوي على تفاصيل حول الأخطاء في CheckoutResponse.

يعرض الجدول التالي خصائص النوع FoodOrderError:

الموقع النوع الوصف
error Error

مطلوبة.

id String

تكون هذه السمة مطلوبة عند error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND".

يجب ملء هذا الحقل للأخطاء على مستوى السلعة. وهو LineItem.id الذي تعينه Google لعناصر القائمة أو FoodItemOption.id للإضافات.

description String

وصف الخطأ. هذا الوصف مخصص للتسجيل الداخلي ولا يظهر للمستخدمين.

updatedPrice Money

تكون هذه السمة مطلوبة عند error = "PRICE_CHANGED".

السعر الجديد للسلعة التي تسببت في حدوث الخطأ يكون هذا مطلوبًا فقط عندما يكون الخطأ "PRICE_CHANGED".

availableQuantity عدد صحيح

تكون هذه السمة مطلوبة عند error = "INVALID", or "NOT_FOUND".

الكمية الجديدة المتاحة من السلعة التي تسبّبت في حدوث الخطأ يكون هذا الإجراء مطلوبًا فقط عندما يكون الخطأ "INVALID" أو "NOT_FOUND". يجب أن تكون القيمة صفرًا للحقل "INVALID" و "NOT_FOUND".

يعرض المثال التالي عنصر FoodOrderError:

مثال 1

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

مثال 2

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

FoodOrderExtension

تحتوي على معلومات توصيل الطلب حول الطلب.

يعرض الجدول التالي خصائص النوع FoodOrderExtension:

الموقع النوع الوصف
@type الثابت

نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension".

القيمة: type.googleapis.com/google.actions.v2.orders.FoodOrderExtension

availableFulfillmentOptions القائمة<FulfillmentOption>

يمثّل الخيارات المتاحة لتوصيل الطلب.

optinForRemarketing منطقية

طلب المستخدم الموافقة على قنوات التسويق. وفقًا للإعدادات التلقائية، لا يمكنك إرسال المحتوى التسويقي بدون موافقة المستخدم. وإذا كانت المعلمةoptinForتجديد النشاط التسويقي صحيحة، يمكنك اشتراك المستخدم. إذا كانت المعلمةoptinForتجديد النشاط التسويقي خاطئة أو غير موجودة، يجب عليك الاحتفاظ بحالة الاشتراك في نظامك كما هي. ولا يمكن للمستخدمين إيقاف هذه الميزة من خلال Google، فقط من خلال وظيفة إلغاء الاشتراك المتوفرة في قنواتك التسويقية. لا تتوفّر هذه العلامة إلا في SendOrderRequestMessage.

يعرض المثال التالي عنصر FoodOrderExtension:

مثال 1

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

مثال 2

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

FulfillmentOption

يمكنك استخدام الكائن FulfillmentOption بالطرق التالية:
  • في Checkout AppRequest و Submit AppRequest، Cart.extension.fulfillmentPreference: يتم تخزين الخيار الذي يفضّله المستخدم (توصيل أو استلام). يكون السعر دائمًا 0 عند إرسال طلب الدفع.
  • في Checkout AppResponse، السمة ProposedOrder.extension.availableFulfillmentOptions: تحدّد خيارًا واحدًا أو أكثر من خيارات التسليم (يتوفّر حاليًا خيار واحد فقط). يتم تحديد الخيار التلقائي على أنّه LineItem في ProposedOrder.otherItems. يجب أن تتطابق السمة offerId للسمة FulfillmentOption مع رقم تعريف LineItem المحدّد في السمة ProposedOrder.otherItems.

يعرض الجدول التالي خصائص النوع FulfillmentOption:

الموقع النوع الوصف
offerId String

معرّف فريد لخيار تنفيذ الطلب هذا، إن توفّر.

fulfillmentInfo FulfillmentOptionInfo

مطلوبة.

expiresAt الطابع الزمني لمعيار ISO

الوقت الذي تنتهي فيه صلاحية خيار تنفيذ الطلب هذا

price Money

تكلفة هذا الخيار.

يعرض المثال التالي عنصر FulfillmentOption:

مثال

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

FulfillmentOptionInfo

لتعريف المعلومات ذات الصلة بالسمة FulfillmentInfo.

يعرض الجدول التالي خصائص النوع FulfillmentOptionInfo:

الموقع النوع الوصف
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط.
delivery المجموعة 1 DeliveryInfo

في حال توفّر هذه السمة، تشير إلى طلب التسليم.

pickup المجموعة 2 PickupInfo

في حال توفّرها، تشير هذه السمة إلى طلب استلام الطلب.

صورة

يعرض الجدول التالي خصائص النوع Image:

الموقع النوع الوصف
sourceUrl String

مطلوبة.

عنوان URL للصورة يجب ألا يقل حجم الصورة عن 72x72 بكسل. للحصول على أفضل النتائج، استخدِم صورة لا يقل حجمها عن 216×216 بكسل. يجب أن يكون حجم الصورة أقل من 6 ميغابايت و64 ميغابكسل.

LineItem

تحدد محتوى سلة التسوّق (Cart.lineItems) أو الرسوم الإضافية لطلب (ProposedOrder.otherItems).

يعرض الجدول التالي خصائص النوع LineItem:

الموقع النوع الوصف
id String

تكون هذه السمة مطلوبة عند type = "REGULAR".

بالنسبة إلى عنصر LineItem في سلة التسوّق (ProposedOrder.cart.lineItems[0].id)، يكون هذا هو المعرّف الفريد الذي تنشئه Google عند إنشاء الطلب. بالنسبة إلى عنصر LineItem في ProposedOrder (ProposedOrder.otherItems[0].id)، الذي يُستخدم لإضافة سلع مثل رسوم التوصيل والضرائب، يحدّد مقدّم الخدمة قيمة المعرّف. على سبيل المثال، يوجد في عربة التسوق قطعتان من نفس العناصر لهما تعليمات تحضير مختلفة (مثل بيتزا متوسطة الحجم بمجموعات مختلفة من الإضافات). في هذه الحالة، يكون لكلّ من العنصرَين معرّف العرض الأساسي نفسه. عند إرسال طلب تعديل طلب للإشارة إلى رفض سلعة ما، استخدِم هذا المعرّف كعامل إزالة للغموض. بمعنى آخر، إذا تم رفض إحدى قطع البيتزا لأنها تفتقر إلى إضافات معيّنة، يساعد المعرّف Google في تحديد العنصر بالترتيب الذي تشير إليه. هذا الحقل مطلوب إلا في otherItems.

name String

مطلوبة.

تمثّل هذه السمة اسم العنصر. وتكون هذه السلسلة مرئية للمستخدم، ويجب أن تكون في شكل جملة متى أمكن ذلك (مثل "رسوم التسليم" أو "رسوم الخدمة" أو "الضريبة"). يتم اقتطاع هذا الحقل عند 100 حرف للمستخدمين.

type LineItemType

مطلوبة.

quantity عدد صحيح

تكون هذه السمة مطلوبة عند type = "REGULAR".

عدد السلع المضمّنة لا يسري ذلك على ProposedOrder.otherItems.

description String

وصف السلعة.

price Price

مطلوبة.

سعر السلعة أو السلع. تعكس هذه القيمة السعر الإجمالي لجميع السلع أو الخدمات لهذا العنصر (بمعنى آخر، أضف تكلفة أي إضافات واضربها في الكمية). على سبيل المثال، إذا كانت قيمة سلعة 10 دولار أمريكي (أو ما يعادلها بالعملة المحلية) تتضمّن 3 سلع، سيكون السعر هو 30 دولار أمريكي (أو ما يعادلها بالعملة المحلية). بالنسبة إلى بيتزا واحدة بسعر أساسي 5 دولارات وإضافة دولار واحد، سيكون السعر 6 دولارات. بالنسبة لقطعتين من البيتزا (الكمية = 2) بسعر أساسي 5 دولارات لكل منهما مع إضافة دولار واحد، سيكون السعر 12 دولارًا. يجب أن يكون لكل LineItem سعر، حتى إذا كان السعر "0". عندما يكون النوع DISCOUNT، حدد القيمة على أنها سالبة (على سبيل المثال، "-2").

subLines القائمة<SublineNote>

اختياري وصالح فقط إذا كان النوع هو "REGULAR". قد يتم إرسال ملاحظة خاصة بالسلعة من المستخدم في هذا الحقل في طلب الدفع وطلب إرسال الطلب. تأكّد من أنّ التاجر يتلقّى الملاحظة عند تقديمها. ستكون في الطلب بالتنسيق subLines[0].note، وهي القيمة الوحيدة المتوفرة في هذا الحقل عند وجودها في أحد الطلبات.

يجب ألا يزيد عدد العناصر على عنصر واحد.

offerId String

تكون هذه السمة مطلوبة عند type = "REGULAR".

معرّف العرض لـ MenuItem في السلعة. لا يسري ذلك على ProposedOrder.otherItems.

extension FoodItemExtension

تحدد الإضافات لأصناف الطعام.

يعرض المثال التالي عنصر LineItem:

مثال 1

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

مثال 2

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

LineItemType

يحتوي النوع LineItemType على القيم المحتمَلة التالية:

  • REGULAR: عنصر السلع يسري هذا العرض على Cart.lineItems.
  • TAX: عنصر الضريبة يسري هذا العرض على ProposedOrder.otherItems.
  • DISCOUNT: عنصر الخصم ويجب أن يكون السعر سالبًا. يسري هذا العرض على ProposedOrder.otherItems.
  • GRATUITY: عنصر مجاني تكون هذه السمة محجوزة بشكل عام لـ SendOrderRequestMessage لنصيحة من اختيار المستخدم. يسري هذا العرض على ProposedOrder.otherItems.
  • DELIVERY: عنصر التسليم يسري هذا العرض على ProposedOrder.otherItems.
  • SUBTOTAL: عنصر الإجمالي الفرعي يسري هذا العرض على ProposedOrder.otherItems.
  • FEE: عنصر إضافي لا تغطيه الأنواع الأخرى. يسري هذا العرض على ProposedOrder.otherItems.

الموقع الجغرافي

تحدّد عنوانًا لطلب الطعام. يُستخدم النوع Location في Cart للإشارة إلى وجهة طلب التسليم فقط. يتوفر الموقع النهائي أيضًا في TransactionDecisionValue إذا قدّم المستخدم الطلب. بالنسبة إلى الطلبات التي تحدد الاستلام، لا يتم تضمين الموقع على الإطلاق (ولا حتى موقعًا فارغًا).

يعرض الجدول التالي خصائص النوع Location:

الموقع النوع الوصف
coordinates Coordinates
formattedAddress String

عرض عنوان الموقع الجغرافي.

مثال: 1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States

postalAddress PostalAddress
zipCode String

مثال: 90210

city String

تمثّل هذه السمة اسم المدينة.

مثال: Los Angeles

notes String

ملاحظات حول الموقع الجغرافي، مثل رموز البوابة يجب ألا يزيد عدد الأحرف عن 500 حرف.

مثال: Gate code is #111

يعرض المثال التالي عنصر Location:

مثال

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

التاجر

يعرض الجدول التالي خصائص النوع Merchant:

الموقع النوع الوصف
id String

معرّف التاجر يتطابق عنوان URL مع Restaurant.@id في خلاصة المطعم، في حال تحديده.

مثال: https://www.exampleprovider.com/merchant/id1

name String

مطلوبة.

اسم التاجر الذي يظهر للمستخدم

مثال: Falafel Bite

يعرض المثال التالي عنصر Merchant:

مثال

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

مبالغ مالية

يعرض الجدول التالي خصائص النوع Money:

الموقع النوع الوصف
currencyCode String

مطلوبة.

تمثّل هذه السمة رمز عملة مكوَّنًا من 3 أحرف بتنسيق ISO 4217.

مثال: USD

units String

تمثّل هذه السمة الوحدات الكاملة للمبلغ. على سبيل المثال، إذا كان currencyCode هو "USD"، فالوحدة "1" تساوي دولارًا واحدًا (أو ما يعادله بالعملة المحلية).

مثال: 36

nanos عدد صحيح

يشير ذلك المصطلح إلى عدد وحدات النانو (10^-9) من المبلغ. يجب أن تتراوح القيمة بين -999,999,999 و+999,999,999، شاملة. يجب استخدام القواعد التالية: إذا كانت الوحدات موجبة، يجب أن تكون قيمة nanos موجبة أو صفرًا. إذا كانت الوحدات صفرًا، فقد تكون قيمة 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:

الموقع النوع الوصف
finalOrder ProposedOrder

مطلوبة.

الطلب المقترَح الذي تسبّب في الطلب.

googleOrderId String

مطلوبة.

مُعرّف الطلب الذي عيَّنته Google. ويجب أن يكون رقم التعريف هذا ثابتًا طوال دورة حياة الطلب بالكامل. لا يظهر هذا المعرّف للمستخدم النهائي.

orderDate الطابع الزمني لمعيار ISO

مطلوبة.

تاريخ ووقت إنشاء الطلب

paymentInfo PaymentInfo

مطلوبة.

معلومات الدفع المرتبطة بالدفع لهذا الطلب.

يعرض المثال التالي عنصر Order:

مثال

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

OrderUpdate

يوضّح الجدول التالي حقول نوع OrderUpdate التي تم تضمينها في AppResponse.

يعرض الجدول التالي خصائص النوع OrderUpdate:

الموقع النوع الوصف
actionOrderId String

مطلوبة.

المعرّف الفريد للطلب في نظام الدمج الذي يُستخدَم لتحديد الطلب الذي سيتم إرسال التحديث إليه. في حال عدم تقديم الإيصال.user_visible_order_id مرة واحدة على الأقل في OrderUpdate لطلب "CREATED"، سيكون هذا المعرّف هو المعرّف المرئي للمستخدم الذي تم إدخاله والمعروض في بطاقة الطلب من Google.

orderState OrderState

مطلوبة.

الحالة الجديدة للطلب.

lineItemUpdates Map<String, LineItemUpdate>
updateTime الطابع الزمني لمعيار ISO

مطلوبة.

الوقت الذي تم فيه تعديل الطلب

orderManagementActions القائمة<OrderManagementAction>

إجراءات ما بعد الطلب، مثل التواصل مع فريق الدعم وعرض تفاصيل الطلب

يجب ألا يقل عدد السلع عن سلعة واحدة، وألّا يزيد عن 6 عناصر.

rejectionInfo RejectionInfo

تكون هذه السمة مطلوبة عند orderState.state = "REJECTED".

cancellationInfo CancellationInfo

تكون هذه السمة مطلوبة عند orderState.state = "CANCELLED".

inTransitInfo InTransitInfo

تم إيقاف هذا الحقل نهائيًا.

fulfillmentInfo FulfillmentInfo

تم إيقاف هذا الحقل نهائيًا.

receipt Receipt

تكون هذه السمة مطلوبة عند orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP".

أدخِل مُعرّف الطلب المرئي للمستخدم في إيصال.

totalPrice Price

السعر الإجمالي للطلب.

infoExtension FoodOrderUpdateExtension

تحدّد هذه السمة المزيد من التفاصيل حول تعديل الطلب، مثل الفاصل الزمني المقدَّر للتسليم أو الاستلام.

يعرض المثال التالي عنصر OrderUpdate:

مثال

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

PickupInfo

يعرض الجدول التالي خصائص النوع PickupInfo:

الموقع النوع الوصف
pickupTimeIso8601 String

وقت الاستلام المقدّر، بتنسيق الطابع الزمني ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" أو تنسيق المدة: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". على سبيل المثال، تمثل PT90M المدة 90 دقيقة. وتشير القيمة التلقائية "PT0M" إلى أنّ وقت الاستلام المفضّل هو في أقرب وقت ممكن. المرجع: https://en.wikipedia.org/wiki/ISO_8601#builtd_date_and_time_representations. ويمكنك استخدام هذا الزر لتعديل الوقت المقدَّر للاستلام أثناء عملية الدفع.

مثال: PT90M

يعرض المثال التالي عنصر PickupInfo:

مثال

{
  "pickupTimeIso8601": "PT90M"
}

PostalAddress

يعرض الجدول التالي خصائص النوع PostalAddress:

الموقع النوع الوصف
regionCode String

مطلوبة.

رمز بلد من حرفين.

مثال: US

postalCode String

تمثّل هذه السمة الرمز البريدي.

مثال: 94043

administrativeArea String

أعلى تقسيم فرعي إداري يُستخدم للعناوين البريدية لبلد أو منطقة. يمكن أن يكون ولاية أو مقاطعة أو مقاطعة أو محافظة.

مثال: CA

locality String

المدينة أو البلدة لهذا الموقع الجغرافي. في مناطق العالم التي لم يتم تعريف المناطق المحلية فيها بشكل جيد أو لا تتناسب مع هذا الهيكل، لا تحدد المنطقة المحلية وتستخدم حقل addressLines بدلاً من ذلك.

مثال: Mountain View

addressLines List<String>

يمكنك استخدام سطر واحد أو أكثر لتحديد عنوان الشارع. يجب عدم تعديل هذا الحقل لأنه قد يحتوي على مناطق محلية غير واضحة.

مثال: [ "1350 Charleston Road" ]

recipients List<String>

قائمة بالمستلمين لطلب ما. لا يتوفّر هذا الحقل إلا في billingAddress.

يعرض المثال التالي عنصر PostalAddress:

مثال

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

السعر

يعرض الجدول التالي خصائص النوع Price:

الموقع النوع الوصف
type Enum [ "ESTIMATE", "ACTUAL" ]

مطلوبة.

رمز قسيمة الترويج.

amount Money

مطلوبة.

عرض ترويجي

يعرض الجدول التالي خصائص النوع Promotion:

الموقع النوع الوصف
coupon String

مطلوبة.

رمز قسيمة الترويج.

ProposedOrder

يعرض الجدول التالي خصائص النوع ProposedOrder:

الموقع النوع الوصف
id String

معرّف اختياري للطلب المقترَح.

cart Cart

مطلوبة.

عناصر المستخدم.

otherItems القائمة<LineItem>

السلع التي يضيفها مقدّم الخدمة، مثل رسوم التسليم والرسوم الأخرى والضرائب

يجب ألا يزيد عدد العناصر عن 10 عناصر.

image Image

الصورة المرتبطة بالطلب المقترَح.

totalPrice Price

مطلوبة.

السعر الإجمالي للطلب المقترَح.

extension FoodOrderExtension

مطلوبة.

تحدد معلومات التنفيذ لطلبات الطعام.

disclaimers القائمة<Disclaimer>

يتطابق مع رسائل إخلاء المسؤولية التي سيتم عرضها في واجهة المستخدم قبل تقديم الطلب.

يعرض المثال التالي عنصر ProposedOrder:

مثال

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

SublineNote

يعرض الجدول التالي خصائص النوع SublineNote:

الموقع النوع الوصف
note String

مطلوبة.

الطابع الزمني

التاريخ والوقت بالتنسيق التالي: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

TransactionDecisionValue

تحتوي على السمة Order.

يعرض الجدول التالي خصائص النوع TransactionDecisionValue:

الموقع النوع الوصف
order Order

مطلوبة.

الطلب الذي سيتم تقديمه مع تفاصيل الدفع.

يعرض المثال التالي عنصر TransactionDecisionValue:

مثال

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

طلب توصيل البيانات

AppRequest

يعرض الجدول التالي خصائص النوع AppRequest:

الموقع النوع الوصف
isInSandbox منطقية

يشير إلى ما إذا كانت المعاملات اللاحقة تم إجراؤها في بيئة وضع حماية.

conversation Conversation
inputs القائمة<Input>

مطلوبة.

تحتوي على الوسيطات المتوقعة للتحقق من سلة التسوق.

يجب أن يحتوي على عنصر واحد بالضبط.

يعرض المثال التالي عنصر AppRequest:

مثال 1

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

مثال 2

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

CheckoutRequestMessage

CheckoutRequestMessage هو AppRequest بهدف actions.foodordering.intent.CHECKOUT.

SubmitOrderRequestMessage

SubmitOrderRequestMessage هو AppRequest بهدف actions.foodordering.intent.TRANSACTION_DECISION.

المحادثة

تكون قيمة Conversation فريدة لجلسة واحدة فقط. ويمكنك استخدامه لربط عدّة إجراءات "Checkout" و"SubmitOrder" معًا إذا لزم الأمر.

يعرض الجدول التالي خصائص النوع Conversation:

الموقع النوع الوصف
conversationId String

مطلوبة.

المعرّف الفريد للمحادثة.

يعرض المثال التالي عنصر Conversation:

مثال

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

إدخال

الوسيطات المتوقعة للتحقق من سلة التسوق.

يعرض الجدول التالي خصائص النوع Input:

الموقع النوع الوصف
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

مطلوبة.

يمكنك ضبط "actions.foodordering.intent.CHECKOUT" على رسالة طلب الدفع أو على "actions.intent.TRANSACTION_decISION" لرسالة طلب إرسال الطلب.

arguments القائمة<Argument>

مطلوبة.

تحتوي على سلة التسوق المراد دفعها أو الطلب الذي سيتم تقديمه.

يجب أن يحتوي على عنصر واحد بالضبط.

الوسيطة

تحتوي على تفاصيل حول أصناف الطعام التي يريد المستخدم التحقق منها. للدفع، يمكن استخدام الإضافة فقط. عند تقديم الطلب، تنطبق قيمة transactionDecisionValue فقط.

يعرض الجدول التالي خصائص النوع Argument:

الموقع النوع الوصف
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط.
extension المجموعة 1 Cart

تفاصيل أصناف الطعام التي يريد المستخدم التحقق منها.

transactionDecisionValue المجموعة 2 TransactionDecisionValue

تحتوي على الطلب الذي سيتم تقديمه مع تفاصيل الدفع.

الردّ على طلبك

AppResponse

يعرض الجدول التالي خصائص النوع AppResponse:

الموقع النوع الوصف
expectUserResponse الثابت

اضبط القيمة على "خطأ".

القيمة: False

finalResponse FinalResponse

مطلوبة.

تحتوي على ردّك على عملية الدفع في سلة التسوّق.

يعرض المثال التالي عنصر AppResponse:

مثال 1

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

مثال 2

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

مثال 3

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

مثال 4

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

CheckoutResponseMessage

CheckoutResponseMessage هو AppResponse مع checkoutResponse أو error في StructuredResponse.

SubmitOrderResponseMessage

SubmitOrderResponseMessage هو AppResponse مع orderUpdate في StructuredResponse.

FinalResponse

ردّك على طلب الدفع في سلة التسوّق أو SendOrderRequestMessage

يعرض الجدول التالي خصائص النوع FinalResponse:

الموقع النوع الوصف
richResponse RichResponse

مطلوبة.

تحتوي على ردّك على CheckoutRequestMessage أو SendOrderRequestMessage.

CheckoutResponse

يعرض الجدول التالي خصائص النوع CheckoutResponse:

الموقع النوع الوصف
proposedOrder ProposedOrder

مطلوبة.

الطلب المُقترَح للاستخدام في المعاملة.

paymentOptions PaymentOptions

مطلوبة.

تم تحديد خيار الدفع التلقائي للمستخدم.

additionalPaymentOptions القائمة<PaymentOptions>

خيارات الدفع البديلة المتوفرة للمستخدم.

يعرض المثال التالي عنصر CheckoutResponse:

مثال

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

المنتج/الخدمة

تحتوي على ردّك على طلب الدفع في سلة التسوّق أو SendOrderRequestMessage.

يعرض الجدول التالي خصائص النوع Item:

الموقع النوع الوصف
structuredResponse StructuredResponse

مطلوبة.

RichResponse

تحتوي على ردّك على عملية الدفع في سلة التسوّق.

يعرض الجدول التالي خصائص النوع RichResponse:

الموقع النوع الوصف
items القائمة<Item>

مطلوبة.

يجب أن يحتوي على عنصر واحد بالضبط.

StructuredResponse

بالنسبة إلى CheckoutResponseMessage، يمكن أن يكون ذلك واحدًا مما يلي: تشير CheckoutResponse إلى نجاح عملية الدفع. أو FoodErrorExtension: تشير إلى حدوث عطل أثناء عملية الدفع. يمكن أن يتضمّن الردّ رسالة ProposedOrder and PaymentOptions مُصحَّحة أو رسالة خطأ لا تتضمّن PaymentOptions. بالنسبة إلى SendOrderResponseMessage، لا يسري الأمر إلا على orderUpdate.

يعرض الجدول التالي خصائص النوع StructuredResponse:

الموقع النوع الوصف
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط.
checkoutResponse المجموعة 1 CheckoutResponse

تم دفع رسوم السلع بالإضافة إلى الضرائب والخصومات.

error المجموعة 2 FoodErrorExtension

الأخطاء التي تمّت ملاحظتها في سلع سلة التسوّق استنادًا إلى طبيعة الخطأ، يمكن أن تتضمّن هذه السمة نص ProposedOrder وPaymentOptions الذي تم تصحيحه، أو قد تتضمّن فقط رسالة خطأ بدون خيارات Payments.

orderUpdate المجموعة 3 OrderUpdate

تعديلات الطلب غير المتزامنة

يصف هذا القسم الأنواع عالية المستوى التي تشكل الطلبات والردود الخاصة بتفاعل الإجراء المدمج النموذجي لطلب الطعام.

AsyncOrderUpdateRequestMessage

لإعلام المستخدم بالتغييرات بعد إرسال طلب وتأكيده. على سبيل المثال، يمكنك إبلاغ المستخدم بأنّ الطلب قيد النقل أو إذا تغيّر السعر. لمزيد من المعلومات، اطلع على

يعرض الجدول التالي خصائص النوع AsyncOrderUpdateRequestMessage:

الموقع النوع الوصف
isInSandbox منطقية

يشير إلى أن الطلب الذي تم إرسال هذا التعديل من أجله كان عبارة عن دفع في وضع الحماية.

customPushMessage CustomPushMessage

مطلوبة.

يحتوي على OrderUpdate للطلب.

يعرض المثال التالي عنصر AsyncOrderUpdateRequestMessage:

مثال

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

AsyncOrderUpdateResponseMessage

بعد إرسال AsyncOrderUpdateRequestMessage بنجاح، يستجيب محرّك بحث Google بحالة HTTP 200 ونص فارغ. إذا لم ينجح التعديل، يرد على فريق Google تفاصيل عن سبب إخفاق تعديل الطلب.

أنواع تعديلات الطلبات

زرّ

تحدد عنصر واجهة مستخدم يمكنك إضافته لتوفير تفاعل المستخدم.

يعرض الجدول التالي خصائص النوع Button:

الموقع النوع الوصف
title String

مطلوبة.

تصنيف العرض استخدِم عددًا لا يزيد عن 30 حرفًا في الجملة لضمان العرض الصحيح.

مثال: Contact us

openUrlAction OpenUrlAction

مطلوبة.

يعرض المثال التالي عنصر Button:

مثال

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

CancellationInfo

يعرض الجدول التالي خصائص النوع CancellationInfo:

الموقع النوع الوصف
reason String

مطلوبة.

السبب النصي القابل للعرض للرفض عندما تكون OrderState.state هي "CANCELLED".

مثال: Restaurant closed

يعرض المثال التالي عنصر CancellationInfo:

مثال

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

يوفّر هذا النوع للمستخدم فاصلاً زمنيًا مقدَّرًا لتسليم الطلب أو وقت تسليمه أو استلامه. أرسِل هذه الإضافة في OrderUpdate كلما كانت المعلومات متاحة أو تم تغييرها منذ آخر مرة تم إرسالها فيها.

يجب تقديم تقدير متحفظ للفاصل الزمني للتنفيذ حتى تتم تلبية توقعات المستخدمين على نحو منتظم. على سبيل المثال، إذا كان من المتوقّع أن يتم تسليم الطلب اليوم عند الساعة 13:00، يجب إرسال فاصل زمني مقدَّر يتوافق مع تغيّرات حركة المرور، مثل اليوم من الساعة 12:45 إلى 13:15.

يتم تفسير المدة أو الطابع الزمني وفقًا لمعيار ISO 8601 على أنّها الفاصل الزمني بين updateTime في OrderUpdate (في الواقع، "الآن") إلى updateTime زائد duration. لا تستخدم هذا التنسيق ما لم تكن كلمة "الآن" أحد التوقعات المعقولة.

يتم تفسير الفاصل الزمني وفقًا لمعيار ISO 8601 على أنّه الفاصل الزمني من بدايته إلى نهايته.

يعرض الجدول التالي خصائص النوع FoodOrderUpdateExtension:

الموقع النوع الوصف
@type الثابت

نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension".

القيمة: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 String

تمثّل هذه السمة الوقت المقدَّر الذي سيتم فيه تسليم الطلب أو يكون جاهزًا للاستلام فيه. يجب أن تكون السلسلة بتنسيق ISO 8601 ويجب أن تتوافق مع فاصل وليس وقتًا ثابتًا واحدًا. الاصطلاحات المقبولة هي: الفواصل الزمنية والمدد والتواريخ/الأوقات. يمكن إرسال هذا الحقل في SendOrderResponseMessage أو AsyncOrderUpdateRequestMessage عندما تصبح المعلومات متوفرة أو عند حدوث تغيير، مثل حالات الوصول المبكرة أو المتأخرة.

مثال: 2017-07-17T13:00:00Z/2017-07-17T13:30:00Z

foodOrderErrors القائمة<FoodOrderError>

وصف الأخطاء التي حدثت بعد الطلب. يُنصح بحدوث خطأ واحد في كل سلة تسوّق أو لكل سلعة. استخدِم FoodOrderUpdateExtension.FoodOrderErrors للإبلاغ عن أي أخطاء لا يشملها التطبيق RejectionInfo.

يجب ألا يقل عدد السلع عن سلعة واحدة.

يعرض المثال التالي عنصر FoodOrderUpdateExtension:

مثال 1

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

مثال 2

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

FulfillmentInfo

يعرض الجدول التالي خصائص النوع FulfillmentInfo:

الموقع النوع الوصف
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط.
deliveryTime المجموعة 1 الطابع الزمني لمعيار ISO

استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension

pickupTime المجموعة 2 الطابع الزمني لمعيار ISO

استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension

يعرض المثال التالي عنصر FulfillmentInfo:

مثال 1

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

مثال 2

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

InTransitInfo

يعرض الجدول التالي خصائص النوع InTransitInfo:

الموقع النوع الوصف
updatedTime الطابع الزمني لمعيار ISO

استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension

يعرض المثال التالي عنصر InTransitInfo:

مثال

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

LineItemUpdate

يعرض الجدول التالي خصائص النوع LineItemUpdate:

الموقع النوع الوصف
orderState OrderState
price Price
reason String

سبب التغيير. مطلوبة عند تغيير الأسعار.

يعرض المثال التالي عنصر LineItemUpdate:

مثال

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

OpenUrlAction

يعرض الجدول التالي خصائص النوع OpenUrlAction:

الموقع النوع الوصف
url String

مطلوبة.

الإجراء الذي تم تشغيله من خلال النقر على الزر أو لمسه. تعتمد قائمة البادئات السارية على orderManagementActionType. "EMAIL": يجب أن تكون البادئة "mailto". "CALL": يجب أن تكون البادئة "tel". "CUSTOMER_SERVICE": يجب أن تكون البادئة "mailto" أو "tel" أو "http" أو "https".

مثال: https://www.google.com

OrderManagementAction

تتيح ميزة "إدارة الطلبات" للمستخدمين الحصول على خدمة دعم ما بعد الطلبات، ويجب إرسالهم في كل OrderUpdate ضمن الطلب المُرسَل AppResponse وبكل AsyncOrderUpdateRequestMessage إجراءات لاحقة لإدارة الطلبات يتم إرسالها لطلب معيّن استنادًا إلى الحالة.

على سبيل المثال، في الحالة "تم الإنشاء"، قد يشير CUSTOMER_SERVICE إلى رقم هاتف دعم العملاء الخاص بك. وبعد ذلك، إذا كانت الحالة "مؤكّدة"، يمكن أن يتم تغيير رقم الهاتف CUSTOMER_SERVICE إلى رقم هاتف المطعم إذا أصبح ذلك أفضل نقطة تواصل مع العميل. وبالمثل، عندما يصبح الطلب في حالة "FULFILLED"، يمكن أن يذكر CUSTOMER_SERVICE عناوين البريد الإلكتروني لفريق الدعم.

يعرض الجدول التالي خصائص النوع OrderManagementAction:

الموقع النوع الوصف
type OrderManagementActionType

مطلوبة.

button Button

مطلوبة.

يعرض المثال التالي عنصر OrderManagementAction:

مثال 1

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

مثال 2

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

OrderManagementActionType

تحدّد الأنواع ذات الصلة بـ OrderManagementAction.

يحتوي النوع OrderManagementActionType على القيم المحتمَلة التالية:

  • CUSTOMER_SERVICE: عنوان البريد الإلكتروني و/أو رقم الاتصال بخدمة العملاء الظاهر على صفحة تأكيد الطلب. هذا مطلوب. يجب أن تكون البادئة openUrlAction.url هي "mailto" أو "tel" أو "http" أو "https".
  • EMAIL: يتم اتخاذ إجراء بالبريد الإلكتروني على صفحة تفاصيل الطلب فقط، ويجب أن تكون البادئة openUrlAction.url هي "mailto".
  • CALL_DRIVER: إجراء مكالمة على صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".
  • CALL_RESTAURANT: إجراء مكالمة على صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".

OrderState

الحالة الحالية للطلب. تتوافق كل قيمة state للسمة OrderState أيضًا مع حالة الشراء على myaccount.google.com.

يعرض الجدول التالي خصائص النوع OrderState:

الموقع النوع الوصف
state OrderStateEnum

مطلوبة.

label String

مطلوبة.

سلسلة العرض المرئية للمستخدم للحالة استخدِم حالة أحرف الجملة.

مثال: Your order has been received

يعرض المثال التالي عنصر OrderState:

مثال

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

OrderStateEnum

تحدّد الأنواع ذات الصلة بـ OrderState.

يحتوي النوع OrderStateEnum على القيم المحتمَلة التالية:

  • CREATED: الطلب الذي تم إنشاؤه من قِبل الشركة المدمَجة وفي انتظار التأكيد من قِبل مقدّم الخدمة. يتطابق مع حالة الشراء "تم الطلب".
  • CONFIRMED: تم تأكيد الطلب من قِبل مقدّم الخدمة وهو نشط. يتطابق مع حالة الشراء "مقبولة".
  • REJECTED: تم رفض الطلب من قِبل شركة الدمج أو مزوّد الخدمة. يتطابق مع حالة الشراء "مرفوضة".
  • CANCELLED: ألغى المستخدم الطلب. يتطابق مع حالة الشراء "تم الإلغاء".
  • IN_PREPARATION: يتم الآن تحضير الطعام. يتطابق مع حالة الشراء "الحالة غير معروفة".
  • READY_FOR_PICKUP: الطعام جاهز للاستلام. يتطابق مع حالة الشراء "جاهز للاستلام".
  • IN_TRANSIT: يتم حاليًا تسليم الطلب. يتطابق مع حالة الشراء "قيد التقدّم".
  • FULFILLED: تلقّى المستخدم ما تم طلبه. يتطابق مع حالة الشراء "تم الاستلام".

إيصال

أرسِل هذا النوع في طلب إرسال AppResponse، حيث تكون قيمة OrderState "مؤكدة" أو "تم التعبئة" أو "IN_TRANSIT". أرسِل الإيصال عند توفُّر userVisibleOrderId. لن تحتاج إلى الاستمرار في إرسال الإيصال في التحديثات اللاحقة.

يعرض الجدول التالي خصائص النوع Receipt:

الموقع النوع الوصف
userVisibleOrderId String

مطلوبة.

تكون هذه السمة مطلوبة إذا كان الطلب هو "CONFIRMED" أو "IN_TRANSIT" أو "FULFILLED". هذا الحقل هو رقم التعريف الفردي الموجَّه إلى المستخدم لهذا الطلب (عادةً ما يكون مُعرّف الطلب الخاص بالمطعم)، ويظهر في كل من إيصال شركة الدمج وبطاقة طلب Google. ويجب أن يتمكّن المستخدم من استخدام هذا المعرّف للإشارة إلى طلبه الخاص بخدمة العملاء مع مقدّم الخدمة وشركة الدمج. ما عليك سوى تقديم هذا المعرّف مرة واحدة في أيّ من عمليات طلب مُحدّدة. يكون ActionOrderId هو userVisualOrderId إلى أن يتم توفيرها. على سبيل المثال، قد لا يتوفّر لديك userمرئيOrderId إلى أن يؤكّد المطعم الطلب. بعد التأكيد، يجب إرسال AsyncOrderUpdateRequestMessage مع OrderUpdate وإيصال.

يعرض المثال التالي عنصر Receipt:

مثال

{
  "userVisibleOrderId": "userVisibleId1234"
}

RejectionInfo

يعرض الجدول التالي خصائص النوع RejectionInfo:

الموقع النوع الوصف
type RejectionType

مطلوبة.

reason String

سبب الرفض المستخدَم في التسجيل الداخلي. هذا الحقل غير مرئي للمستخدمين.

يعرض المثال التالي عنصر RejectionInfo:

مثال

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

RejectionType

يحتوي النوع RejectionType على القيم المحتمَلة التالية:

  • INELIGIBLE: المستخدم غير مؤهَّل بسبب مخاوف متعلّقة بالسياسة أو المخاطر.
  • PAYMENT_DECLINED: حدثت مشكلة في معالجة الدفعة.
  • UNAVAILABLE_SLOT: لا يمكن توصيل الطلب في الطلب المسبق المحدّد في DeliveryInfo أو PickupInfo.
  • PROMO_NOT_APPLICABLE: حدثت مشكلة في العرض الترويجي.
  • UNKNOWN: أي سبب آخر

الأنواع المتعلقة بالدفع

يصف هذا القسم الأنواع المتعلقة بالدفع المستخدمة لتلبية طلب الطعام.

ActionProvidedPaymentOptions

متطلبات طريقة الدفع المقدَّمة إجراءً.

يعرض الجدول التالي خصائص النوع ActionProvidedPaymentOptions:

الموقع النوع الوصف
paymentType PaymentType

مطلوبة.

displayName String

مطلوبة.

اسم وسيلة الدفع المعروض على الإيصال

مثال: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

بيانات إضافية لنوع الدفع "ON_FULFILLMENT". على سبيل المثال، يمكنك استخدام هذا الحقل لتحديد ما إذا كان يمكن الدفع نقدًا أو باستخدام البطاقة.

يعرض المثال التالي عنصر ActionProvidedPaymentOptions:

مثال

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

AllowedAuthMethods

يحتوي النوع AllowedAuthMethods على القيم المحتمَلة التالية:

  • PAN_ONLY: طريقة المصادقة المرتبطة ببطاقات الدفع المخزّنة في ملف في حساب المستخدم على Google تتضمن بيانات الدفع التي تم إرجاعها رقم الحساب الشخصي (PAN) مع شهر انتهاء الصلاحية وسنة انتهاء الصلاحية.

AllowedCardNetworks

يحتوي النوع AllowedCardNetworks على القيم المحتمَلة التالية:

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

BillingAddressParameters

يتيح لك هذا العنصر إعداد حقول إضافية يتم عرضها لعنوان إرسال الفواتير المطلوب.

يعرض الجدول التالي خصائص النوع BillingAddressParameters:

الموقع النوع الوصف
format String

يجب إدخال تنسيق عنوان إرسال الفواتير لإكمال المعاملة. MIN: الاسم ورمز البلد والرمز البريدي. كاملة: الاسم وعنوان الشارع والمنطقة المحلية والمنطقة ورمز البلد والرمز البريدي.

يعرض المثال التالي عنصر BillingAddressParameters:

مثال 1

{
  "format": "MIN"
}

مثال 2

{
  "format": "FULL"
}

CardParameters

يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.

يعرض الجدول التالي خصائص النوع CardParameters:

الموقع النوع الوصف
allowedAuthMethods List<Const>

مطلوبة.

الحقول المتاحة لمصادقة معاملة البطاقة

يجب ألا يقل عدد السلع عن سلعة واحدة.

allowedCardNetworks القائمة<AllowedCardNetworks>

مطلوبة.

شبكة بطاقات واحدة أو أكثر تدعمها واجهة برمجة تطبيقات Google Pay API أيضًا

يجب ألا يقل عدد السلع عن سلعة واحدة.

billingAddressRequired منطقية

اضبطه على "صحيح" إذا كنت تطلب عنوان إرسال فواتير. لا تطلب عنوان إرسال الفواتير إلا إذا كان ذلك مطلوبًا لمعالجة المعاملة. يمكن أن تؤدي طلبات البيانات الإضافية إلى زيادة الصعوبات في عملية الدفع وانخفاض معدلات الإحالات الناجحة.

billingAddressParameters BillingAddressParameters

يتم عرض الحقول المتوقّعة في حال ضبط billingAddressDemand على "صحيح".

cvcRequired منطقية

يمكنك ضبط القيمة على "صحيح" في حال استخدام TimesofMoney، وضبطها على "false" في جميع الجهات الأخرى المسؤولة عن معالجة المعاملات.

يعرض المثال التالي عنصر CardParameters:

مثال 1

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

مثال 2

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

GoogleProvidedPaymentInstrument

يعرض الجدول التالي خصائص النوع GoogleProvidedPaymentInstrument:

الموقع النوع الوصف
instrumentToken String

مطلوبة.

سلسلة Base 64 المشفرة والتي تحتوي على الرمز المميز للدفع مقابل تحصيل الرسوم من المستخدم مع معالج Google Pay مشارك، وفقًا لـ GoogleOfferdPaymentOptions المحدّدة سابقًا.

billingAddress PostalAddress

عنوان إرسال الفواتير للدفع.

يعرض المثال التالي عنصر GoogleProvidedPaymentInstrument:

مثال

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

GoogleProvidedPaymentOptions

متطلبات طريقة الدفع التي تقدّمها Google

يعرض الجدول التالي خصائص النوع GoogleProvidedPaymentOptions:

الموقع النوع الوصف
facilitationSpecification String

بيانات PaymentDataRequest JSON كسلسلة. يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.

supportedCardNetworks القائمة<SupportedCardNetworks>

استخدِم facilitationSpecification بدلاً من ذلك. نوع شبكات البطاقات التي يوفّرها الوكيل

تم إيقاف هذا الحقل نهائيًا.

prepaidCardDisallowed منطقية

استخدِم facilitationSpecification بدلاً من ذلك. ما إذا كان مسموحًا باستخدام بطاقة الدفع المُسبق كطريقة دفع أم لا.

تم إيقاف هذا الحقل نهائيًا.

billingAddressRequired منطقية

استخدِم facilitationSpecification بدلاً من ذلك. تحديد ما إذا كان عنوان إرسال الفواتير مطلوبًا أم لا.

تم إيقاف هذا الحقل نهائيًا.

tokenizationParameters TokenizationParameters

تم إيقاف هذا الحقل نهائيًا.

يعرض المثال التالي عنصر GoogleProvidedPaymentOptions:

مثال 1

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

مثال 2

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

مثال 3

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

MerchantInfo

يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.

يعرض الجدول التالي خصائص النوع MerchantInfo:

الموقع النوع الوصف
merchantId String

معرّف التاجر في Google الصادر لك من Google Pay

merchantName String

مطلوبة.

اسم التاجر بالترميز UTF-8. يظهر اسم التاجر في ورقة البيانات.

OnFulfillmentPaymentData

استخدِم هذا العنصر لإرسال بيانات إضافية من أجل PaymentType "ON_FULFILLMENT".

يعرض الجدول التالي خصائص النوع OnFulfillmentPaymentData:

الموقع النوع الوصف
supportedPaymentOptions القائمة<PaymentOptionsEnums>

قائمة خيارات الدفع المتاحة للمستخدم عند توصيل الطلب.

يعرض المثال التالي عنصر OnFulfillmentPaymentData:

مثال

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

المَعلمات

تحدّد الأنواع ذات الصلة بـ TokenizationParameters.

يعرض الجدول التالي خصائص النوع Parameters:

الموقع النوع الوصف
gateway String

مطلوبة.

مثال: braintree

gatewayMerchantId String
[additionalKey: string] String أزواج المفتاح/القيمة الإضافية

يعرض المثال التالي عنصر Parameters:

مثال 1

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

مثال 2

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

PaymentDataRequest

يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.

يعرض الجدول التالي خصائص النوع PaymentDataRequest:

الموقع النوع الوصف
apiVersion الثابت

مطلوبة.

إصدار واجهة برمجة التطبيقات الرئيسي

القيمة: 2

apiVersionMinor الثابت

مطلوبة.

إصدار ثانوي من واجهة برمجة التطبيقات.

القيمة: 0

merchantInfo MerchantInfo

مطلوبة.

(معرّف التاجر في Google Pay) معلومات عن التاجر الذي يطلب بيانات الدفع.

allowedPaymentMethods القائمة<PaymentMethod>

مطلوبة.

تحدّد هذه السمة ما إذا كانت طريقة الدفع متوافقة مع Google Pay API أو طريقة دفع واحدة أو أكثر.

transactionInfo TransactionInfo

مطلوبة.

تفاصيل حول تفويض المعاملة استنادًا إلى ما إذا كان المستخدم يوافق على المعاملة أم لا. يتضمّن هذا الحقل السعر الإجمالي وحالة السعر.

يعرض المثال التالي عنصر PaymentDataRequest:

مثال

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

PaymentInfo

المعلومات المتعلقة بالدفع لأحد الطلبات.

يعرض الجدول التالي خصائص النوع PaymentInfo:

الموقع النوع الوصف
displayName String

مطلوبة.

اسم وسيلة الدفع الذي يظهر للمستخدم لعرضه على الإيصال.

paymentType PaymentType

مطلوبة.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

الرمز المميّز الذي يمكن استخدامه من خلال الإجراء. لا تحدد هذا الخيار إلا إذا حددت GoogleOfferdPaymentOptions كخيار للدفع في CheckoutResponseMessage.

يعرض المثال التالي عنصر PaymentInfo:

مثال 1

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

مثال 2

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

PaymentMethod

يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.

يعرض الجدول التالي خصائص النوع PaymentMethod:

الموقع النوع الوصف
type الثابت

مطلوبة.

معرّف مختصر لطريقة الدفع المتوافقة لا تتم إتاحة سوى بطاقة CARD حاليًا.

القيمة: CARD

parameters CardParameters

مطلوبة.

المَعلمات المطلوبة لإعداد نوع طريقة الدفع المقدَّم.

tokenizationSpecification TokenizationSpecification

مطلوبة.

يجب ضبط حساب أو مقدّم خدمة فك التشفير لتلقّي معلومات الدفع. هذه السمة مطلوبة لطريقة الدفع باستخدام بطاقة CARD.

يعرض المثال التالي عنصر PaymentMethod:

مثال

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

PaymentOptions

يعرض الجدول التالي خصائص النوع PaymentOptions:

الموقع النوع الوصف
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط.
googleProvidedOptions المجموعة 1 GoogleProvidedPaymentOptions

بشكل تبادلي مع actionsOfferdOptions. يمكنك استخدام هذا الرقم للدفع على الإنترنت باستخدام gPay.

actionProvidedOptions المجموعة 2 ActionProvidedPaymentOptions

بشكل تبادلي مع googleOfferdOptions. استخدِم هذه السمة لاختيار "الدفع نقدًا عند التسليم" أو "الدفع عند توصيل الطلب".

يعرض المثال التالي عنصر PaymentOptions:

مثال 1

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

مثال 2

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

مثال 3

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

PaymentOptionsEnums

يحتوي النوع PaymentOptionsEnums على القيم المحتمَلة التالية:

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

يحتوي النوع PaymentType على القيم المحتمَلة التالية:

  • PAYMENT_CARD: بالنسبة إلى GoogleOfferdPaymentOptions.
  • ON_FULFILLMENT: بالنسبة إلى Action ProviderdPaymentOptions.

SupportedCardNetworks

تحدّد الأنواع ذات الصلة بـ GoogleProvidedPaymentOptions.

يحتوي النوع SupportedCardNetworks على القيم المحتمَلة التالية:

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

TokenizationParameters

تحدد الأنواع ذات الصلة بـ GoogleProvidedPaymentOptions.

يعرض الجدول التالي خصائص النوع TokenizationParameters:

الموقع النوع الوصف
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

مطلوبة.

استخدِم facilitationSpecification بدلاً من ذلك. نوع الرموز المميّزة مقبول.

parameters Parameters

استخدِم facilitationSpecification بدلاً من ذلك.

TokenizationSpecification

ويسمح لك هذا العنصر بضبط الحساب لتلقّي معلومات الدفع القابلة لتحصيل الرسوم.

يعرض الجدول التالي خصائص النوع TokenizationSpecification:

الموقع النوع الوصف
type الثابت

مطلوبة.

parameters Parameters

مطلوبة.

يعرض المثال التالي عنصر TokenizationSpecification:

مثال 1

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

مثال 2

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

TransactionInfo

يصف هذا العنصر معاملة تحدد قدرة الجهة المسدِّدة على الدفع. ويتمّ استخدامه لعرض مربّع حوار تفويض الدفع.

يعرض الجدول التالي خصائص النوع TransactionInfo:

الموقع النوع الوصف
currencyCode String

مطلوبة.

رمز العملة الأبجدي وفقًا لمعيار ISO 4217.

transactionId String

المعرّف الفريد الذي يحدد محاولة إجراء معاملة. ويمكن للتجّار استخدام معرّف حالي أو إنشاء معرّف محدّد لمحاولات إجراء المعاملات على Google Pay. يكون هذا الحقل مطلوبًا عند إرسال عمليات معاودة الاتصال إلى واجهة برمجة تطبيقات أحداث معاملات Google.

totalPriceStatus الثابت

مطلوبة.

استخدم "المقدّرة" كقيمة تلقائية. قد يتم تعديل السعر الإجمالي استنادًا إلى تفاصيل الردّ، مثل ضريبة المبيعات التي يتم تحصيلها استنادًا إلى عنوان إرسال الفواتير.

القيمة: ESTIMATED

totalPrice String

مطلوبة.

إجمالي القيمة النقدية للمعاملة مع دقة عشرية اختيارية لمنزلتين عشريتين. يجب أن تكون قيمة هذا الحقل هي نفس قيمة Cart.totalPrice.

يعرض المثال التالي عنصر TransactionInfo:

مثال

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