أنواع القواعد
سلة التسوق
يحتوي على تفاصيل الطلب، بالإضافة إلى ما إذا كان الطلب للاستلام أو التسليم. تحتوي سلة التسوّق أيضًا على تفاصيل التسليم والإكرامية وعنوان العميل. يتم تعريف عنصرCart
في Checkout AppRequest
.
يمكنك تضمين نسخة من سلة التسوّق في Checkout AppResponse
.
يسرد الجدول التالي سمات النوع Cart
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
Const |
نوع هذا العنصر انسَ هذا الحقل إذا كان عنصر سلة التسوّق الرئيسي جزءًا من ProposedOrder. القيمة: |
|
id |
String |
معرّف اختياري لسلة التسوّق |
|
merchant |
Merchant |
التاجر المرتبط بسلة التسوّق هذه |
|
lineItems |
قائمة<LineItem > |
مطلوب. قائمة السلع أو الخدمات التي يطلبها المستخدم يجب أن يتضمّن عنصرًا واحدًا على الأقل. |
|
promotions |
قائمة<Promotion > |
العرض الترويجي الذي تم تطبيقه في سلة التسوّق هذه يمكن حاليًا استخدام عرض ترويجي واحد فقط. |
|
notes |
String |
ملاحظات حول الطلب أو تعليمات التسليم |
|
extension |
FoodCartExtension |
تُحدِّد تفاصيل عن المستخدم، مثل الإعدادات المفضّلة للتسليم. |
يوضّح المثال التالي عنصر Cart
:
مثال 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
مثال 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
معلومات الاتصال
تُحدِّد تفاصيل عن الشخص الذي يستلم الطلب. لا يتوفّر هذا الخيار إلا فيAppResponse
.
يسرد الجدول التالي سمات النوع Contact
:
الموقع | النوع | الوصف | |
---|---|---|---|
displayName |
String |
اسم الشخص الذي سيستلم الطلب، كما تريد أن يظهر استخدِم هذا الحقل في حال عدم تحديد firstName وlastName. مثلاً: |
|
email |
String |
عنوان البريد الإلكتروني للشخص الذي يتلقّى الطلب. مثلاً: |
|
firstName |
String |
الاسم الأول للشخص الذي سيستلم الطلب. مثلاً: |
|
lastName |
String |
اسم العائلة للشخص الذي سيستلم الطلب مثلاً: |
|
phoneNumber |
String |
رقم هاتف الشخص الذي سيستلم الطلب، بما في ذلك رمز البلد مثلاً: |
|
emailVerified |
صحيح/خطأ |
يشير ذلك إلى ما إذا كان الشخص الذي يتلقّى الطلب مسجِّلاً الدخول باستخدام حسابه على Google. |
يوضّح المثال التالي عنصر Contact
:
مثال
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
يحتوي علىOrderUpdate
للطلب.
يسرد الجدول التالي سمات النوع CustomPushMessage
:
الموقع | النوع | الوصف | |
---|---|---|---|
orderUpdate |
OrderUpdate |
مطلوب. تم تعديل معلومات الطلب. |
يوضّح المثال التالي عنصر CustomPushMessage
:
مثال
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
يسرد الجدول التالي سمات النوع DeliveryInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
deliveryTimeIso8601 |
String |
الوقت المقدَّر للتسليم بتنسيق الطابع الزمني ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" أو تنسيق المدة: "P(n)Y(n)M(n)DT(n)H(n)M(n)S" على سبيل المثال، يمثّل PT90M مدة 90 دقيقة. تشير القيمة التلقائية "PT0M" إلى أنّ وقت التسليم المفضّل هو في أقرب وقت ممكن. المرجع: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. استخدِم هذا الحقل لتعديل وقت التسليم المقدَّر أثناء الردّ على عملية الدفع. مثلاً: |
يوضّح المثال التالي عنصر DeliveryInfo
:
مثال
{ "deliveryTimeIso8601": "PT90M" }
إخلاء المسؤولية
يسرد الجدول التالي سمات النوع Disclaimer
:
الموقع | النوع | الوصف | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
مطلوب. لعرض رسائل إخلاء المسؤولية المحدّدة مسبقًا أثناء الدفع |
|
feeAmount |
Money |
سيحصّل الشريك من التاجر رسومًا بقيمة N مقابل هذا الطلب. |
|
feeAmountRange |
FeeAmountRange |
سيحصّل الشريك من المطعم رسومًا تتراوح بين "ن" و"م" لكل طلب. |
|
feePercent |
Number |
سيحصّل الشريك من التاجر رسومًا بنسبة% N مقابل هذا الطلب. |
|
feePercentRange |
FeePercentRange |
سيحصّل الشريك من التاجر رسومًا تتراوح بين% N و% M لكل طلب. |
يوضّح المثال التالي عنصر Disclaimer
:
مثال 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
مثال 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
مثال 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
مثال 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
المثال الخامس
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
مثال 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
خطأ
يحتوي نوع Error
على القيم المحتملة التالية:
CLOSED
: المطعم مغلق في وقت تقديم الطلب.NO_CAPACITY
: لا تتوفّر سعة خدمة (على سبيل المثال، انقطاع مؤقت بسبب أوقات الذروة).NO_COURIER_AVAILABLE
: تعذّر معالجة الطلب بسبب قلة عدد موظفي التسليم.REQUIREMENTS_NOT_MET
: عدم استيفاء قيود قبول الطلب (على سبيل المثال، الحد الأدنى لحجم سلة التسوّق)UNAVAILABLE_SLOT
: لا يمكن تنفيذ الطلب في الوقت المحدَّد للطلب المُسبَق الذي حدَّدته DeliveryInfo أو PickupInfo.OUT_OF_SERVICE_AREA
: لا يمكن تسليم الطلب إلى عنوان المستخدم.PROMO_EXPIRED
: تعذّر التقديم لأنّ العرض الترويجي انتهت صلاحيته.PROMO_NOT_APPLICABLE
: رمز خطأ عام لرصد جميع حالات تعذُّر تطبيق الرمز الترويجي، إذا لم يكن أيّ من أخطاء الرموز الترويجية الأخرى مناسبًا.PROMO_NOT_RECOGNIZED
: لم يتم التعرّف على رمز القسيمة.-
PROMO_ORDER_INELIGIBLE
: الطلب الحالي غير مؤهَّل لاستخدام هذه القسيمة. PROMO_USER_INELIGIBLE
: المستخدم الحالي غير مؤهَّل للاستفادة من هذا القسيمة.AVAILABILITY_CHANGED
: لم يعُد العنصر متوفّرًا أو لا تتوفّر عناصر كافية لتلبية الطلب.INCORRECT_PRICE
: أخطاء في السعر في الرسوم أو الإجماليINVALID
: يحتوي العنصر LineItem أو FulfillmentOption أو العرض الترويجي على بيانات غير صالحة.NOT_FOUND
: لا يمكن العثور على عنصر أو خيار توفّر أو عرض ترويجي.PRICE_CHANGED
: تغيّر سعر سلعة.
FeeAmountRange
يسرد الجدول التالي سمات النوع FeeAmountRange
:
الموقع | النوع | الوصف | |
---|---|---|---|
minFeeAmount |
Money |
الحد الأدنى لمبلغ الرسوم المُحصَّلة |
|
maxFeeAmount |
Money |
الحد الأقصى لمبلغ الرسوم المُحصَّلة |
FeePercentRange
يسرد الجدول التالي سمات النوع FeePercentRange
:
الموقع | النوع | الوصف | |
---|---|---|---|
minFeePercent |
Number |
الحد الأدنى لنسبة الرسوم المُحصَّلة |
|
maxFeePercent |
Number |
الحدّ الأقصى لنسبة الرسوم المفروضة. |
FoodCartExtension
يحتوي على تفاصيل عن المستخدم، مثل الإعدادات المفضّلة للتسليم.
يسرد الجدول التالي سمات النوع FoodCartExtension
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
Const |
نوع هذه الإضافة. يتم دائمًا ضبط هذا الحقل على "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". القيمة: |
|
contact |
Contact |
معلومات الاتصال الخاصة بالشخص الذي سيستلم الطلب وتشمل التفاصيل اسم المستخدم ورقم هاتفه وعنوان بريده الإلكتروني. |
|
fulfillmentPreference |
FulfillmentOption |
مطلوب. الإعداد المفضّل للمستخدم لتسليم الطلب |
|
location |
Location |
في CheckoutRequestMessage، يحدّد هذا الحقل عنوان التسليم، وهو مطلوب إذا كان الطلب مخصّصًا للتوصيل. بالنسبة إلى الطلبات التي يتم استلامها للوجبات السفرية أو الاستلام، لا يتم تضمين هذا الحقل في الرسالة. |
يوضّح المثال التالي عنصر FoodCartExtension
:
مثال 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } }
مثال 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
لتحديد خطأ واحد أو أكثر حدث أثناء معالجة طلب. يوضّح الجدول التالي حقول النوعFoodErrorExtension
.
يمكن إرسال الأخطاء في CheckoutResponse
.
يسرد الجدول التالي سمات النوع FoodErrorExtension
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
Const | مطلوب. نوع هذه الإضافة. القيمة: |
|
foodOrderErrors |
قائمة<FoodOrderError > |
مطلوب. صفيف من عناصر FoodOrderError التي تصف الأخطاء التي حدثت يُنصح بخطأ واحد لكل سلة تسوّق أو لكل سلعة. يجب أن يتضمّن عنصرًا واحدًا على الأقل. |
|
correctedProposedOrder |
ProposedOrder |
تكون هذه السمة مطلوبة عند
طلب جديد تم اقتراح تعديلات عليه عرض هذا العنصر إذا كانت هناك أخطاء قابلة للاسترداد في ProposedOrder الأصلي على سبيل المثال، يُعدّ تغيير في سعر سلعة واحدة أو أكثر في سلة التسوّق خطأً قابلاً للاسترداد. يتمّ تخطّي الأخطاء القابلة للإصلاح التي تتضمّن طلبًا صالحًا في ProposedOrder إلى مرحلة التأكيد، بدلاً من مطالبة المستخدم بمراجعة سلّة التسوّق. |
|
paymentOptions |
PaymentOptions |
تكون هذه السمة مطلوبة عند
خيارات الدفع التلقائية التي تم اختيارها للمستخدم |
|
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 |
Const | مطلوب. نوع هذه الإضافة. يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodItemExtension". القيمة: |
|
options |
قائمة<FoodItemOption > |
يمكن أن يكون الخيار عنصرًا إضافيًا أو مجموعة إضافية تحتوي على مجموعة من الإضافات. |
يوضّح المثال التالي عنصر FoodItemExtension
:
مثال
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
يسرد الجدول التالي سمات النوع FoodItemOption
:
الموقع | النوع | الوصف | |
---|---|---|---|
id |
String |
المعرّف الفريد الذي تحدّده Google عند إرسال FoodOrderError أو AsyncOrderUpdateRequest، استخدِم هذا الحقل للتمييز في الحالات التي تحتوي فيها سلة التسوّق على أكثر من سلعة واحدة بالمعرّف offerId نفسه. مثلاً: |
|
offerId |
String |
معرّف العرض الترويجي للسلعة. مثلاً: |
|
name |
String |
اسم الخيار مثلاً: |
|
price |
Money |
||
note |
String |
ملاحظة ذات صلة بالخيار |
|
quantity |
Number |
بالنسبة إلى الخيارات التي تكون عناصر، عدد العناصر. مثلاً: |
|
subOptions |
قائمة<FoodItemOption > |
الخيارات الفرعية للخيار، إن توفّرت مثلاً: |
يوضّح المثال التالي عنصر 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 | تكون هذه السمة مطلوبة عند
هذا الحقل مطلوب للأخطاء على مستوى السلعة. وهو المعرّف الذي تحدّده Google لعناصر القائمة أو FoodItemOption.id للعناصر الإضافية. |
|
description |
String |
وصف الخطأ هذا الوصف مخصّص للتسجيل الداخلي ولا يظهر للمستخدمين. |
|
updatedPrice |
Money |
تكون هذه السمة مطلوبة عند
السعر الجديد للسلعة التي تسبّبت في الخطأ لا يكون هذا الحقل مطلوبًا إلا عندما يكون الخطأ هو PRICE_CHANGED. |
|
availableQuantity |
عدد صحيح | تكون هذه السمة مطلوبة عند
الكمية الجديدة المتوفّرة للسلعة التي تسبّبت في الخطأ لا يكون هذا الإجراء مطلوبًا إلا عندما يكون الخطأ "INVALID" أو "NOT_FOUND". يجب أن تكون القيمة صفرًا لكل من "INVALID" و "NOT_FOUND". |
يوضّح المثال التالي عنصر FoodOrderError
:
مثال 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
مثال 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
يحتوي على معلومات حول الطلب.
يسرد الجدول التالي سمات النوع FoodOrderExtension
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
Const |
نوع هذه الإضافة. يتم دائمًا ضبط هذا الحقل على "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". القيمة: |
|
availableFulfillmentOptions |
قائمة<FulfillmentOption > |
يمثّل خيارات توصيل الطلبات المتاحة للطلب. |
|
optinForRemarketing |
صحيح/خطأ |
طلب المستخدم تفعيل قنواتك التسويقية لا يمكنك إرسال محتوى تسويقي تلقائيًا بدون موافقة المستخدم. إذا كانت قيمة optinForRemarketing صحيحة، يمكنك اشتراك المستخدم. إذا كان الخيار optinForRemarketing خطأ أو غير متوفّر، يجب إبقاء حالة الاشتراك في نظامك كما هي. لا يمكن للمستخدمين إيقاف الميزة من خلال Google، بل من خلال وظيفة إلغاء الاشتراك المقدَّمة في قنواتك التسويقية فقط. لا تظهر هذه العلامة إلا في SubmitOrderRequestMessage. |
يوضّح المثال التالي عنصر FoodOrderExtension
:
مثال 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
مثال 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
يمكنك استخدام عنصرFulfillmentOption
بالطرق التالية:
-
في
Checkout AppRequest
وSubmit AppRequest
، يُستخدَم العنصرCart.extension.fulfillmentPreference
لتخزين الإعداد المفضّل للمستخدم (توصيل أو استلام). يكون السعر دائمًا 0 عند إرسال طلب الدفع. -
في
Checkout AppResponse
، يحدِّد العنصرProposedOrder.extension.availableFulfillmentOptions
: خيار تسليم واحدًا أو أكثر (يُتاح حاليًا خيار واحد فقط للتسليم). يمكنك تحديد الخيار التلقائي على أنّهLineItem
فيProposedOrder.otherItems
. يجب أن يتطابقofferId
الخاص بملفFulfillmentOption
مع معرّفملفLineItem
المحدّد فيProposedOrder.otherItems
.
يسرد الجدول التالي سمات النوع FulfillmentOption
:
الموقع | النوع | الوصف | |
---|---|---|---|
offerId |
String |
المعرّف الفريد لخيار التسليم هذا، إن توفّر |
|
fulfillmentInfo |
FulfillmentOptionInfo |
مطلوب. |
|
expiresAt |
الطابع الزمني وفقًا لمعيار ISO |
الوقت الذي تنتهي فيه صلاحية خيار التسليم هذا. |
|
price |
Money |
تكلفة هذا الخيار. |
يوضّح المثال التالي عنصر FulfillmentOption
:
مثال
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
لتحديد المعلومات المتعلّقة بـFulfillmentInfo
يسرد الجدول التالي سمات النوع FulfillmentOptionInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة بالضبط من المجموعات التالية من السمات. | |||
delivery |
المجموعة 1 | DeliveryInfo |
تشير إلى طلب التسليم في حال توفّره. |
pickup |
المجموعة 2 | PickupInfo |
يشير إلى طلب استلام في حال توفّره. |
صورة
يسرد الجدول التالي سمات النوع Image
:
الموقع | النوع | الوصف | |
---|---|---|---|
sourceUrl |
String | مطلوب. عنوان URL للصورة يجب ألا يقل حجم الصورة عن 72×72 بكسل. للحصول على أفضل النتائج، استخدِم صورة بحجم 216 x 216 بكسل على الأقل. يجب أن يكون حجم الصورة أقل من 6 ميغابايت وأن تكون بدقة 64 ميغابكسل. |
LineItem
تُستخدَم لتحديد محتوى سلة التسوّق (Cart.lineItems
) أو الرسوم الإضافية لطلب (ProposedOrder.otherItems
).
يسرد الجدول التالي سمات النوع LineItem
:
الموقع | النوع | الوصف | |
---|---|---|---|
id |
String | تكون هذه السمة مطلوبة عند
بالنسبة إلى سلعة في سلة تسوّق (ProposedOrder.cart.lineItems[0].id)، هذا هو المعرّف الفريد الذي أنشأته Google عند إنشاء الطلب. بالنسبة إلى عنصر في ProposedOrder (ProposedOrder.otherItems[0].id)، والذي يُستخدَم لإضافة عناصر مثل رسوم التسليم والضرائب، يحدّد مقدّم الخدمة قيمة المعرّف. على سبيل المثال، تحتوي سلة التسوّق على سلعتَين متطابقتَين تتضمّنان تعليمات تحضير مختلفة (مثل بيتزا متوسطة الحجم مع مجموعتَين مختلفتَين من الإضافات). في هذه الحالة، يحتوي كلا العنصرَين على معرّف العرض الأساسي نفسه. عند إرسال طلب تعديل طلب للإشارة إلى رفض سلعة، استخدِم هذا المعرّف كمزيل للتباس. بعبارة أخرى، إذا تم رفض إحدى الفطائر بسبب عدم توفّر مكونات معيّنة عليها، يساعد المعرّف Google في تحديد السلعة المُشار إليها في الطلب. هذا الحقل مطلوب باستثناء otherItems. |
|
name |
String | مطلوب. اسم العنصر. هذه سلسلة تظهر للمستخدم، ويجب أن تكون بتنسيق الجملة كلما أمكن (مثل "رسوم التسليم" و"رسوم الخدمة" و"الضريبة"). يتم اقتطاع هذا الحقل عند 100 حرف للمستخدمين. |
|
type |
LineItemType |
مطلوب. |
|
quantity |
عدد صحيح | تكون هذه السمة مطلوبة عند
عدد السلع المضمّنة لا ينطبق ذلك على ProposedOrder.otherItems. |
|
description |
String |
وصف السلعة |
|
price |
Price |
مطلوب. سعر السلعة أو السلع تعكس هذه القيمة السعر الإجمالي لجميع السلع أو الخدمات لهذا البند (بمعنى آخر، إضافة تكلفة أي إضافات ومضاعفة الكمية). على سبيل المثال: إذا كان سعر سلعة بقيمة 10 دولار أمريكي هو 3 سلع، سيكون السعر 30 دولار أمريكي. إذا كان سعر البيتزا الأساسية هو 5 ريال سعودي وسعر الإضافة 1 ريال سعودي، سيكون السعر 6 ريال سعودي. إذا كانت سعر كل فطيرة هو 5 ريال سعودي وسعر الإضافة لكل فطيرة هو ريال سعودي واحد، سيكون سعر طلب فطيرتين (الكمية = 2) هو 12 ريال سعودي. يجب أن يكون لكل عنصر سعر، حتى إذا كان السعر "0". عندما يكون النوع DISCOUNT (خصم)، حدِّد القيمة على أنّها سالبة (على سبيل المثال، "-2"). |
|
subLines |
قائمة<SublineNote > |
اختياري وصالح فقط إذا كان النوع "عادي". يمكن إرسال ملاحظة خاصة بالسلعة من المستخدم في هذا الحقل في طلب الدفع وطلب إرسال الطلب. تأكَّد من أنّ التاجر يتلقّى ملاحظتك عند تقديمها. وستظهر في الطلب على النحو التالي: subLines[0].note، وهي القيمة الوحيدة المقدَّمة في هذا الحقل عندما يكون متوفّرًا في الطلب. يجب ألا يتضمّن أكثر من عنصر واحد. |
|
offerId |
String | تكون هذه السمة مطلوبة عند
معرّف العرض الترويجي لعنصر القائمة الخاص بالعنصر. لا ينطبق ذلك على ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
تحدِّد هذه السمة المكونات الإضافية لأصناف الطعام. |
يوضّح المثال التالي عنصر LineItem
:
مثال 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
مثال 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
يحتوي نوع LineItemType
على القيم المحتملة التالية:
REGULAR
: سلعة في فاتورة السلع تنطبق على Cart.lineItems.TAX
: عنصر السطر الضريبي ينطبق على ProposedOrder.otherItems.DISCOUNT
: عنصر الخصم يُرجى العِلم أنّ السعر يجب أن يكون سالبًا. ينطبق على ProposedOrder.otherItems.GRATUITY
: عنصر المكافأة محجوزة بشكل عام لـ SubmitOrderRequestMessage للحصول على معلومات إضافية يختارها المستخدم. ينطبق على ProposedOrder.otherItems.DELIVERY
: عنصر تسليم ينطبق على ProposedOrder.otherItems.SUBTOTAL
: عنصر السطر للإجمالي الفرعي ينطبق على ProposedOrder.otherItems.FEE
: عنصر إضافي لا يندرج ضمن الأنواع الأخرى ينطبق على ProposedOrder.otherItems.
الموقع الجغرافي
تحدِّد عنوانًا لطلب الطعام. يُستخدَم النوعLocation
في
Cart
للإشارة إلى وجهة طلب تسليم فقط.
يظهر الموقع الجغرافي النهائي أيضًا في
TransactionDecisionValue
إذا قدّم المستخدم الطلب. بالنسبة إلى الطلبات التي تحدّد مكان الاستلام،
لا يتم تضمين موقع جغرافي على الإطلاق (حتى لو كان فارغًا).
يسرد الجدول التالي سمات النوع Location
:
الموقع | النوع | الوصف | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
عرض عنوان الموقع الجغرافي مثلاً: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
مثلاً: |
|
city |
String |
اسم المدينة مثلاً: |
|
notes |
String |
ملاحظات حول الموقع الجغرافي، مثل رموز البوابة يجب ألا يزيد عدد الأحرف عن 500 حرف. مثلاً: |
يوضّح المثال التالي عنصر 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 في خلاصة المطاعم. مثلاً: |
|
name |
String | مطلوب. الاسم الذي يظهر للمستخدم للتاجر مثلاً: |
يوضّح المثال التالي عنصر Merchant
:
مثال
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
المال
يسرد الجدول التالي سمات النوع Money
:
الموقع | النوع | الوصف | |
---|---|---|---|
currencyCode |
String | مطلوب. رمز عملة مكوّن من 3 أحرف بتنسيق ISO 4217 مثلاً: |
|
units |
String |
الوحدات الكاملة للمبلغ على سبيل المثال، إذا كان currencyCode هو "USD"، تكون الوحدة "1" دولار أمريكي واحد. مثلاً: |
|
nanos |
عدد صحيح |
عدد وحدات النانو (10^-9) للمبلغ يجب أن تتراوح القيمة بين -999,999,999 و+999,999,999، بما في ذلك هذين الرقمَين. استخدِم القواعد التالية: إذا كانت الوحدات موجبة، يجب أن تكون النانو موجبة أو صفرًا. إذا كانت الوحدات تساوي صفرًا، يمكن أن تكون النانو موجبة أو صفرًا أو سالبة. إذا كانت الوحدات سالبة، يجب أن تكون النانوثانية سالبة أو صفرًا. على سبيل المثال، يتم تمثيل القيمة -1.75 دولار أمريكي على النحو التالي: الوحدات = -1 والنانو = -750,000,000. مثلاً: |
يوضّح المثال التالي عنصر Money
:
مثال 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
مثال 2
{ "currencyCode": "EUR", "units": "10" }
طلب
يحتوي على الطلب النهائي، بما في ذلك الضرائب والرسوم ورسوم التسليم، بالإضافة إلى معلومات الدفع. يتلقّى الإجراء هذا العنصر فيSubmit AppRequest
.
يسرد الجدول التالي سمات النوع Order
:
الموقع | النوع | الوصف | |
---|---|---|---|
finalOrder |
ProposedOrder |
مطلوب. الطلب المقترَح الذي أدّى إلى الطلب. |
|
googleOrderId |
String | مطلوب. معرّف الطلب الذي تحدّده Google يجب أن يكون هذا المعرّف ثابتًا طوال دورة حياة الطلب. لا يظهر هذا المعرّف للمستخدم النهائي. |
|
orderDate |
الطابع الزمني وفقًا لمعيار ISO | مطلوب. تاريخ ووقت إنشاء الطلب |
|
paymentInfo |
PaymentInfo |
مطلوب. معلومات الدفع المرتبطة بدفعة هذا الطلب |
يوضّح المثال التالي عنصر Order
:
مثال
{ "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } }
OrderUpdate
يوضّح الجدول التالي حقول نوع OrderUpdate الذي يكون مضمّنًا فيAppResponse
.
يسرد الجدول التالي سمات النوع OrderUpdate
:
الموقع | النوع | الوصف | |
---|---|---|---|
actionOrderId |
String | مطلوب. المعرّف الفريد للطلب في نظام المُدمِج الذي يُستخدَم لتحديد الطلب الذي يتم إرسال التعديل له. إذا لم يتم تقديم receipt.user_visible_order_id مرة واحدة على الأقل في OrderUpdate لطلب "تم إنشاؤه"، سيكون هذا المعرّف هو المعرّف المعروض للمستخدم الذي تم إدخاله في بطاقة طلب Google. |
|
orderState |
OrderState |
مطلوب. الحالة الجديدة للطلب. |
|
lineItemUpdates |
Map<String, LineItemUpdate > |
||
updateTime |
الطابع الزمني وفقًا لمعيار ISO | مطلوب. الوقت الذي تم فيه تعديل الطلب. |
|
orderManagementActions |
قائمة<OrderManagementAction > |
الإجراءات التي يتم تنفيذها بعد تقديم الطلب، مثل التواصل مع فريق الدعم وعرض تفاصيل الطلب يجب أن يتضمّن عنصرًا واحدًا على الأقل و6 عناصر كحد أقصى. |
|
rejectionInfo |
RejectionInfo |
تكون هذه السمة مطلوبة عند
|
|
cancellationInfo |
CancellationInfo |
تكون هذه السمة مطلوبة عند
|
|
inTransitInfo |
InTransitInfo |
تم إيقاف هذا الحقل نهائيًا. |
|
fulfillmentInfo |
FulfillmentInfo |
تم إيقاف هذا الحقل نهائيًا. |
|
receipt |
Receipt |
تكون هذه السمة مطلوبة عند
يجب تقديم رقم تعريف الطلب المرئي للمستخدم في الإيصال. |
|
totalPrice |
Price |
إجمالي سعر الطلب. |
|
infoExtension |
FoodOrderUpdateExtension |
لتحديد مزيد من التفاصيل حول تعديل الطلب، مثل الفاصل الزمني المقدَّر للتسليم أو الاستلام |
يوضّح المثال التالي عنصر OrderUpdate
:
مثال
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
PickupInfo
يسرد الجدول التالي سمات النوع PickupInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
pickupTimeIso8601 |
String |
الوقت المقدَّر للاستلام، بتنسيق الطابع الزمني ISO 8601: "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" أو تنسيق المدة: "P(n)Y(n)M(n)DT(n)H(n)M(n)S". على سبيل المثال، يمثّل PT90M مدة 90 دقيقة. تشير القيمة التلقائية "PT0M" إلى أنّ وقت الاستلام المفضّل هو في أقرب وقت ممكن. المرجع: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations. استخدِم هذا الحقل لتعديل وقت الاستلام المقدَّر أثناء الردّ على عملية الدفع. مثلاً: |
يوضّح المثال التالي عنصر PickupInfo
:
مثال
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
يسرد الجدول التالي سمات النوع PostalAddress
:
الموقع | النوع | الوصف | |
---|---|---|---|
regionCode |
String | مطلوب. رمز بلد مكوّن من حرفين مثلاً: |
|
postalCode |
String |
تمثّل هذه السمة الرمز البريدي. مثلاً: |
|
administrativeArea |
String |
أعلى تقسيم فرعي إداري يُستخدَم للعناوين البريدية لبلد أو منطقة. يمكن أن يكون ذلك ولاية أو مقاطعة أو إقليمًا أو محافظة. مثلاً: |
|
locality |
String |
المدينة أو البلدة التي يقع بها هذا الموقع الجغرافي في المناطق التي لا تكون فيها المواقع المحلية محدّدة بوضوح أو لا تتوافق مع هذه البنية، لا تحدِّد الموقع المحلي واستخدِم حقل addressLines بدلاً من ذلك. مثلاً: |
|
addressLines |
List<String> |
سطر واحد أو أكثر يمكنك استخدامه لتحديد عنوان الشارع يجب عدم تعديل هذا الحقل لأنّه قد يحتوي على مواقع جغرافية غير واضحة. مثلاً: |
|
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 > |
العناصر التي أضافها مقدّم الخدمة، مثل رسوم التسليم والرسوم الأخرى والضرائب. قد تحتوي سمة otherItems أيضًا على إكرامية و/أو خصم أضافه المستخدم. يجب ألا يتضمّن أكثر من 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 |
Const |
اضبطها على خطأ. القيمة: |
|
finalResponse |
FinalResponse |
مطلوب. يحتوي على ردّك على عملية الدفع في سلة التسوّق. |
يوضّح المثال التالي عنصر AppResponse
:
مثال 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
مثال 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
مثال 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
مثال 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
CheckoutResponseMessage
هو AppResponse
يحتوي على
checkoutResponse
أو error
في
StructuredResponse
.
SubmitOrderResponseMessage
SubmitOrderResponseMessage
هو AppResponse
يحتوي على
orderUpdate
في StructuredResponse
.
FinalResponse
ردّك على صفحة الدفع في سلة التسوّق أو SubmitOrderRequestMessage
يسرد الجدول التالي سمات النوع FinalResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
richResponse |
RichResponse |
مطلوب. يحتوي على ردّك على CheckoutRequestMessage أو SubmitOrderRequestMessage. |
CheckoutResponse
يسرد الجدول التالي سمات النوع CheckoutResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
proposedOrder |
ProposedOrder |
مطلوب. الطلب المقترَح لاستخدامه في المعاملة. |
|
paymentOptions |
PaymentOptions |
مطلوب. خيار الدفع التلقائي الذي تم اختياره للمستخدم |
|
additionalPaymentOptions |
قائمة<PaymentOptions > |
خيارات الدفع البديلة المتاحة للمستخدم |
يوضّح المثال التالي عنصر CheckoutResponse
:
مثال
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
المنتج/الخدمة
يحتوي على ردّك على عملية دفع في سلة التسوق أو رسالة SubmitOrderRequestMessage.
يسرد الجدول التالي سمات النوع Item
:
الموقع | النوع | الوصف | |
---|---|---|---|
structuredResponse |
StructuredResponse |
مطلوب. |
RichResponse
يحتوي على ردّك على عملية دفع في سلة التسوق.
يسرد الجدول التالي سمات النوع RichResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
items |
قائمة<Item > |
مطلوب. يجب أن يتضمّن عنصرًا واحدًا بالضبط. |
StructuredResponse
بالنسبة إلى CheckoutResponseMessage، يمكن أن يكون هذا أحد الخيارَين التاليَين: CheckoutResponse يشير إلى إتمام عملية الدفع بنجاح. أو FoodErrorExtension: يشير إلى حدوث خطأ أثناء الدفع. يمكن أن يتضمّن الردّ ProposedOrder وPaymentOptions معدَّلَين أو رسالة خطأ بدون PaymentOptions. بالنسبة إلى SubmitOrderResponseMessage، لا ينطبق سوى orderUpdate.
يسرد الجدول التالي سمات النوع StructuredResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة بالضبط من المجموعات التالية من السمات. | |||
checkoutResponse |
المجموعة 1 | CheckoutResponse |
السلع التي تمّ شراؤها بالإضافة إلى الضرائب والخصومات |
error |
المجموعة 2 | FoodErrorExtension |
أخطاء تم رصدها في سلة التسوّق استنادًا إلى طبيعة الخطأ، يمكن أن يتضمّن هذا السمة ProposedOrder وPaymentOptions معدَّلَين، أو رسالة خطأ فقط بدون PaymentOptions. |
orderUpdate |
المجموعة 3 | OrderUpdate |
تعديلات الطلبات غير المتزامنة
يوضّح هذا القسم الأنواع العالية المستوى التي تشكّل الطلبات والنتائج لتفاعل نموذجي لطلب الطعام في إجراء مضمّن.AsyncOrderUpdateRequestMessage
إشعار المستخدم بالتغييرات بعد إرسال الطلب وتأكيده على سبيل المثال، يمكنك إبلاغ المستخدم بأنّ الطلب قيد النقل أو إذا كان السعر قد تغيّر. لمزيد من المعلومات، اطلع علىيسرد الجدول التالي سمات النوع AsyncOrderUpdateRequestMessage
:
الموقع | النوع | الوصف | |
---|---|---|---|
isInSandbox |
صحيح/خطأ |
يشير ذلك إلى أنّ الطلب الذي تم إرسال هذا التعديل له هو دفعة في وضع المحاكاة. |
|
customPushMessage |
CustomPushMessage |
مطلوب. يحتوي على OrderUpdate للطلب. |
يوضّح المثال التالي عنصر AsyncOrderUpdateRequestMessage
:
مثال
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
بعد إرسالAsyncOrderUpdateRequestMessage
بنجاح، تردّ Google
بحالة HTTP 200 ونص فارغ. إذا تعذّر إجراء التعديل،
ستردّد Google ردًا يتضمّن تفاصيل عن سبب تعذّر تعديل الطلب.
أنواع تعديلات الطلبات
زرّ
تحدِّد عنصر واجهة مستخدِم يمكنك إضافته لتوفير تفاعل المستخدِم.
يسرد الجدول التالي سمات النوع Button
:
الموقع | النوع | الوصف | |
---|---|---|---|
title |
String | مطلوب. التصنيف المعروض استخدِم حالة أحرف الجملة مع 30 حرفًا أو أقل لضمان العرض الصحيح. مثلاً: |
|
openUrlAction |
OpenUrlAction |
مطلوب. |
يوضّح المثال التالي عنصر Button
:
مثال
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
يسرد الجدول التالي سمات النوع CancellationInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
reason |
String | مطلوب. سبب الرفض القابل للعرض عندما يكون OrderState.state = "CANCELLED" مثلاً: |
يوضّح المثال التالي عنصر CancellationInfo
:
مثال
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
يقدّم هذا النوع للمستخدم فترة زمنية مقدَّرة لوقت تسليم الطلب
أو وقت استعداده للاستلام. أرسِل هذه الإضافة في
OrderUpdate
عندما تكون المعلومات متاحة أو تغيّرت منذ آخر مرة تم إرسالها فيها.
قدِّم تقديرًا متحفظًا للفاصل الزمني للتسليم حتى يتم تلبية توقعات العميل باستمرار. على سبيل المثال، إذا كان من المتوقّع أن يتم تسليم الطلب اليوم في الساعة 13:00، يجب إرسال فاصل زمني مقدَّر يتوافق مع الاختلافات الناتجة عن ظروف حركة المرور، مثل اليوم من الساعة 12:45 إلى الساعة 13:15.
يتم تفسير المدة أو الطابع الزمني بتنسيق ISO 8601 على أنّه الفاصل الزمني من
updateTime
من OrderUpdate
(أي "الآن") إلى
updateTime
بالإضافة إلى duration
.
لا تستخدِم هذا التنسيق ما لم تكن "الآن" توقّعًا معقولاً.
يتم تفسير فاصل ISO 8601 على أنّه الفاصل من البداية إلى نهاية الفاصل.
يسرد الجدول التالي سمات النوع FoodOrderUpdateExtension
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
Const |
نوع هذه الإضافة. يتم دائمًا ضبط هذا الحقل على "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". القيمة: |
|
estimatedFulfillmentTimeIso8601 |
String |
الوقت المقدَّر الذي سيتم فيه تسليم الطلب أو يصبح فيه جاهزًا للاستلام يجب أن تكون السلسلة بتنسيق ISO 8601 وأن تتطابق مع فاصل زمني بدلاً من وقت ثابت واحد. وتشمل الاصطلاحات المقبولة: الفواصل الزمنية والمدد والتواريخ/الأوقات. يمكن إرسال هذا الحقل في رسالة SubmitOrderResponseMessage أو AsyncOrderUpdateRequestMessage عندما تصبح المعلومات متاحة أو يحدث تغيير، مثل الوصول مبكرًا أو متأخرًا. مثلاً: |
|
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 |
استخدام estimatedFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
pickupTime |
المجموعة 2 | الطابع الزمني وفقًا لمعيار ISO |
استخدام estimatedFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
يوضّح المثال التالي عنصر FulfillmentInfo
:
مثال 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
مثال 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
يسرد الجدول التالي سمات النوع InTransitInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
updatedTime |
الطابع الزمني وفقًا لمعيار ISO |
استخدام estimatedFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
يوضّح المثال التالي عنصر InTransitInfo
:
مثال
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
يسرد الجدول التالي سمات النوع LineItemUpdate
:
الموقع | النوع | الوصف | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
سبب التغيير مطلوبة لتغييرات الأسعار. |
يوضّح المثال التالي عنصر LineItemUpdate
:
مثال
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
يسرد الجدول التالي سمات النوع OpenUrlAction
:
الموقع | النوع | الوصف | |
---|---|---|---|
url |
String | مطلوب. الإجراء الذي يتم تشغيله من خلال النقر على الزر أو لمسه تعتمد قائمة البادئات السارية على orderManagementActionType. "EMAIL": يجب أن تكون البادئة "mailto". "CALL": يجب أن تكون البادئة "tel". "CUSTOMER_SERVICE": يجب أن تكون البادئة "mailto" أو "tel" أو "http" أو "https". مثلاً: |
OrderManagementAction
تتيح إدارة الطلبات للمستخدمين الحصول على دعم بعد تقديم الطلب، ويجب إرسالها في كل OrderUpdate
ضمن إرسال طلب العميل
AppResponse
وكل AsyncOrderUpdateRequestMessage
إجراء لاحق لإدارة الطلبات المُرسَل لطلب معيّن يمكن أن يختلف استنادًا إلى الحالة.
على سبيل المثال، في الحالة "تم الإنشاء"، قد يشير CUSTOMER_SERVICE
إلى
رقم هاتف فريق دعم العملاء. بعد ذلك، في الحالة "تم التأكيد"، يمكن تغيير CUSTOMER_SERVICE
إلى رقم هاتف المطعم إذا أصبح ذلك أفضل جهة
اتصال للعميل. وبالمثل، بعد أن يصبح الطلب في الحالة "تم تسليمه"،
يُمكن لفريق CUSTOMER_SERVICE
الرجوع إلى عنوان بريدك الإلكتروني المخصّص للدعم.
يسرد الجدول التالي سمات النوع OrderManagementAction
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
OrderManagementActionType |
مطلوب. |
|
button |
Button |
مطلوب. |
يوضّح المثال التالي عنصر OrderManagementAction
:
مثال 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
مثال 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
تحدِّد الأنواع ذات الصلةOrderManagementAction
.
يحتوي نوع OrderManagementActionType
على القيم المحتملة التالية:
CUSTOMER_SERVICE
: البريد الإلكتروني و/أو رقم الهاتف المخصّصَين لخدمة العملاء والمراد عرضهما في صفحة تأكيد الطلب هذا الإجراء مطلوب. يجب أن تكون بادئة openUrlAction.url هي "mailto" أو "tel" أو "http" أو "https".EMAIL
: يجب أن يظهر الإجراء المتعلق بالبريد الإلكتروني في صفحة تفاصيل الطلب فقط، ويجب أن تكون البادئة openUrlAction.url هي mailto.CALL_DRIVER
: يجب أن يظهر إجراء الاتصال في صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".CALL_RESTAURANT
: يجب أن يظهر إجراء الاتصال في صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".
OrderState
الحالة الحالية للطلب تتوافق كل قيمة state
من OrderState
أيضًا
مع حالة شراء على
myaccount.google.com.
يسرد الجدول التالي سمات النوع OrderState
:
الموقع | النوع | الوصف | |
---|---|---|---|
state |
OrderStateEnum |
مطلوب. |
|
label |
String | مطلوب. سلسلة العرض الظاهرة للمستخدم للحالة استخدِم حالة أحرف الجملة. مثلاً: |
يوضّح المثال التالي عنصر 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 | مطلوب. مطلوبة إذا كانت حالة الطلب "تم التأكيد" أو "قيد النقل" أو "تم تسليمه". هذا الحقل هو المعرّف الوحيد الموجَّه للمستخدم لهذا الطلب (عادةً ما يكون معرّف طلب المطعم)، ويتم عرضه في إيصال المُدمِج وبطاقة طلب Google. يجب أن يتمكّن المستخدم من استخدام هذا المعرّف للإشارة إلى طلبه لخدمة العملاء مع مقدّم الخدمة والمُدمِج. ما عليك سوى تقديم هذا المعرّف مرّة واحدة فقط في أي OrderUpdate معيّن. إلى أن يتم تقديمه، يكون actionOrderId هو userVisibleOrderId. على سبيل المثال، قد لا يتوفّر لديك userVisibleOrderId إلى أن يؤكّد المطعم الطلب. بعد التأكيد، عليك إرسال 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 | مطلوب. اسم طريقة الدفع المعروضة في الإيصال مثلاً: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
بيانات إضافية لـ paymentType "ON_FULFILLMENT" على سبيل المثال، يمكنك استخدام هذا الحقل لتحديد ما إذا كان الدفع نقدًا أو بالبطاقة متاحًا عند التسليم. |
يوضّح المثال التالي عنصر ActionProvidedPaymentOptions
:
مثال
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
يحتوي نوع AllowedAuthMethods
على القيم المحتملة التالية:
-
PAN_ONLY
: طريقة المصادقة المرتبطة ببطاقات الدفع المخزّنة في ملف مرتبط بحساب المستخدم على Google. تتضمّن بيانات الدفع المُسترَدة رقم الحساب الشخصي (PAN) مع شهر انتهاء الصلاحية وسنة انتهاء الصلاحية.
AllowedCardNetworks
يحتوي نوع AllowedCardNetworks
على القيم المحتملة التالية:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
يتيح لك هذا العنصر ضبط حقول إضافية ليتم عرضها لعنوان الفوترة المطلوب.
يسرد الجدول التالي سمات النوع BillingAddressParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
format |
String |
يجب إدخال تنسيق عنوان إرسال الفواتير لإكمال المعاملة. MIN: الاسم ورمز البلد والرمز البريدي كامل: الاسم وعنوان الشارع والموقع الجغرافي والمنطقة ورقم تعريف البلد والرمز البريدي |
يوضّح المثال التالي عنصر BillingAddressParameters
:
مثال 1
{ "format": "MIN" }
مثال 2
{ "format": "FULL" }
CardParameters
استخدِم هذا العنصر لضبط إعدادات موقعك الإلكتروني للتوافق مع Google Pay API.
يسرد الجدول التالي سمات النوع CardParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
allowedAuthMethods |
List<Const> | مطلوب. الحقول المتوافقة للمصادقة على معاملة بطاقة يجب أن يتضمّن عنصرًا واحدًا على الأقل. |
|
allowedCardNetworks |
قائمة<AllowedCardNetworks > |
مطلوب. شبكة بطاقات واحدة أو أكثر تتيحها أنت وتتوافق أيضًا مع Google Pay API يجب أن يتضمّن عنصرًا واحدًا على الأقل. |
|
billingAddressRequired |
صحيح/خطأ |
اضبطها على true إذا كنت بحاجة إلى عنوان إرسال الفواتير. لا تطلب عنوان إرسال الفواتير إلا إذا كان ذلك مطلوبًا لمعالجة المعاملة. يمكن أن تزيد طلبات البيانات الإضافية من الصعوبات في عملية الدفع وتؤدي إلى انخفاض معدّلات الإحالات الناجحة. |
|
billingAddressParameters |
BillingAddressParameters |
الحقول المتوقّعة التي يتم عرضها إذا تم ضبط billingAddressRequired على true |
|
cvcRequired |
صحيح/خطأ |
اضبط القيمة على true في حال استخدام TimesofMoney، واضبطها على false لجميع معالجات الدفع الأخرى. |
يوضّح المثال التالي عنصر CardParameters
:
مثال 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
مثال 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
يسرد الجدول التالي سمات النوع GoogleProvidedPaymentInstrument
:
الموقع | النوع | الوصف | |
---|---|---|---|
instrumentToken |
String | مطلوب. سلسلة مشفّرة بترميز Base64 تحتوي على رمز الدفع لشحن رسوم من المستخدم من خلال جهة معالجة مشاركة في Google Pay، وفقًا لخيارات GoogleProvidedPaymentOptions المحدّدة سابقًا. |
|
billingAddress |
PostalAddress |
عنوان إرسال الفواتير للدفع |
يوضّح المثال التالي عنصر GoogleProvidedPaymentInstrument
:
مثال
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
متطلبات طريقة الدفع التي تقدّمها Google
يسرد الجدول التالي سمات النوع GoogleProvidedPaymentOptions
:
الموقع | النوع | الوصف | |
---|---|---|---|
facilitationSpecification |
String |
ملف JSON بتنسيق PaymentDataRequest كسلسلة استخدِم هذا العنصر لضبط إعدادات موقعك الإلكتروني للتوافق مع Google Pay API. |
|
supportedCardNetworks |
قائمة<SupportedCardNetworks > |
استخدِم facilitationSpecification بدلاً من ذلك. نوع شبكات البطاقات المتوافقة مع موظّف الدعم تم إيقاف هذا الحقل نهائيًا. |
|
prepaidCardDisallowed |
صحيح/خطأ |
استخدِم facilitationSpecification بدلاً من ذلك. ما إذا كان يُسمح باستخدام بطاقة مسبقة الدفع كنوع من أنواع الدفع تم إيقاف هذا الحقل نهائيًا. |
|
billingAddressRequired |
صحيح/خطأ |
استخدِم facilitationSpecification بدلاً من ذلك. ما إذا كان عنوان إرسال الفواتير مطلوبًا أم لا تم إيقاف هذا الحقل نهائيًا. |
|
tokenizationParameters |
TokenizationParameters |
تم إيقاف هذا الحقل نهائيًا. |
يوضّح المثال التالي عنصر GoogleProvidedPaymentOptions
:
مثال 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
مثال 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
مثال 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
استخدِم هذا العنصر لضبط إعدادات موقعك الإلكتروني للتوافق مع Google Pay API.
يسرد الجدول التالي سمات النوع MerchantInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
merchantId |
String |
معرّف التاجر في Google الذي أصدرته لك خدمة Google Pay |
|
merchantName |
String | مطلوب. اسم التاجر بترميز UTF-8 يتم عرض اسم التاجر في جدول الدفع. |
OnFulfillmentPaymentData
استخدِم هذا العنصر لإرسال بيانات إضافية لسمة PaymentType "ON_FULFILLMENT".
يسرد الجدول التالي سمات النوع OnFulfillmentPaymentData
:
الموقع | النوع | الوصف | |
---|---|---|---|
supportedPaymentOptions |
قائمة<PaymentOptionsEnums > |
قائمة خيارات الدفع المتاحة للمستخدم في وقت تسليم الطلب |
يوضّح المثال التالي عنصر OnFulfillmentPaymentData
:
مثال
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
المعلمات
تحدِّد الأنواع ذات الصلة TokenizationParameters
.
يسرد الجدول التالي سمات النوع Parameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
gateway |
String | مطلوب. مثلاً: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | أزواج مفتاح/قيمة إضافية |
يوضّح المثال التالي عنصر Parameters
:
مثال 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
مثال 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
استخدِم هذا العنصر لضبط إعدادات موقعك الإلكتروني للتوافق مع Google Pay API.
يسرد الجدول التالي سمات النوع PaymentDataRequest
:
الموقع | النوع | الوصف | |
---|---|---|---|
apiVersion |
Const | مطلوب. رقم الإصدار الرئيسي لواجهة برمجة التطبيقات القيمة: |
|
apiVersionMinor |
Const | مطلوب. الإصدار الثانوي لواجهة برمجة التطبيقات القيمة: |
|
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 |
Const | مطلوب. معرّف قصير لطريقة الدفع المتوافقة لا تتوفّر حاليًا سوى بطاقات الائتمان. القيمة: |
|
parameters |
CardParameters |
مطلوب. المَعلمات المطلوبة لضبط نوع طريقة الدفع المقدَّمة |
|
tokenizationSpecification |
TokenizationSpecification |
مطلوب. عليك إعداد حساب أو مقدّم خدمة فك التشفير لتلقّي معلومات الدفع. يجب استخدام هذه السمة لطريقة الدفع CARD. |
يوضّح المثال التالي عنصر PaymentMethod
:
مثال
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
يسرد الجدول التالي سمات النوع PaymentOptions
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة بالضبط من المجموعات التالية من السمات. | |||
googleProvidedOptions |
المجموعة 1 | GoogleProvidedPaymentOptions |
متعارض مع actionProvidedOptions. استخدِم هذا الرمز للدفع على الإنترنت باستخدام gPay. |
actionProvidedOptions |
المجموعة 2 | ActionProvidedPaymentOptions |
سمة متعارضة مع googleProvidedOptions. استخدِم هذا الخيار لميزة "الدفع نقدًا عند الاستلام" أو "الدفع عند التسليم". |
يوضّح المثال التالي عنصر PaymentOptions
:
مثال 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
مثال 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
مثال 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
يحتوي نوع PaymentOptionsEnums
على القيم المحتملة التالية:
Cash
Card
UPI
Paytm
PaymentType
يحتوي نوع PaymentType
على القيم المحتملة التالية:
-
PAYMENT_CARD
: لعنصر GoogleProvidedPaymentOptions ON_FULFILLMENT
: لعنصر ActionProvidedPaymentOptions.
SupportedCardNetworks
تحدِّد الأنواع ذات الصلةGoogleProvidedPaymentOptions
.
يحتوي نوع SupportedCardNetworks
على القيم المحتملة التالية:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
يحدِّد الأنواع ذات الصلةGoogleProvidedPaymentOptions
.
يسرد الجدول التالي سمات النوع TokenizationParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
مطلوب. استخدِم facilitationSpecification بدلاً من ذلك. نوع الرموز المقبولة |
|
parameters |
Parameters |
استخدِم facilitationSpecification بدلاً من ذلك. |
TokenizationSpecification
يتيح لك هذا العنصر ضبط حساب لتلقّي معلومات دفعات قابلة للفوترة.
يسرد الجدول التالي سمات النوع TokenizationSpecification
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
Const | مطلوب. |
|
parameters |
Parameters |
مطلوب. |
يوضّح المثال التالي عنصر TokenizationSpecification
:
مثال 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
مثال 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
يصف هذا العنصر معاملة تحدّد قدرة المدفوع عنه على الدفع. ويُستخدَم لعرض مربّع حوار تفويض الدفع.
يسرد الجدول التالي سمات النوع TransactionInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
currencyCode |
String | مطلوب. رمز العملة الأبجدي وفقًا لمعيار ISO 4217 |
|
transactionId |
String |
معرّف فريد يحدّد محاولة إجراء معاملة. يمكن للتجّار استخدام مستند تعريف حالي أو إنشاء مستند تعريف محدّد لمحاولات إجراء معاملات Google Pay. هذا الحقل مطلوب عند إرسال عمليات استدعاء إلى Google Transaction Events API. |
|
totalPriceStatus |
Const | مطلوب. استخدِم "ESTIMATED" كقيمة تلقائية. قد يتم تعديل السعر الإجمالي استنادًا إلى تفاصيل الردّ، مثل ضريبة المبيعات التي يتم تحصيلها استنادًا إلى عنوان إرسال الفواتير. القيمة: |
|
totalPrice |
String | مطلوب. إجمالي القيمة النقدية للمعاملة مع دقة اختيارية للموضعَين العشريَين يجب أن يكون لهذا الحقل القيمة نفسها التي يحملها cart.totalPrice. |
يوضّح المثال التالي عنصر TransactionInfo
:
مثال
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }