أنواع القواعد
سلة التسوق
تحتوي على تفاصيل الطلب، وكذلك ما إذا كان الطلب مخصصًا للاستلام أو التوصيل. تحتوي عربة التسوق أيضًا على تفاصيل التسليم والمزايا وعنوان التسليم. يتم تحديد العنصرCart
في Checkout AppRequest
.
فعليك تضمين نسخة من سلة التسوق في Checkout AppResponse
.
يعرض الجدول التالي خصائص النوع Cart
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
الثابت |
تمثّل هذه السمة نوع هذا الكائن. احذف هذا الحقل إذا كان كائن سلة التسوق الرئيسي جزءًا من 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#builtd_date_and_time_representations. استخدِم هذا الزر لتعديل الوقت المُقدَّر للتسليم أثناء الردّ على صفحة الدفع. مثال: |
يعرض المثال التالي عنصر DeliveryInfo
:
مثال
{ "deliveryTimeIso8601": "PT90M" }
إخلاء المسؤولية
يعرض الجدول التالي خصائص النوع Disclaimer
:
الموقع | النوع | الوصف | |
---|---|---|---|
predefinedMessage |
PredefinedMessage |
مطلوبة. لعرض رسائل إخلاء مسؤولية محدّدة مسبقًا أثناء الدفع |
|
feeAmount |
Money |
سيفرض الشريك رسومًا على التاجر بمبلغ N مقابل هذا الطلب. |
|
feeAmountRange |
FeeAmountRange |
سيفرض الشريك رسومًا على المطعم (من N إلى M) لكل طلب. |
|
feePercent |
Number |
سيحصّل الشريك رسومًا بقيمة N% من التاجر مقابل هذا الطلب. |
|
feePercentRange |
FeePercentRange |
سيحصّل الشريك من التاجر رسومًا تتراوح بين N% وM% لكل طلب. |
يعرض المثال التالي عنصر Disclaimer
:
مثال 1
{ "predefinedMessage": "NEW_YORK_DELIVERY_FEE_TIP_DISCLAIMER" }
مثال 2
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE" }
مثال 3
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercent": 25 }
مثال 4
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feePercentRange": { "minFeePercent": 20, "maxFeePercent": 30 } }
المثال الخامس
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 } }
مثال 6
{ "predefinedMessage": "FEE_CHARGED_TO_RESTAURANT_DISCLOSURE", "feeAmountRange": { "minFeeAmount": { "currencyCode": "AUD", "units": 2, "nanos": 500000000 }, "maxFeeAmount": { "currencyCode": "AUD", "units": 10, "nanos": 0 } } }
خطأ
يحتوي النوع Error
على القيم المحتمَلة التالية:
CLOSED
: المطعم مغلق للعمل في وقت الطلبNO_CAPACITY
: لا تتوفّر سعة خدمة (على سبيل المثال، انقطاع مؤقت بسبب أوقات الذروة).NO_COURIER_AVAILABLE
: تعذّرت معالجة الطلب بسبب عدد موظفي التسليم المحدود.REQUIREMENTS_NOT_MET
: لم يتم استيفاء القيود المفروضة على قبول الطلب (على سبيل المثال، الحد الأدنى لحجم سلة التسوّق).UNAVAILABLE_SLOT
: لا يمكن توصيل الطلب في الطلب المسبق المحدّد في DeliveryInfo أو PickupInfo.OUT_OF_SERVICE_AREA
: يتعذّر تسليم الطلب إلى عنوان المستخدم.PROMO_EXPIRED
: تعذّر تطبيق العرض الترويجي لأنّ صلاحيته.PROMO_NOT_APPLICABLE
: رمز خطأ عام لرصد جميع حالات تعذُّر تطبيق الرمز الترويجي، إذا لم يكن أي من أخطاء الرمز الترويجي الأخرى مناسبةPROMO_NOT_RECOGNIZED
: لم يتم التعرف على رمز القسيمة.PROMO_ORDER_INELIGIBLE
: الطلب الحالي ليس مؤهلاً للحصول على هذه القسيمة.PROMO_USER_INELIGIBLE
: المستخدم الحالي ليس مؤهلاً للحصول على هذه القسيمة.AVAILABILITY_CHANGED
: السلعة لم تعُد متوفّرة أو لا توجد عناصر كافية لتلبية الطلبINCORRECT_PRICE
: أخطاء في السعر أو إجمالي الرسومINVALID
: يحتوي العنصر LineItem أو FulfillmentOption أو العرض الترويجي على بيانات غير صالحة.NOT_FOUND
: تعذّر العثور على عنصر LineItem أو FulfillmentOption أو عرض ترويجي.PRICE_CHANGED
: تم تغيير سعر سلعة معيّنة
FeeAmountRange
يعرض الجدول التالي خصائص النوع FeeAmountRange
:
الموقع | النوع | الوصف | |
---|---|---|---|
minFeeAmount |
Money |
الحد الأدنى لمبلغ الرسوم المطلوب تحصيله.. |
|
maxFeeAmount |
Money |
الحد الأقصى لمبلغ الرسوم الذي يتم تحصيله.. |
FeePercentRange
يعرض الجدول التالي خصائص النوع FeePercentRange
:
الموقع | النوع | الوصف | |
---|---|---|---|
minFeePercent |
Number |
يتم تحصيل الحد الأدنى من نسبة الرسوم. |
|
maxFeePercent |
Number |
يتم تحصيل الحد الأقصى لنسبة الرسوم. |
FoodCartExtension
تحتوي على تفاصيل حول المستخدم، مثل الإعدادات المفضّلة لطريقة التنفيذ.
يعرض الجدول التالي خصائص النوع FoodCartExtension
:
الموقع | النوع | الوصف | |
---|---|---|---|
@type |
الثابت |
نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodCartExtension". القيمة: |
|
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 |
الثابت | مطلوبة. نوع هذه الإضافة القيمة: |
|
foodOrderErrors |
القائمة<FoodOrderError > |
مطلوبة. مصفوفة من كائنات FoodOrderError التي تصف الأخطاء التي حدثت. يُنصح بحدوث خطأ واحد في كل سلة تسوّق أو لكل سلعة. يجب ألا يقل عدد السلع عن سلعة واحدة. |
|
correctedProposedOrder |
ProposedOrder |
تكون هذه السمة مطلوبة عند
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 |
الثابت | مطلوبة. نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "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 | تكون هذه السمة مطلوبة عند
يجب ملء هذا الحقل للأخطاء على مستوى السلعة. وهو LineItem.id الذي تعينه 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 |
الثابت |
نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension". القيمة: |
|
availableFulfillmentOptions |
القائمة<FulfillmentOption > |
يمثّل الخيارات المتاحة لتوصيل الطلب. |
|
optinForRemarketing |
منطقية |
طلب المستخدم الموافقة على قنوات التسويق. وفقًا للإعدادات التلقائية، لا يمكنك إرسال المحتوى التسويقي بدون موافقة المستخدم. وإذا كانت المعلمةoptinForتجديد النشاط التسويقي صحيحة، يمكنك اشتراك المستخدم. إذا كانت المعلمةoptinForتجديد النشاط التسويقي خاطئة أو غير موجودة، يجب عليك الاحتفاظ بحالة الاشتراك في نظامك كما هي. ولا يمكن للمستخدمين إيقاف هذه الميزة من خلال Google، فقط من خلال وظيفة إلغاء الاشتراك المتوفرة في قنواتك التسويقية. لا تتوفّر هذه العلامة إلا في SendOrderRequestMessage. |
يعرض المثال التالي عنصر FoodOrderExtension
:
مثال 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
مثال 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
يمكنك استخدام الكائنFulfillmentOption
بالطرق التالية:
-
في
Checkout AppRequest
وSubmit AppRequest
،Cart.extension.fulfillmentPreference
: يتم تخزين الخيار الذي يفضّله المستخدم (توصيل أو استلام). يكون السعر دائمًا 0 عند إرسال طلب الدفع. -
في
Checkout AppResponse
، السمةProposedOrder.extension.availableFulfillmentOptions
: تحدّد خيارًا واحدًا أو أكثر من خيارات التسليم (يتوفّر حاليًا خيار واحد فقط). يتم تحديد الخيار التلقائي على أنّهLineItem
فيProposedOrder.otherItems
. يجب أن تتطابق السمةofferId
للسمةFulfillmentOption
مع رقم تعريفLineItem
المحدّد في السمةProposedOrder.otherItems
.
يعرض الجدول التالي خصائص النوع FulfillmentOption
:
الموقع | النوع | الوصف | |
---|---|---|---|
offerId |
String |
معرّف فريد لخيار تنفيذ الطلب هذا، إن توفّر. |
|
fulfillmentInfo |
FulfillmentOptionInfo |
مطلوبة. |
|
expiresAt |
الطابع الزمني لمعيار ISO |
الوقت الذي تنتهي فيه صلاحية خيار تنفيذ الطلب هذا |
|
price |
Money |
تكلفة هذا الخيار. |
يعرض المثال التالي عنصر FulfillmentOption
:
مثال
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
لتعريف المعلومات ذات الصلة بالسمةFulfillmentInfo
.
يعرض الجدول التالي خصائص النوع FulfillmentOptionInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط. | |||
delivery |
المجموعة 1 | DeliveryInfo |
في حال توفّر هذه السمة، تشير إلى طلب التسليم. |
pickup |
المجموعة 2 | PickupInfo |
في حال توفّرها، تشير هذه السمة إلى طلب استلام الطلب. |
صورة
يعرض الجدول التالي خصائص النوع Image
:
الموقع | النوع | الوصف | |
---|---|---|---|
sourceUrl |
String | مطلوبة. عنوان URL للصورة يجب ألا يقل حجم الصورة عن 72x72 بكسل. للحصول على أفضل النتائج، استخدِم صورة لا يقل حجمها عن 216×216 بكسل. يجب أن يكون حجم الصورة أقل من 6 ميغابايت و64 ميغابكسل. |
LineItem
تحدد محتوى سلة التسوّق (Cart.lineItems
) أو الرسوم الإضافية لطلب (ProposedOrder.otherItems
).
يعرض الجدول التالي خصائص النوع LineItem
:
الموقع | النوع | الوصف | |
---|---|---|---|
id |
String | تكون هذه السمة مطلوبة عند
بالنسبة إلى عنصر LineItem في سلة التسوّق (ProposedOrder.cart.lineItems[0].id)، يكون هذا هو المعرّف الفريد الذي تنشئه Google عند إنشاء الطلب. بالنسبة إلى عنصر LineItem في ProposedOrder (ProposedOrder.otherItems[0].id)، الذي يُستخدم لإضافة سلع مثل رسوم التوصيل والضرائب، يحدّد مقدّم الخدمة قيمة المعرّف. على سبيل المثال، يوجد في عربة التسوق قطعتان من نفس العناصر لهما تعليمات تحضير مختلفة (مثل بيتزا متوسطة الحجم بمجموعات مختلفة من الإضافات). في هذه الحالة، يكون لكلّ من العنصرَين معرّف العرض الأساسي نفسه. عند إرسال طلب تعديل طلب للإشارة إلى رفض سلعة ما، استخدِم هذا المعرّف كعامل إزالة للغموض. بمعنى آخر، إذا تم رفض إحدى قطع البيتزا لأنها تفتقر إلى إضافات معيّنة، يساعد المعرّف Google في تحديد العنصر بالترتيب الذي تشير إليه. هذا الحقل مطلوب إلا في otherItems. |
|
name |
String | مطلوبة. تمثّل هذه السمة اسم العنصر. وتكون هذه السلسلة مرئية للمستخدم، ويجب أن تكون في شكل جملة متى أمكن ذلك (مثل "رسوم التسليم" أو "رسوم الخدمة" أو "الضريبة"). يتم اقتطاع هذا الحقل عند 100 حرف للمستخدمين. |
|
type |
LineItemType |
مطلوبة. |
|
quantity |
عدد صحيح | تكون هذه السمة مطلوبة عند
عدد السلع المضمّنة لا يسري ذلك على ProposedOrder.otherItems. |
|
description |
String |
وصف السلعة. |
|
price |
Price |
مطلوبة. سعر السلعة أو السلع. تعكس هذه القيمة السعر الإجمالي لجميع السلع أو الخدمات لهذا العنصر (بمعنى آخر، أضف تكلفة أي إضافات واضربها في الكمية). على سبيل المثال، إذا كانت قيمة سلعة 10 دولار أمريكي (أو ما يعادلها بالعملة المحلية) تتضمّن 3 سلع، سيكون السعر هو 30 دولار أمريكي (أو ما يعادلها بالعملة المحلية). بالنسبة إلى بيتزا واحدة بسعر أساسي 5 دولارات وإضافة دولار واحد، سيكون السعر 6 دولارات. بالنسبة لقطعتين من البيتزا (الكمية = 2) بسعر أساسي 5 دولارات لكل منهما مع إضافة دولار واحد، سيكون السعر 12 دولارًا. يجب أن يكون لكل LineItem سعر، حتى إذا كان السعر "0". عندما يكون النوع DISCOUNT، حدد القيمة على أنها سالبة (على سبيل المثال، "-2"). |
|
subLines |
القائمة<SublineNote > |
اختياري وصالح فقط إذا كان النوع هو "REGULAR". قد يتم إرسال ملاحظة خاصة بالسلعة من المستخدم في هذا الحقل في طلب الدفع وطلب إرسال الطلب. تأكّد من أنّ التاجر يتلقّى الملاحظة عند تقديمها. ستكون في الطلب بالتنسيق subLines[0].note، وهي القيمة الوحيدة المتوفرة في هذا الحقل عند وجودها في أحد الطلبات. يجب ألا يزيد عدد العناصر على عنصر واحد. |
|
offerId |
String | تكون هذه السمة مطلوبة عند
معرّف العرض لـ MenuItem في السلعة. لا يسري ذلك على ProposedOrder.otherItems. |
|
extension |
FoodItemExtension |
تحدد الإضافات لأصناف الطعام. |
يعرض المثال التالي عنصر LineItem
:
مثال 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
مثال 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
يحتوي النوع LineItemType
على القيم المحتمَلة التالية:
REGULAR
: عنصر السلع يسري هذا العرض على Cart.lineItems.TAX
: عنصر الضريبة يسري هذا العرض على ProposedOrder.otherItems.DISCOUNT
: عنصر الخصم ويجب أن يكون السعر سالبًا. يسري هذا العرض على ProposedOrder.otherItems.GRATUITY
: عنصر مجاني تكون هذه السمة محجوزة بشكل عام لـ SendOrderRequestMessage لنصيحة من اختيار المستخدم. يسري هذا العرض على ProposedOrder.otherItems.DELIVERY
: عنصر التسليم يسري هذا العرض على ProposedOrder.otherItems.SUBTOTAL
: عنصر الإجمالي الفرعي يسري هذا العرض على ProposedOrder.otherItems.FEE
: عنصر إضافي لا تغطيه الأنواع الأخرى. يسري هذا العرض على ProposedOrder.otherItems.
الموقع الجغرافي
تحدّد عنوانًا لطلب الطعام. يُستخدم النوعLocation
في Cart
للإشارة إلى وجهة طلب التسليم فقط.
يتوفر الموقع النهائي أيضًا في
TransactionDecisionValue
إذا قدّم المستخدم الطلب. بالنسبة إلى الطلبات التي تحدد الاستلام، لا يتم
تضمين الموقع على الإطلاق (ولا حتى موقعًا فارغًا).
يعرض الجدول التالي خصائص النوع Location
:
الموقع | النوع | الوصف | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
عرض عنوان الموقع الجغرافي. مثال: |
|
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 |
معرّف التاجر يتطابق عنوان URL مع 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، شاملة. يجب استخدام القواعد التالية: إذا كانت الوحدات موجبة، يجب أن تكون قيمة nanos موجبة أو صفرًا. إذا كانت الوحدات صفرًا، فقد تكون قيمة nanos موجبة أو صفر أو سالب. إذا كانت الوحدات سالبة، يجب أن تكون قيمة nanos سالبة أو صفرًا. على سبيل المثال، يتم تمثيل -1.75 دولار كوحدات = -1 و nanos = -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 | مطلوبة. المعرّف الفريد للطلب في نظام الدمج الذي يُستخدَم لتحديد الطلب الذي سيتم إرسال التحديث إليه. في حال عدم تقديم الإيصال.user_visible_order_id مرة واحدة على الأقل في OrderUpdate لطلب "CREATED"، سيكون هذا المعرّف هو المعرّف المرئي للمستخدم الذي تم إدخاله والمعروض في بطاقة الطلب من 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#builtd_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 > |
السلع التي يضيفها مقدّم الخدمة، مثل رسوم التسليم والرسوم الأخرى والضرائب يجب ألا يزيد عدد العناصر عن 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 |
الثابت |
اضبط القيمة على "خطأ". القيمة: |
|
finalResponse |
FinalResponse |
مطلوبة. تحتوي على ردّك على عملية الدفع في سلة التسوّق. |
يعرض المثال التالي عنصر AppResponse
:
مثال 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
مثال 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
مثال 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
مثال 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
CheckoutResponseMessage
هو AppResponse
مع checkoutResponse
أو error
في StructuredResponse
.
SubmitOrderResponseMessage
SubmitOrderResponseMessage
هو AppResponse
مع orderUpdate
في StructuredResponse
.
FinalResponse
ردّك على طلب الدفع في سلة التسوّق أو SendOrderRequestMessage
يعرض الجدول التالي خصائص النوع FinalResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
richResponse |
RichResponse |
مطلوبة. تحتوي على ردّك على CheckoutRequestMessage أو SendOrderRequestMessage. |
CheckoutResponse
يعرض الجدول التالي خصائص النوع CheckoutResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
proposedOrder |
ProposedOrder |
مطلوبة. الطلب المُقترَح للاستخدام في المعاملة. |
|
paymentOptions |
PaymentOptions |
مطلوبة. تم تحديد خيار الدفع التلقائي للمستخدم. |
|
additionalPaymentOptions |
القائمة<PaymentOptions > |
خيارات الدفع البديلة المتوفرة للمستخدم. |
يعرض المثال التالي عنصر CheckoutResponse
:
مثال
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
المنتج/الخدمة
تحتوي على ردّك على طلب الدفع في سلة التسوّق أو SendOrderRequestMessage.
يعرض الجدول التالي خصائص النوع Item
:
الموقع | النوع | الوصف | |
---|---|---|---|
structuredResponse |
StructuredResponse |
مطلوبة. |
RichResponse
تحتوي على ردّك على عملية الدفع في سلة التسوّق.
يعرض الجدول التالي خصائص النوع RichResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
items |
القائمة<Item > |
مطلوبة. يجب أن يحتوي على عنصر واحد بالضبط. |
StructuredResponse
بالنسبة إلى CheckoutResponseMessage، يمكن أن يكون ذلك واحدًا مما يلي: تشير CheckoutResponse إلى نجاح عملية الدفع. أو FoodErrorExtension: تشير إلى حدوث عطل أثناء عملية الدفع. يمكن أن يتضمّن الردّ رسالة ProposedOrder and PaymentOptions مُصحَّحة أو رسالة خطأ لا تتضمّن PaymentOptions. بالنسبة إلى SendOrderResponseMessage، لا يسري الأمر إلا على orderUpdate.
يعرض الجدول التالي خصائص النوع StructuredResponse
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط. | |||
checkoutResponse |
المجموعة 1 | CheckoutResponse |
تم دفع رسوم السلع بالإضافة إلى الضرائب والخصومات. |
error |
المجموعة 2 | FoodErrorExtension |
الأخطاء التي تمّت ملاحظتها في سلع سلة التسوّق استنادًا إلى طبيعة الخطأ، يمكن أن تتضمّن هذه السمة نص ProposedOrder وPaymentOptions الذي تم تصحيحه، أو قد تتضمّن فقط رسالة خطأ بدون خيارات Payments. |
orderUpdate |
المجموعة 3 | OrderUpdate |
تعديلات الطلب غير المتزامنة
يصف هذا القسم الأنواع عالية المستوى التي تشكل الطلبات والردود الخاصة بتفاعل الإجراء المدمج النموذجي لطلب الطعام.AsyncOrderUpdateRequestMessage
لإعلام المستخدم بالتغييرات بعد إرسال طلب وتأكيده. على سبيل المثال، يمكنك إبلاغ المستخدم بأنّ الطلب قيد النقل أو إذا تغيّر السعر. لمزيد من المعلومات، اطلع علىيعرض الجدول التالي خصائص النوع AsyncOrderUpdateRequestMessage
:
الموقع | النوع | الوصف | |
---|---|---|---|
isInSandbox |
منطقية |
يشير إلى أن الطلب الذي تم إرسال هذا التعديل من أجله كان عبارة عن دفع في وضع الحماية. |
|
customPushMessage |
CustomPushMessage |
مطلوبة. يحتوي على OrderUpdate للطلب. |
يعرض المثال التالي عنصر AsyncOrderUpdateRequestMessage
:
مثال
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
بعد إرسالAsyncOrderUpdateRequestMessage
بنجاح، يستجيب محرّك بحث Google
بحالة HTTP 200 ونص فارغ. إذا لم ينجح التعديل،
يرد على فريق Google تفاصيل عن سبب إخفاق تعديل الطلب.
أنواع تعديلات الطلبات
زرّ
تحدد عنصر واجهة مستخدم يمكنك إضافته لتوفير تفاعل المستخدم.
يعرض الجدول التالي خصائص النوع Button
:
الموقع | النوع | الوصف | |
---|---|---|---|
title |
String | مطلوبة. تصنيف العرض استخدِم عددًا لا يزيد عن 30 حرفًا في الجملة لضمان العرض الصحيح. مثال: |
|
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 |
الثابت |
نوع هذه الإضافة يتم ضبط هذا الحقل دائمًا على "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension". القيمة: |
|
estimatedFulfillmentTimeIso8601 |
String |
تمثّل هذه السمة الوقت المقدَّر الذي سيتم فيه تسليم الطلب أو يكون جاهزًا للاستلام فيه. يجب أن تكون السلسلة بتنسيق ISO 8601 ويجب أن تتوافق مع فاصل وليس وقتًا ثابتًا واحدًا. الاصطلاحات المقبولة هي: الفواصل الزمنية والمدد والتواريخ/الأوقات. يمكن إرسال هذا الحقل في SendOrderResponseMessage أو 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 |
استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
pickupTime |
المجموعة 2 | الطابع الزمني لمعيار ISO |
استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
يعرض المثال التالي عنصر FulfillmentInfo
:
مثال 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
مثال 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
يعرض الجدول التالي خصائص النوع InTransitInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
updatedTime |
الطابع الزمني لمعيار ISO |
استخدام القيمة المقدَّرةFulfillmentTimeIso8601 في رسالة FoodOrderingUpdateExtension |
يعرض المثال التالي عنصر InTransitInfo
:
مثال
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
يعرض الجدول التالي خصائص النوع LineItemUpdate
:
الموقع | النوع | الوصف | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
سبب التغيير. مطلوبة عند تغيير الأسعار. |
يعرض المثال التالي عنصر LineItemUpdate
:
مثال
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
يعرض الجدول التالي خصائص النوع OpenUrlAction
:
الموقع | النوع | الوصف | |
---|---|---|---|
url |
String | مطلوبة. الإجراء الذي تم تشغيله من خلال النقر على الزر أو لمسه. تعتمد قائمة البادئات السارية على orderManagementActionType. "EMAIL": يجب أن تكون البادئة "mailto". "CALL": يجب أن تكون البادئة "tel". "CUSTOMER_SERVICE": يجب أن تكون البادئة "mailto" أو "tel" أو "http" أو "https". مثال: |
OrderManagementAction
تتيح ميزة "إدارة الطلبات" للمستخدمين الحصول على خدمة دعم ما بعد الطلبات، ويجب إرسالهم في كل OrderUpdate
ضمن الطلب المُرسَل
AppResponse
وبكل
AsyncOrderUpdateRequestMessage
إجراءات لاحقة لإدارة الطلبات يتم إرسالها لطلب معيّن استنادًا إلى
الحالة.
على سبيل المثال، في الحالة "تم الإنشاء"، قد يشير CUSTOMER_SERVICE
إلى
رقم هاتف دعم العملاء الخاص بك. وبعد ذلك، إذا كانت الحالة "مؤكّدة"، يمكن أن يتم تغيير رقم الهاتف CUSTOMER_SERVICE
إلى رقم هاتف المطعم إذا أصبح ذلك أفضل نقطة تواصل
مع العميل. وبالمثل، عندما يصبح الطلب في حالة "FULFILLED"، يمكن
أن يذكر CUSTOMER_SERVICE
عناوين البريد الإلكتروني لفريق الدعم.
يعرض الجدول التالي خصائص النوع OrderManagementAction
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
OrderManagementActionType |
مطلوبة. |
|
button |
Button |
مطلوبة. |
يعرض المثال التالي عنصر OrderManagementAction
:
مثال 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
مثال 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
تحدّد الأنواع ذات الصلة بـOrderManagementAction
.
يحتوي النوع OrderManagementActionType
على القيم المحتمَلة التالية:
CUSTOMER_SERVICE
: عنوان البريد الإلكتروني و/أو رقم الاتصال بخدمة العملاء الظاهر على صفحة تأكيد الطلب. هذا مطلوب. يجب أن تكون البادئة openUrlAction.url هي "mailto" أو "tel" أو "http" أو "https".EMAIL
: يتم اتخاذ إجراء بالبريد الإلكتروني على صفحة تفاصيل الطلب فقط، ويجب أن تكون البادئة openUrlAction.url هي "mailto".CALL_DRIVER
: إجراء مكالمة على صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".CALL_RESTAURANT
: إجراء مكالمة على صفحة تفاصيل الطلب فقط. يجب أن تكون البادئة openUrlAction.url هي "tel".
OrderState
الحالة الحالية للطلب. تتوافق كل قيمة state
للسمة OrderState
أيضًا
مع حالة الشراء على
myaccount.google.com.
يعرض الجدول التالي خصائص النوع OrderState
:
الموقع | النوع | الوصف | |
---|---|---|---|
state |
OrderStateEnum |
مطلوبة. |
|
label |
String | مطلوبة. سلسلة العرض المرئية للمستخدم للحالة استخدِم حالة أحرف الجملة. مثال: |
يعرض المثال التالي عنصر OrderState
:
مثال
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
تحدّد الأنواع ذات الصلة بـOrderState
.
يحتوي النوع OrderStateEnum
على القيم المحتمَلة التالية:
CREATED
: الطلب الذي تم إنشاؤه من قِبل الشركة المدمَجة وفي انتظار التأكيد من قِبل مقدّم الخدمة. يتطابق مع حالة الشراء "تم الطلب".CONFIRMED
: تم تأكيد الطلب من قِبل مقدّم الخدمة وهو نشط. يتطابق مع حالة الشراء "مقبولة".REJECTED
: تم رفض الطلب من قِبل شركة الدمج أو مزوّد الخدمة. يتطابق مع حالة الشراء "مرفوضة".CANCELLED
: ألغى المستخدم الطلب. يتطابق مع حالة الشراء "تم الإلغاء".IN_PREPARATION
: يتم الآن تحضير الطعام. يتطابق مع حالة الشراء "الحالة غير معروفة".READY_FOR_PICKUP
: الطعام جاهز للاستلام. يتطابق مع حالة الشراء "جاهز للاستلام".IN_TRANSIT
: يتم حاليًا تسليم الطلب. يتطابق مع حالة الشراء "قيد التقدّم".FULFILLED
: تلقّى المستخدم ما تم طلبه. يتطابق مع حالة الشراء "تم الاستلام".
إيصال
أرسِل هذا النوع في طلب إرسالAppResponse
،
حيث تكون قيمة OrderState
"مؤكدة" أو "تم التعبئة" أو "IN_TRANSIT". أرسِل الإيصال عند توفُّر userVisibleOrderId
. لن تحتاج إلى الاستمرار في إرسال
الإيصال في التحديثات اللاحقة.
يعرض الجدول التالي خصائص النوع Receipt
:
الموقع | النوع | الوصف | |
---|---|---|---|
userVisibleOrderId |
String | مطلوبة. تكون هذه السمة مطلوبة إذا كان الطلب هو "CONFIRMED" أو "IN_TRANSIT" أو "FULFILLED". هذا الحقل هو رقم التعريف الفردي الموجَّه إلى المستخدم لهذا الطلب (عادةً ما يكون مُعرّف الطلب الخاص بالمطعم)، ويظهر في كل من إيصال شركة الدمج وبطاقة طلب Google. ويجب أن يتمكّن المستخدم من استخدام هذا المعرّف للإشارة إلى طلبه الخاص بخدمة العملاء مع مقدّم الخدمة وشركة الدمج. ما عليك سوى تقديم هذا المعرّف مرة واحدة في أيّ من عمليات طلب مُحدّدة. يكون ActionOrderId هو userVisualOrderId إلى أن يتم توفيرها. على سبيل المثال، قد لا يتوفّر لديك userمرئيOrderId إلى أن يؤكّد المطعم الطلب. بعد التأكيد، يجب إرسال AsyncOrderUpdateRequestMessage مع OrderUpdate وإيصال. |
يعرض المثال التالي عنصر Receipt
:
مثال
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
يعرض الجدول التالي خصائص النوع RejectionInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
RejectionType |
مطلوبة. |
|
reason |
String |
سبب الرفض المستخدَم في التسجيل الداخلي. هذا الحقل غير مرئي للمستخدمين. |
يعرض المثال التالي عنصر RejectionInfo
:
مثال
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
يحتوي النوع RejectionType
على القيم المحتمَلة التالية:
INELIGIBLE
: المستخدم غير مؤهَّل بسبب مخاوف متعلّقة بالسياسة أو المخاطر.PAYMENT_DECLINED
: حدثت مشكلة في معالجة الدفعة.UNAVAILABLE_SLOT
: لا يمكن توصيل الطلب في الطلب المسبق المحدّد في DeliveryInfo أو PickupInfo.PROMO_NOT_APPLICABLE
: حدثت مشكلة في العرض الترويجي.UNKNOWN
: أي سبب آخر
الأنواع المتعلقة بالدفع
يصف هذا القسم الأنواع المتعلقة بالدفع المستخدمة لتلبية طلب الطعام.ActionProvidedPaymentOptions
متطلبات طريقة الدفع المقدَّمة إجراءً.
يعرض الجدول التالي خصائص النوع ActionProvidedPaymentOptions
:
الموقع | النوع | الوصف | |
---|---|---|---|
paymentType |
PaymentType |
مطلوبة. |
|
displayName |
String | مطلوبة. اسم وسيلة الدفع المعروض على الإيصال مثال: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
بيانات إضافية لنوع الدفع "ON_FULFILLMENT". على سبيل المثال، يمكنك استخدام هذا الحقل لتحديد ما إذا كان يمكن الدفع نقدًا أو باستخدام البطاقة. |
يعرض المثال التالي عنصر ActionProvidedPaymentOptions
:
مثال
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
يحتوي النوع AllowedAuthMethods
على القيم المحتمَلة التالية:
PAN_ONLY
: طريقة المصادقة المرتبطة ببطاقات الدفع المخزّنة في ملف في حساب المستخدم على Google تتضمن بيانات الدفع التي تم إرجاعها رقم الحساب الشخصي (PAN) مع شهر انتهاء الصلاحية وسنة انتهاء الصلاحية.
AllowedCardNetworks
يحتوي النوع AllowedCardNetworks
على القيم المحتمَلة التالية:
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
يتيح لك هذا العنصر إعداد حقول إضافية يتم عرضها لعنوان إرسال الفواتير المطلوب.
يعرض الجدول التالي خصائص النوع BillingAddressParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
format |
String |
يجب إدخال تنسيق عنوان إرسال الفواتير لإكمال المعاملة. MIN: الاسم ورمز البلد والرمز البريدي. كاملة: الاسم وعنوان الشارع والمنطقة المحلية والمنطقة ورمز البلد والرمز البريدي. |
يعرض المثال التالي عنصر BillingAddressParameters
:
مثال 1
{ "format": "MIN" }
مثال 2
{ "format": "FULL" }
CardParameters
يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.
يعرض الجدول التالي خصائص النوع CardParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
allowedAuthMethods |
List<Const> | مطلوبة. الحقول المتاحة لمصادقة معاملة البطاقة يجب ألا يقل عدد السلع عن سلعة واحدة. |
|
allowedCardNetworks |
القائمة<AllowedCardNetworks > |
مطلوبة. شبكة بطاقات واحدة أو أكثر تدعمها واجهة برمجة تطبيقات Google Pay API أيضًا يجب ألا يقل عدد السلع عن سلعة واحدة. |
|
billingAddressRequired |
منطقية |
اضبطه على "صحيح" إذا كنت تطلب عنوان إرسال فواتير. لا تطلب عنوان إرسال الفواتير إلا إذا كان ذلك مطلوبًا لمعالجة المعاملة. يمكن أن تؤدي طلبات البيانات الإضافية إلى زيادة الصعوبات في عملية الدفع وانخفاض معدلات الإحالات الناجحة. |
|
billingAddressParameters |
BillingAddressParameters |
يتم عرض الحقول المتوقّعة في حال ضبط billingAddressDemand على "صحيح". |
|
cvcRequired |
منطقية |
يمكنك ضبط القيمة على "صحيح" في حال استخدام TimesofMoney، وضبطها على "false" في جميع الجهات الأخرى المسؤولة عن معالجة المعاملات. |
يعرض المثال التالي عنصر CardParameters
:
مثال 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
مثال 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
يعرض الجدول التالي خصائص النوع GoogleProvidedPaymentInstrument
:
الموقع | النوع | الوصف | |
---|---|---|---|
instrumentToken |
String | مطلوبة. سلسلة Base 64 المشفرة والتي تحتوي على الرمز المميز للدفع مقابل تحصيل الرسوم من المستخدم مع معالج Google Pay مشارك، وفقًا لـ GoogleOfferdPaymentOptions المحدّدة سابقًا. |
|
billingAddress |
PostalAddress |
عنوان إرسال الفواتير للدفع. |
يعرض المثال التالي عنصر GoogleProvidedPaymentInstrument
:
مثال
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
متطلبات طريقة الدفع التي تقدّمها Google
يعرض الجدول التالي خصائص النوع GoogleProvidedPaymentOptions
:
الموقع | النوع | الوصف | |
---|---|---|---|
facilitationSpecification |
String |
بيانات PaymentDataRequest JSON كسلسلة. يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API. |
|
supportedCardNetworks |
القائمة<SupportedCardNetworks > |
استخدِم facilitationSpecification بدلاً من ذلك. نوع شبكات البطاقات التي يوفّرها الوكيل تم إيقاف هذا الحقل نهائيًا. |
|
prepaidCardDisallowed |
منطقية |
استخدِم facilitationSpecification بدلاً من ذلك. ما إذا كان مسموحًا باستخدام بطاقة الدفع المُسبق كطريقة دفع أم لا. تم إيقاف هذا الحقل نهائيًا. |
|
billingAddressRequired |
منطقية |
استخدِم facilitationSpecification بدلاً من ذلك. تحديد ما إذا كان عنوان إرسال الفواتير مطلوبًا أم لا. تم إيقاف هذا الحقل نهائيًا. |
|
tokenizationParameters |
TokenizationParameters |
تم إيقاف هذا الحقل نهائيًا. |
يعرض المثال التالي عنصر GoogleProvidedPaymentOptions
:
مثال 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
مثال 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
مثال 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.
يعرض الجدول التالي خصائص النوع MerchantInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
merchantId |
String |
معرّف التاجر في Google الصادر لك من Google Pay |
|
merchantName |
String | مطلوبة. اسم التاجر بالترميز UTF-8. يظهر اسم التاجر في ورقة البيانات. |
OnFulfillmentPaymentData
استخدِم هذا العنصر لإرسال بيانات إضافية من أجل PaymentType "ON_FULFILLMENT".
يعرض الجدول التالي خصائص النوع OnFulfillmentPaymentData
:
الموقع | النوع | الوصف | |
---|---|---|---|
supportedPaymentOptions |
القائمة<PaymentOptionsEnums > |
قائمة خيارات الدفع المتاحة للمستخدم عند توصيل الطلب. |
يعرض المثال التالي عنصر OnFulfillmentPaymentData
:
مثال
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
المَعلمات
تحدّد الأنواع ذات الصلة بـ TokenizationParameters
.
يعرض الجدول التالي خصائص النوع Parameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
gateway |
String | مطلوبة. مثال: |
|
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 |
الثابت | مطلوبة. إصدار واجهة برمجة التطبيقات الرئيسي القيمة: |
|
apiVersionMinor |
الثابت | مطلوبة. إصدار ثانوي من واجهة برمجة التطبيقات. القيمة: |
|
merchantInfo |
MerchantInfo |
مطلوبة. (معرّف التاجر في Google Pay) معلومات عن التاجر الذي يطلب بيانات الدفع. |
|
allowedPaymentMethods |
القائمة<PaymentMethod > |
مطلوبة. تحدّد هذه السمة ما إذا كانت طريقة الدفع متوافقة مع Google Pay API أو طريقة دفع واحدة أو أكثر. |
|
transactionInfo |
TransactionInfo |
مطلوبة. تفاصيل حول تفويض المعاملة استنادًا إلى ما إذا كان المستخدم يوافق على المعاملة أم لا. يتضمّن هذا الحقل السعر الإجمالي وحالة السعر. |
يعرض المثال التالي عنصر PaymentDataRequest
:
مثال
{ "apiVersion": 2, "apiVersionMinor": 0, "merchantInfo": { "merchantId": "10391231", "merchantName": "Burrito Town" }, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "FULL" }, "cvcRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2019-05-16", "stripe:publishableKey": "pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA" } } } ], "transactionInfo": { "currencyCode": "INR", "totalPriceStatus": "ESTIMATED", "totalPrice": "185.00" } }
PaymentInfo
المعلومات المتعلقة بالدفع لأحد الطلبات.
يعرض الجدول التالي خصائص النوع PaymentInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
displayName |
String | مطلوبة. اسم وسيلة الدفع الذي يظهر للمستخدم لعرضه على الإيصال. |
|
paymentType |
PaymentType |
مطلوبة. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
الرمز المميّز الذي يمكن استخدامه من خلال الإجراء. لا تحدد هذا الخيار إلا إذا حددت GoogleOfferdPaymentOptions كخيار للدفع في CheckoutResponseMessage. |
يعرض المثال التالي عنصر PaymentInfo
:
مثال 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
مثال 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
يمكنك استخدام هذا العنصر لضبط مدى توافق موقعك الإلكتروني مع Google Pay API.
يعرض الجدول التالي خصائص النوع PaymentMethod
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
الثابت | مطلوبة. معرّف مختصر لطريقة الدفع المتوافقة لا تتم إتاحة سوى بطاقة CARD حاليًا. القيمة: |
|
parameters |
CardParameters |
مطلوبة. المَعلمات المطلوبة لإعداد نوع طريقة الدفع المقدَّم. |
|
tokenizationSpecification |
TokenizationSpecification |
مطلوبة. يجب ضبط حساب أو مقدّم خدمة فك التشفير لتلقّي معلومات الدفع. هذه السمة مطلوبة لطريقة الدفع باستخدام بطاقة CARD. |
يعرض المثال التالي عنصر PaymentMethod
:
مثال
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
يعرض الجدول التالي خصائص النوع PaymentOptions
:
الموقع | النوع | الوصف | |
---|---|---|---|
يجب استخدام مجموعة واحدة من مجموعات المواقع التالية فقط. | |||
googleProvidedOptions |
المجموعة 1 | GoogleProvidedPaymentOptions |
بشكل تبادلي مع actionsOfferdOptions. يمكنك استخدام هذا الرقم للدفع على الإنترنت باستخدام gPay. |
actionProvidedOptions |
المجموعة 2 | ActionProvidedPaymentOptions |
بشكل تبادلي مع googleOfferdOptions. استخدِم هذه السمة لاختيار "الدفع نقدًا عند التسليم" أو "الدفع عند توصيل الطلب". |
يعرض المثال التالي عنصر PaymentOptions
:
مثال 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
مثال 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
مثال 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
يحتوي النوع PaymentOptionsEnums
على القيم المحتمَلة التالية:
Cash
Card
UPI
Paytm
PaymentType
يحتوي النوع PaymentType
على القيم المحتمَلة التالية:
PAYMENT_CARD
: بالنسبة إلى GoogleOfferdPaymentOptions.ON_FULFILLMENT
: بالنسبة إلى Action ProviderdPaymentOptions.
SupportedCardNetworks
تحدّد الأنواع ذات الصلة بـGoogleProvidedPaymentOptions
.
يحتوي النوع SupportedCardNetworks
على القيم المحتمَلة التالية:
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
تحدد الأنواع ذات الصلة بـGoogleProvidedPaymentOptions
.
يعرض الجدول التالي خصائص النوع TokenizationParameters
:
الموقع | النوع | الوصف | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
مطلوبة. استخدِم facilitationSpecification بدلاً من ذلك. نوع الرموز المميّزة مقبول. |
|
parameters |
Parameters |
استخدِم facilitationSpecification بدلاً من ذلك. |
TokenizationSpecification
ويسمح لك هذا العنصر بضبط الحساب لتلقّي معلومات الدفع القابلة لتحصيل الرسوم.
يعرض الجدول التالي خصائص النوع TokenizationSpecification
:
الموقع | النوع | الوصف | |
---|---|---|---|
type |
الثابت | مطلوبة. |
|
parameters |
Parameters |
مطلوبة. |
يعرض المثال التالي عنصر TokenizationSpecification
:
مثال 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
مثال 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
يصف هذا العنصر معاملة تحدد قدرة الجهة المسدِّدة على الدفع. ويتمّ استخدامه لعرض مربّع حوار تفويض الدفع.
يعرض الجدول التالي خصائص النوع TransactionInfo
:
الموقع | النوع | الوصف | |
---|---|---|---|
currencyCode |
String | مطلوبة. رمز العملة الأبجدي وفقًا لمعيار ISO 4217. |
|
transactionId |
String |
المعرّف الفريد الذي يحدد محاولة إجراء معاملة. ويمكن للتجّار استخدام معرّف حالي أو إنشاء معرّف محدّد لمحاولات إجراء المعاملات على Google Pay. يكون هذا الحقل مطلوبًا عند إرسال عمليات معاودة الاتصال إلى واجهة برمجة تطبيقات أحداث معاملات Google. |
|
totalPriceStatus |
الثابت | مطلوبة. استخدم "المقدّرة" كقيمة تلقائية. قد يتم تعديل السعر الإجمالي استنادًا إلى تفاصيل الردّ، مثل ضريبة المبيعات التي يتم تحصيلها استنادًا إلى عنوان إرسال الفواتير. القيمة: |
|
totalPrice |
String | مطلوبة. إجمالي القيمة النقدية للمعاملة مع دقة عشرية اختيارية لمنزلتين عشريتين. يجب أن تكون قيمة هذا الحقل هي نفس قيمة Cart.totalPrice. |
يعرض المثال التالي عنصر TransactionInfo
:
مثال
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }