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

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

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

سلة التسوق

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

ويسرد الجدول التالي سمات النوع Cart:

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

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

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

id String

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

merchant Merchant

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

lineItems القائمة<LineItem>

مطلوب.

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

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

promotions القائمة<Promotion>

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

notes String

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

extension FoodCartExtension

تحدد تفاصيل حول المستخدم، مثل تفضيلات توصيل الطلبات.

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

مثال 1

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

مثال 2

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

جهة اتصال

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

ويسرد الجدول التالي سمات النوع Contact:

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

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

مثلاً: 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#Comd_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: يحتوي السطر أو 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 صالح إلى مرحلة التأكيد، بدلاً من مطالبة المستخدم بمراجعة سلة التسوق.

paymentOptions PaymentOptions

مطلوب في حال foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED"

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

additionalPaymentOptions القائمة<PaymentOptions>

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

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

مثال

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

FoodItemExtension

لتحديد الإضافات الخاصة بأصناف الطعام.

ويسرد الجدول التالي سمات النوع FoodItemExtension:

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

مطلوب.

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

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

options القائمة<FoodItemOption>

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

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

مثال

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

FoodItemOption

ويسرد الجدول التالي سمات النوع FoodItemOption:

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

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

مثلاً: 39231093

offerId String

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

مثلاً: 912835081

name String

اسم الخيار.

مثلاً: Honey Mustard

price Money
note String

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

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

الكمية الجديدة المتاحة للسلعة التي تسببت في حدوث الخطأ هذا الإجراء مطلوب فقط عندما يكون الخطأ "غير صالح". أو "NOT_FOUND". يجب أن تكون القيمة صفرًا لعبارة "غير صالح" و"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 على تحديد السلعة بالترتيب الذي تشير إليه. هذا الحقل مطلوب باستثناء العناصر الأخرى.

name String

مطلوب.

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

type LineItemType

مطلوب.

quantity عدد صحيح

مطلوب في حال type = "REGULAR"

عدد السلع المضمّنة في العرض لا ينطبق هذا الخيار على ProposedOrder.otherItems.

description String

وصف السلعة

price Price

مطلوب.

سعر السلعة أو السلع تعكس هذه القيمة السعر الإجمالي لجميع السلع أو الخدمات لهذا العنصر (بمعنى آخر، أضف تكلفة أي إضافات واضربها في الكمية). على سبيل المثال: إذا كانت سلعة بقيمة 10 ريال سعودي تحتوي على كمية من 3 ريالات، سيكون السعر 30 ريال سعودي. سعر بيتزا واحدة بسعر أساسي يبلغ 5 دولار أمريكي وإضافة دولار أمريكي واحد، سيكون السعر 6 دولار أمريكي. بالنسبة إلى قطعتين من البيتزا (الكمية = 2) بسعر أساسي يبلغ 5 دولار أمريكي ولكل منهما إضافة إضافية بقيمة دولار أمريكي، سيكون السعر 12 دولار أمريكي. يجب أن يكون لكل عنصر سعر، حتى إذا كان السعر "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: عنصر العرض المجاني هذه الرسائل محجوزة بشكل عام لنصيحة من اختيار المستخدم. يسري هذا العرض على ProposedOrder.otherItems.
  • DELIVERY: عنصر التسليم يسري هذا العرض على ProposedOrder.otherItems.
  • SUBTOTAL: الإجمالي الفرعي للعنصر يسري هذا العرض على ProposedOrder.otherItems.
  • FEE: عنصر إضافي لا تشمله الأنواع الأخرى. يسري هذا العرض على ProposedOrder.otherItems.

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

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

ويسرد الجدول التالي سمات النوع Location:

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

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

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

postalAddress PostalAddress
zipCode String

مثلاً: 90210

city String

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

مثلاً: Los Angeles

notes String

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

مثلاً: Gate code is #111

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

مثال

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

التاجر

ويسرد الجدول التالي سمات النوع Merchant:

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

معرّف التاجر. إذا تم تحديد سمة، يتطابق مع Restaurant.@id في خلاصة المطعم.

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

