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