name String

مطلوب.

اسم التاجر المرئي للمستخدم

مثلاً: Falafel Bite

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

مثال

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

المال

ويسرد الجدول التالي سمات النوع Money:

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

مطلوب.

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

مثلاً: USD

units String

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

مثلاً: 36

nanos عدد صحيح

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

مطلوب.

المعرّف الفريد للطلب في نظام الدمج المُستخدَم لتحديد الترتيب الذي تم إرسال التحديث بناءً عليه إذا لم يتم تقديم invoice.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#Comd_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.

القيمة: 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 وPaymentOptions المصحّحين أو رسالة خطأ بدون خيارات PaymentOptions. بالنسبة إلى SendOrderResponseMessage، يمكن استخدام قيمة orderUpdate (تحديث الطلب) فقط.

ويسرد الجدول التالي سمات النوع StructuredResponse:

الموقع النوع الوصف
يجب تحديد مجموعة واحدة من مجموعات المواقع الإلكترونية التالية تحديدًا.
checkoutResponse المجموعة 1 CheckoutResponse

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

error المجموعة 2 FoodErrorExtension

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

orderUpdate المجموعة 3 OrderUpdate

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

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

AsyncOrderUpdateRequestMessage

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

ويسرد الجدول التالي سمات النوع AsyncOrderUpdateRequestMessage:

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

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

customPushMessage CustomPushMessage

مطلوب.

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

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

مثال

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

AsyncOrderUpdateResponseMessage

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

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

زرّ

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

ويسرد الجدول التالي سمات النوع Button:

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

مطلوب.

تصنيف العرض. استخدِم حالة أحرف الجملة ومؤلفة من 30 حرفًا أو أقل لضمان العرض بشكل صحيح.

مثلاً: Contact us

openUrlAction OpenUrlAction

مطلوب.

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

مثال

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

CancellationInfo

ويسرد الجدول التالي سمات النوع CancellationInfo:

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

مطلوب.

السبب النصي القابل للعرض للرفض عندما تكون OrderState.state هي "CancelLED" (تم إلغاؤها).

مثلاً: Restaurant closed

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

مثال

{
  "reason": "Insufficient inventory"
}

FoodOrderUpdateExtension

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

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

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

يتم تفسير الفاصل الزمني ISO 8601 على أنه يشير إلى الفاصل الزمني من البداية إلى نهاية الفاصل الزمني.

ويسرد الجدول التالي سمات النوع FoodOrderUpdateExtension:

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

نوع هذه الإضافة. يتم دائمًا ضبط هذا الحقل على "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 يمكن أن تختلف إجراءات إدارة الطلبات المُرسَلة لطلب معيّن استنادًا إلى الولاية.

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

ويسرد الجدول التالي سمات النوع OrderManagementAction:

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

مطلوب.

button Button

مطلوب.

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

مثال 1

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

مثال 2

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

OrderManagementActionType

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

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

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

OrderState

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

ويسرد الجدول التالي سمات النوع OrderState:

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

مطلوب.

label String

مطلوب.

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

مثلاً: Your order has been received

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

مثال

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

OrderStateEnum

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

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

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

الوصل

إرسال هذا النوع في طلب إرسال AppResponse حيث تكون قيمة OrderState هي "CONFIRMED" أو "FULFILLED" أو "IN_TRANSIT". إرسال الإيصال على الوقت الذي يصبح فيه userVisibleOrderId متاحًا. لا تحتاج إلى الاحتفاظ إرسال الإيصال في التحديثات اللاحقة.

ويسرد الجدول التالي سمات النوع Receipt:

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

مطلوب.

مطلوبة إذا كان الطلب "CONFIRMED" أو "IN_TRANSIT" أو "FULFILLED". هذا الحقل هو المعرّف الفردي الموجّه للمستخدمين (والذي يكون عادةً هو معرّف الطلب الخاص بالمطعم)، ويظهر في كلّ من إيصال شركة الدمج وبطاقة طلب Google. يجب أن يتمكّن المستخدم من استخدام رقم التعريف هذا للإشارة إلى طلبه الخاص بخدمة العملاء لدى مقدّم الخدمة وشركة الدمج. ما عليك سوى تقديم هذا المعرّف مرة واحدة فقط في أي OrderUpdate محدّد. إلى أن يتم توفير هذه السمة، يكون الإجراء ActionOrderId هو uservisibleOrderId. على سبيل المثال، قد لا يتوفّر لديك 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: الاسم ورمز البلد والرمز البريدي. FULL: الاسم وعنوان الشارع والمنطقة المحلية ورمز البلد والرمز البريدي.

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

مثال 1

{
  "format": "MIN"
}

مثال 2

{
  "format": "FULL"
}

CardParameters

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

ويسرد الجدول التالي سمات النوع CardParameters:

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

مطلوب.

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

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

allowedCardNetworks القائمة<AllowedCardNetworks>

مطلوب.

شبكة بطاقة واحدة أو أكثر متاحة في Google Pay API

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

billingAddressRequired منطقي

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

billingAddressParameters BillingAddressParameters

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

cvcRequired منطقي

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

يوضّح المثال التالي عنصر 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، وفقًا لخيارات GoogleProvidedPaymentOptions التي تم تحديدها سابقًا.

billingAddress PostalAddress

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

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

مثال

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

GoogleProvidedPaymentOptions

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

ويسرد الجدول التالي سمات النوع GoogleProvidedPaymentOptions:

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

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

supportedCardNetworks القائمة<SupportedCardNetworks>

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

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

prepaidCardDisallowed منطقي

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

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

billingAddressRequired منطقي

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

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

tokenizationParameters TokenizationParameters

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

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

مثال 1

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

مثال 2

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

مثال 3

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

MerchantInfo

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

ويسرد الجدول التالي سمات النوع MerchantInfo:

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

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

merchantName String

مطلوب.

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

OnFulfillmentPaymentData

استخدِم هذا العنصر لإرسال بيانات إضافية من أجل نوع الدفع "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

هو الرمز المميّز الذي يمكن أن يستخدمه الإجراء. يجب تحديد هذا الخيار فقط إذا حدّدت GoogleProvidedPaymentOptions كخيار دفع في CheckoutResponseMessage.

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

مثال 1

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

مثال 2

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

PaymentMethod

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

ويسرد الجدول التالي سمات النوع PaymentMethod:

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

مطلوب.

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

القيمة: CARD

parameters CardParameters

مطلوب.

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

tokenizationSpecification TokenizationSpecification

مطلوب.

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

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

مثال

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

PaymentOptions

ويسرد الجدول التالي سمات النوع PaymentOptions:

الموقع النوع الوصف
يجب تحديد مجموعة واحدة من مجموعات المواقع الإلكترونية التالية تحديدًا.
googleProvidedOptions المجموعة 1 GoogleProvidedPaymentOptions

الأحداث المتنافية مع actionProvidedOptions. استخدِم هذا الخيار للدفع على الإنترنت باستخدام gPay.

actionProvidedOptions المجموعة 2 ActionProvidedPaymentOptions

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

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

مثال 1

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

مثال 2

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

مثال 3

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

PaymentOptionsEnums

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

  • Cash
  • Card
  • UPI
  • Paytm

PaymentType

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

  • PAYMENT_CARD: لـ GoogleProvidedPaymentOptions.
  • ON_FULFILLMENT: لـ ActionProvidedPaymentOptions.

SupportedCardNetworks

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

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

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

TokenizationParameters

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

ويسرد الجدول التالي سمات النوع TokenizationParameters:

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

مطلوب.

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

parameters Parameters

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

TokenizationSpecification

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

ويسرد الجدول التالي سمات النوع TokenizationSpecification:

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

مطلوب.

parameters Parameters

مطلوب.

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

مثال 1

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

مثال 2

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

TransactionInfo

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

ويسرد الجدول التالي سمات النوع TransactionInfo:

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

مطلوب.

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

transactionId String

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

totalPriceStatus الثابت

مطلوب.

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

القيمة: ESTIMATED

totalPrice String

مطلوب.

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

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

مثال

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