طرح اقدامات انجام

این صفحه میزان بار سرویس وب تکمیل (Ordering End-to-End API) را هنگام کار با Ordering End-to-End Built-in Action Action توضیح می دهد. برای نسخه قابل خواندن ماشین این اطلاعات، می توانید طرح JSON را دانلود کنید .

انواع پایه

سبد خرید

شامل جزئیات سفارش، و همچنین اینکه آیا درخواست برای تحویل یا تحویل است. یک سبد همچنین حاوی جزئیات تحویل، انعام و آدرس تحویل است. شیء Cart در یک Checkout AppRequest تعریف شده است. f شما یک کپی از سبد خرید را در Checkout AppResponse خود قرار می دهید.

جدول زیر ویژگی های نوع Cart را فهرست می کند:

ویژگی تایپ کنید شرح
@type Const

نوع این شی اگر شیء اصلی Cart بخشی از ProposedOrder است، این فیلد را حذف کنید.

مقدار: type.googleapis.com/google.actions.v2.orders.Cart

id رشته

شناسه اختیاری سبد خرید

merchant Merchant

تاجر وابسته به این سبد خرید.

lineItems فهرست < LineItem >

ضروری.

فهرست کالا(ها) یا خدماتی که کاربر سفارش می دهد.

نباید کمتر از 1 مورد داشته باشد.

promotions فهرست< Promotion >

تبلیغاتی که در این سبد خرید اعمال می شود. در حال حاضر فقط یک تبلیغ پشتیبانی می شود.

notes رشته

نکاتی در مورد سفارش یا دستورالعمل های تحویل.

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 رشته

نام شخص دریافت کننده سفارش، همانطور که می خواهید نمایش داده شود. اگر firstName و lastName مشخص نشده اند از این فیلد استفاده کنید.

مثال: Lovefood Ordering

email رشته

آدرس ایمیل شخصی که سفارش را دریافت می کند.

مثال: ilovefood@example.com

firstName رشته

نام شخصی که سفارش را دریافت می کند.

مثال: Lovefood

lastName رشته

نام خانوادگی شخصی که سفارش را دریافت می کند.

مثال: Ordering

phoneNumber رشته

شماره تلفن شخص دریافت کننده سفارش به همراه کد کشور.

مثال: +16501234567

emailVerified بولی

نشان می دهد که آیا شخصی که سفارش را دریافت می کند با حساب Google خود وارد شده است یا خیر.

مثال زیر یک عنصر Contact را نشان می دهد:

مثال

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

CustomPushMessage

حاوی OrderUpdate برای درخواست است.

جدول زیر ویژگی های نوع CustomPushMessage را فهرست می کند:

ویژگی تایپ کنید شرح
orderUpdate OrderUpdate

ضروری.

اطلاعات به روز شده برای سفارش

مثال زیر یک عنصر CustomPushMessage را نشان می دهد:

مثال

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

اطلاعات تحویل

جدول زیر ویژگی های نوع DeliveryInfo را فهرست می کند:

ویژگی تایپ کنید شرح
deliveryTimeIso8601 رشته

زمان تخمینی تحویل، در قالب مهر زمانی 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. از این برای به‌روزرسانی زمان تخمینی تحویل در حین پاسخ پرداخت استفاده کنید.

مثال: PT90M

مثال زیر یک عنصر DeliveryInfo را نشان می دهد:

مثال

{
  "deliveryTimeIso8601": "PT90M"
}

سلب مسئولیت

جدول زیر ویژگی های نوع Disclaimer را فهرست می کند:

ویژگی تایپ کنید شرح
predefinedMessage PredefinedMessage

ضروری.

برای نمایش پیام های سلب مسئولیت از پیش تعریف شده در حین پرداخت.

feeAmount Money

شریک برای این سفارش مبلغ N کارمزد از تاجر دریافت می کند.

feeAmountRange FeeAmountRange

شریک به ازای هر سفارش مبلغ N تا M را از رستوران دریافت می کند.

feePercent عدد

شریک برای این سفارش، 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
  }
}

مثال 5

{
  "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 یا Promotion حاوی داده های نامعتبر است.
  • NOT_FOUND : LineItem، FulfillmentOption یا Promotion یافت نمی شود.
  • PRICE_CHANGED : قیمت یک مورد تغییر کرده است.

FeeAmountRange

جدول زیر ویژگی های نوع FeeAmountRange را فهرست می کند:

ویژگی تایپ کنید شرح
minFeeAmount Money

کران پایین تر از مقدار کارمزد دریافت شده..

maxFeeAmount Money

کران بالای مبلغ کارمزد دریافت شده..

FeePercentRange

جدول زیر ویژگی های نوع FeePercentRange را فهرست می کند:

ویژگی تایپ کنید شرح
minFeePercent عدد

کران پایین تر از درصد هزینه شارژ شده است.

maxFeePercent عدد

کران بالای کارمزد درصد شارژ شده است.

FoodCart Extension

حاوی جزئیات مربوط به کاربر، مانند تنظیمات برگزیده انجام.

جدول زیر ویژگی های نوع FoodCartExtension را فهرست می کند:

ویژگی تایپ کنید شرح
@type Const

نوع این پسوند این فیلد همیشه روی "type.googleapis.com/google.actions.v2.orders.FoodCartExtension" تنظیم می شود.

مقدار: type.googleapis.com/google.actions.v2.orders.FoodCartExtension

contact Contact

اطلاعات تماس با شخص دریافت کننده سفارش جزئیات شامل نام، شماره تلفن و آدرس ایمیل شخص است.

fulfillmentPreference FulfillmentOption

ضروری.

اولویت تحقق کاربر.

location Location

در CheckoutRequestMessage، این فیلد آدرس تحویل را مشخص می کند که اگر سفارش برای تحویل باشد، لازم است. برای سفارشاتی که برای تحویل گرفتن یا تحویل گرفتن هستند، این قسمت در پیام گنجانده نشده است.

مثال زیر یک عنصر FoodCartExtension را نشان می دهد:

مثال 1

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

مثال 2

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

FoodError Extension

یک یا چند خطا را شناسایی می کند که در هنگام پردازش یک درخواست رخ داده است. جدول زیر فیلدهای نوع FoodErrorExtension را توضیح می دهد. خطاها را می توان در یک CheckoutResponse ارسال کرد.

جدول زیر ویژگی های نوع FoodErrorExtension را فهرست می کند:

ویژگی تایپ کنید شرح
@type Const

ضروری.

نوع این پسوند

مقدار: type.googleapis.com/google.actions.v2.orders.FoodErrorExtension

foodOrderErrors فهرست < FoodOrderError >

ضروری.

آرایه ای از اشیاء FoodOrderError که خطاهای رخ داده را توصیف می کند. یک خطا در هر سبد خرید یا هر مورد توصیه می شود.

نباید کمتر از 1 مورد داشته باشد.

correctedProposedOrder ProposedOrder

هنگامی که foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED" .

یک سفارش پیشنهادی جدید با اصلاحات. اگر خطاهای قابل بازیابی در ProposedOrder اصلی وجود دارد، این شی را برگردانید. به عنوان مثال، تغییر در قیمت یک یا چند کالای خط در سبد خرید یک خطای قابل بازیابی است. خطاهای قابل بازیابی با یک سفارش پیشنهادی معتبر به جای اینکه کاربر را ملزم به بازبینی سبد خرید خود کند، به مرحله تأیید می‌رود.

paymentOptions PaymentOptions

هنگامی که foodOrderErrors.error = "UNAVAILABLE_SLOT", "PROMO_EXPIRED", "PROMO_NOT_APPLICABLE", "PROMO_NOT_RECOGNIZED", "PROMO_ORDER_INELIGIBLE", "PROMO_USER_INELIGIBLE", "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "INVALID", "NOT_FOUND", or "PRICE_CHANGED" .

گزینه های پرداخت پیش فرض برای کاربر انتخاب شده است.

additionalPaymentOptions فهرست < PaymentOptions >

گزینه های پرداخت جایگزین در دسترس کاربر است.

مثال زیر یک عنصر FoodErrorExtension را نشان می دهد:

مثال

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

FoodItem Extension

افزودنی هایی را برای مواد غذایی تعریف می کند.

جدول زیر ویژگی های نوع FoodItemExtension را فهرست می کند:

ویژگی تایپ کنید شرح
@type Const

ضروری.

نوع این پسوند این فیلد همیشه روی "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" تنظیم می شود.

مقدار: type.googleapis.com/google.actions.v2.orders.FoodItemExtension

options فهرست < FoodItemOption >

یک گزینه می تواند یک مورد افزودنی یا گروه افزودنی حاوی مجموعه ای از افزونه ها باشد.

مثال زیر یک عنصر FoodItemExtension را نشان می دهد:

مثال

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

FoodItemOption

جدول زیر ویژگی های نوع FoodItemOption را فهرست می کند:

ویژگی تایپ کنید شرح
id رشته

شناسه منحصر به فرد اختصاص داده شده توسط Google. هنگامی که یک FoodOrderError یا AsyncOrderUpdateRequest ارسال می کنید، از این فیلد برای تمایز در مواردی استفاده کنید که یک سبد دارای بیش از یک کالا با همان offerId است.

مثال: 39231093

offerId رشته

شناسه پیشنهاد برای مورد.

مثال: 912835081

name رشته

نام گزینه

مثال: Honey Mustard

price Money
note رشته

یادداشت مربوط به گزینه

quantity عدد

برای گزینه هایی که آیتم ها هستند، تعداد آیتم ها.

مثال: 3

subOptions فهرست< FoodItemOption >

گزینه های فرعی برای گزینه، در صورت وجود.

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

مثال زیر یک عنصر FoodItemOption را نشان می دهد:

مثال 1

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

مثال 2

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

خطای سفارش غذا

حاوی جزئیات مربوط به خطاهای موجود در CheckoutResponse است.

جدول زیر ویژگی های نوع FoodOrderError را فهرست می کند:

ویژگی تایپ کنید شرح
error Error

ضروری.

id رشته

زمانی که error = "AVAILABILITY_CHANGED", "INCORRECT_PRICE", "PRICE_CHANGED", "INVALID", or "NOT_FOUND" مورد نیاز است.

این فیلد برای خطاهای سطح مورد ضروری است. این LineItem.id اختصاص داده شده توسط Google برای آیتم های منو یا FoodItemOption.id برای افزونه ها است.

description رشته

شرح خطا. این توضیحات برای ثبت داخلی است و برای کاربران قابل مشاهده نیست.

updatedPrice Money

هنگامی که error = "PRICE_CHANGED" مورد نیاز است.

قیمت جدید کالایی که باعث خطا شده است. این فقط زمانی لازم است که خطا "PRICE_CHANGED" باشد.

availableQuantity عدد صحیح

زمانی که error = "INVALID", or "NOT_FOUND" مورد نیاز است.

مقدار جدید موجود از موردی که باعث خطا شده است. این فقط زمانی مورد نیاز است که خطا "INVALID" یا "NOT_FOUND" باشد. مقدار باید برای "INVALID" و "NOT_FOUND" صفر باشد.

مثال زیر یک عنصر FoodOrderError را نشان می دهد:

مثال 1

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

مثال 2

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

FoodOrder Extension

حاوی اطلاعات تکمیلی در مورد سفارش است.

جدول زیر ویژگی های نوع FoodOrderExtension را فهرست می کند:

ویژگی تایپ کنید شرح
@type Const

نوع این پسوند این فیلد همیشه روی "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" تنظیم می شود.

مقدار: 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 ID FulfillmentOption باید با شناسه LineItem مشخص شده در ProposedOrder.otherItems مطابقت داشته باشد.

جدول زیر ویژگی های نوع FulfillmentOption را فهرست می کند:

ویژگی تایپ کنید شرح
offerId رشته

شناسه منحصر به فرد برای این گزینه تکمیل، در صورت وجود.

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 رشته

ضروری.

URL برای تصویر. حداقل، تصویر باید 72x72 پیکسل باشد. برای بهترین نتیجه، از تصویری استفاده کنید که حداقل 216x216 پیکسل باشد. تصویر باید کمتر از 6 مگابایت و 64 مگاپیکسل باشد.

آیتم خط

محتویات یک سبد خرید ( Cart.lineItems ) یا هزینه های اضافی برای یک سفارش ( ProposedOrder.otherItems ) را تعیین می کند.

جدول زیر ویژگی های نوع LineItem را فهرست می کند:

ویژگی تایپ کنید شرح
id رشته

زمانی که type = "REGULAR" مورد نیاز است.

برای یک LineItem در سبد خرید (ProposedOrder.cart.lineItems[0].id)، این شناسه منحصربه‌فردی است که Google هنگام ایجاد سفارش ایجاد می‌کند. برای LineItem در ProposedOrder (ProposedOrder.otherItems[0].id)، که برای افزودن مواردی مانند هزینه‌های تحویل و مالیات استفاده می‌شود، ارزش شناسه توسط ارائه‌دهنده تعریف می‌شود. به عنوان مثال، در یک سبد خرید دو مورد مشابه با دستورالعمل های مختلف آماده سازی وجود دارد (مانند دو پیتزا متوسط ​​با مجموعه های مختلف تاپینگ). در این حالت، هر دو آیتم دارای یک پایه پیشنهادی هستند. وقتی درخواست به‌روزرسانی سفارش را ارسال می‌کنید تا نشان دهید که یک مورد رد شده است، از این شناسه به‌عنوان ابهام‌کننده استفاده کنید. به عبارت دیگر، اگر یکی از پیتزاها به دلیل نداشتن رویه خاصی رد شود، شناسه به Google کمک می‌کند تا تعیین کند که کدام مورد به ترتیبی که به آن اشاره می‌کنید. این فیلد به جز در موارد دیگر الزامی است.

name رشته

ضروری.

نام مورد خط. این یک رشته قابل مشاهده برای کاربر است و در صورت امکان باید به صورت جمله باشد (مانند «هزینه تحویل»، «هزینه خدمات»، «مالیات»). این فیلد با 100 کاراکتر برای کاربران کوتاه شده است.

type LineItemType

ضروری.

quantity عدد صحیح

زمانی که type = "REGULAR" مورد نیاز است.

تعداد موارد گنجانده شده برای ProposedOrder.otherItems قابل اجرا نیست.

description رشته

توضیحات مورد.

price Price

ضروری.

قیمت کالا یا اقلام. این مقدار منعکس کننده قیمت کل همه کالاها یا خدمات برای این خط است (به عبارت دیگر، هزینه هر افزودنی را اضافه کنید و در مقدار ضرب کنید). به عنوان مثال: اگر یک کالای 10 دلاری دارای 3 عدد باشد، قیمت آن 30 دلار خواهد بود. برای یک پیتزا با قیمت پایه 5 دلار و یک دلار اضافی، قیمت 6 دلار خواهد بود. برای دو پیتزا (تعداد = 2) با قیمت پایه 5 دلار و هر کدام با یک دلار اضافی، قیمت 12 دلار خواهد بود. هر LineItem باید یک قیمت داشته باشد، حتی اگر قیمت آن "0" باشد. وقتی نوع DISCOUNT است، مقدار را به صورت منفی مشخص کنید (به عنوان مثال، "-2").

subLines فهرست < SublineNote >

اختیاری است و فقط در صورتی معتبر است که نوع "قانونی" باشد. ممکن است در این قسمت در درخواست تسویه‌حساب و درخواست ارسال سفارش، یک یادداشت خاص از کاربر ارسال شود. اطمینان حاصل کنید که تاجر یادداشت را هنگام ارائه آن دریافت می کند. در درخواست به صورت subLines[0].note خواهد بود، که تنها مقدار ارائه شده در این فیلد زمانی است که در یک درخواست وجود دارد.

نباید بیش از 1 مورد داشته باشد.

offerId رشته

زمانی که type = "REGULAR" مورد نیاز است.

شناسه پیشنهاد MenuItem برای مورد. برای ProposedOrder.otherItems قابل اجرا نیست.

extension FoodItemExtension

افزودنی هایی را برای مواد غذایی تعریف می کند.

مثال زیر یک عنصر LineItem را نشان می دهد:

مثال 1

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

مثال 2

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

LineItemType

نوع LineItemType دارای مقادیر ممکن زیر است:

  • REGULAR : کالای خط کالا. قابل استفاده برای Cart.lineItems.
  • TAX : آیتم ردیف مالیاتی. قابل اجرا برای ProposedOrder.otherItems.
  • DISCOUNT : مورد خط تخفیف. توجه داشته باشید که قیمت باید منفی باشد. قابل اجرا برای ProposedOrder.otherItems.
  • GRATUITY : مورد خط Gratuity. به طور کلی برای SubmitOrderRequestMessage برای یک نکته انتخاب شده توسط کاربر محفوظ است. قابل اجرا برای ProposedOrder.otherItems.
  • DELIVERY : کالای خط تحویل. قابل اجرا برای ProposedOrder.otherItems.
  • SUBTOTAL : مورد خط فرعی. قابل اجرا برای ProposedOrder.otherItems.
  • FEE : مورد خط اضافی که توسط انواع دیگر پوشش داده نمی شود. قابل اجرا برای ProposedOrder.otherItems.

محل

آدرسی را برای سفارش غذا مشخص می کند. نوع Location در Cart فقط برای نشان دادن مقصد سفارش تحویل استفاده می شود. اگر کاربر سفارش را انجام دهد، مکان نهایی شده نیز در TransactionDecisionValue وجود دارد. برای سفارش هایی که پیکاپ را مشخص می کنند، مکان به هیچ وجه درج نمی شود (حتی یک مکان خالی).

جدول زیر ویژگی های نوع Location را فهرست می کند:

ویژگی تایپ کنید شرح
coordinates Coordinates
formattedAddress رشته

نمایش آدرس محل

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

postalAddress PostalAddress
zipCode رشته

مثال: 90210

city رشته

نام شهر.

مثال: Los Angeles

notes رشته

نکاتی درباره مکان، مانند کدهای دروازه. باید 500 کاراکتر یا کمتر باشد.

مثال: Gate code is #111

مثال زیر یک عنصر Location را نشان می دهد:

مثال

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

بازرگان

جدول زیر ویژگی های نوع Merchant را فهرست می کند:

ویژگی تایپ کنید شرح
id رشته

شناسه تاجر اگر مشخص شده باشد، با ID Restaurant.@ در فید رستوران مطابقت دارد.

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

name رشته

ضروری.

نام تجاری قابل مشاهده توسط کاربر.

مثال: Falafel Bite

مثال زیر یک عنصر Merchant را نشان می دهد:

مثال

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

پول

جدول زیر ویژگی های نوع Money را فهرست می کند:

ویژگی تایپ کنید شرح
currencyCode رشته

ضروری.

یک کد ارز 3 حرفی در قالب ISO 4217.

مثال: USD

units رشته

کل واحدهای مقدار. به عنوان مثال، اگر کد ارز "USD" باشد، واحد "1" یک دلار آمریکا است.

مثال: 36

nanos عدد صحیح

تعداد نانو (10^-9) واحد مقدار. مقدار باید بین -999,999,999 و +999,999,999 باشد. از قوانین زیر استفاده کنید: اگر واحدها مثبت باشد، نانو باید مثبت یا صفر باشد. اگر واحدها صفر باشد، نانو می تواند مثبت، صفر یا منفی باشد. اگر واحدها منفی باشد، نانو باید منفی یا صفر باشد. به عنوان مثال -1.75 دلار به صورت واحد = -1 و نانو = -750,000,000 نشان داده می شود.

مثال: 730000000

مثال زیر یک عنصر Money را نشان می دهد:

مثال 1

{
  "currencyCode": "USD",
  "units": "36",
  "nanos": 730000000
}

مثال 2

{
  "currencyCode": "EUR",
  "units": "10"
}

سفارش

شامل سفارش نهایی، از جمله مالیات، کارمزد، و هزینه های تحویل، و همچنین اطلاعات پرداخت است. این شی با عمل شما در یک Submit AppRequest دریافت می شود.

جدول زیر ویژگی های نوع Order را فهرست می کند:

ویژگی تایپ کنید شرح
finalOrder ProposedOrder

ضروری.

دستور پیشنهادی که باعث دستور شد.

googleOrderId رشته

ضروری.

شناسه سفارش اختصاص داده شده توسط 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 را که در AppResponse گنجانده شده است، توضیح می دهد.

جدول زیر ویژگی های نوع OrderUpdate را فهرست می کند:

ویژگی تایپ کنید شرح
actionOrderId رشته

ضروری.

شناسه منحصربه‌فرد سفارش در سیستم یکپارچه‌ساز که برای شناسایی سفارش ارسال به‌روزرسانی استفاده می‌شود. اگر receipt.user_visible_order_id حداقل یک بار در OrderUpdate برای سفارش "ایجاد شده" ارائه نشده باشد، این شناسه شناسه قابل مشاهده کاربر ورودی خواهد بود که در کارت سفارش Google نمایش داده می شود.

orderState OrderState

ضروری.

وضعیت جدید دستور.

lineItemUpdates Map<String, LineItemUpdate >
updateTime مهر زمانی ISO

ضروری.

زمانی که سفارش به روز شد.

orderManagementActions فهرست < OrderManagementAction >

اقدامات پس از سفارش مانند تماس با پشتیبانی و مشاهده جزئیات سفارش.

نباید کمتر از 1 مورد و بیش از 6 مورد داشته باشد.

rejectionInfo RejectionInfo

زمانی که orderState.state = "REJECTED" الزامی است.

cancellationInfo CancellationInfo

زمانی که orderState.state = "CANCELLED" الزامی است.

inTransitInfo InTransitInfo

این فیلد منسوخ شده است.

fulfillmentInfo FulfillmentInfo

این فیلد منسوخ شده است.

receipt Receipt

زمانی که orderState.state = "CONFIRMED", "IN_PREPARATION", or "READY_FOR_PICKUP" مورد نیاز است.

شناسه سفارش قابل مشاهده توسط کاربر را در رسید ارائه دهید.

totalPrice Price

قیمت کل سفارش

infoExtension FoodOrderUpdateExtension

جزئیات بیشتری از به‌روزرسانی سفارش، مانند فاصله زمانی تخمینی تحویل یا تحویل را تعریف می‌کند.

مثال زیر یک عنصر OrderUpdate را نشان می دهد:

مثال

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

اطلاعات پیکاپ

جدول زیر ویژگی های نوع PickupInfo را فهرست می کند:

ویژگی تایپ کنید شرح
pickupTimeIso8601 رشته

زمان تخمینی تحویل، در قالب مهر زمانی 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. از این برای به‌روزرسانی زمان تخمینی تحویل در حین پاسخ پرداخت استفاده کنید.

مثال: PT90M

مثال زیر یک عنصر PickupInfo را نشان می دهد:

مثال

{
  "pickupTimeIso8601": "PT90M"
}

آدرس پستی

جدول زیر ویژگی های نوع PostalAddress را فهرست می کند:

ویژگی تایپ کنید شرح
regionCode رشته

ضروری.

کد کشور دو حرفی

مثال: US

postalCode رشته

کد پستی.

مثال: 94043

administrativeArea رشته

بالاترین بخش اداری که برای آدرس های پستی یک کشور یا منطقه استفاده می شود. این می تواند یک ایالت، یک استان، یک استان یا یک استان باشد.

مثال: CA

locality رشته

شهر یا شهر برای این مکان. در مناطقی از جهان که محلی ها به خوبی تعریف نشده اند یا با این ساختار مطابقت ندارند، محلی را مشخص نکنید و به جای آن از فیلد addressLines استفاده کنید.

مثال: Mountain View

addressLines فهرست <رشته>

یک یا چند خط که می توانید برای مشخص کردن آدرس خیابان استفاده کنید. این فیلد نباید اصلاح شود زیرا می‌تواند حاوی مکان‌های نامشخص باشد.

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

recipients فهرست <رشته>

لیست دریافت کنندگان سفارش این فیلد فقط در billingAddress موجود است.

مثال زیر یک عنصر PostalAddress را نشان می دهد:

مثال

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

قیمت

جدول زیر ویژگی های نوع Price را فهرست می کند:

ویژگی تایپ کنید شرح
type Enum [ "ESTIMATE", "ACTUAL" ]

ضروری.

کد کوپن تبلیغاتی

amount Money

ضروری.

ترویج

جدول زیر ویژگی های نوع Promotion را فهرست می کند:

ویژگی تایپ کنید شرح
coupon رشته

ضروری.

کد کوپن تبلیغاتی

سفارش پیشنهادی

جدول زیر ویژگی های نوع ProposedOrder را فهرست می کند:

ویژگی تایپ کنید شرح
id رشته

شناسه اختیاری برای سفارش پیشنهادی.

cart Cart

ضروری.

آیتم های کاربر

otherItems فهرست < LineItem >

موارد اضافه شده توسط ارائه دهنده، مانند هزینه های تحویل، سایر هزینه ها، و مالیات. موارد دیگر نیز ممکن است شامل انعام و/یا تخفیف اضافه شده توسط کاربر باشد.

نباید بیش از 10 مورد داشته باشد.

image Image

تصویر مرتبط با سفارش پیشنهادی

totalPrice Price

ضروری.

قیمت کل سفارش پیشنهادی

extension FoodOrderExtension

ضروری.

اطلاعات تکمیلی را برای سفارشات غذا تعریف می کند.

disclaimers فهرست< Disclaimer >

مربوط به پیام های سلب مسئولیت است که قبل از ثبت سفارش در UI نشان داده می شود.

مثال زیر یک عنصر 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"
      }
    ]
  }
}

Subline Note

جدول زیر ویژگی های نوع SublineNote را فهرست می کند:

ویژگی تایپ کنید شرح
note رشته

ضروری.

مهر زمان

تاریخ و زمان، در قالب زیر: "{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 بولی

نشان می دهد که آیا تراکنش های بعدی در محیط sandbox انجام می شود یا خیر.

conversation Conversation
inputs فهرست < Input >

ضروری.

حاوی آرگومان های مورد انتظار برای بررسی یک سبد خرید است.

باید دقیقا 1 مورد داشته باشد.

مثال زیر یک عنصر 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 یک AppRequest با هدف actions.foodordering.intent.TRANSACTION_DECISION است.

گفتگو

یک Conversation فقط برای یک جلسه منحصر به فرد است. در صورت نیاز می‌توانید از آن برای پیوند دادن چندین Checkout و SubmitOrder Actions به یکدیگر استفاده کنید.

جدول زیر ویژگی های نوع Conversation را فهرست می کند:

ویژگی تایپ کنید شرح
conversationId رشته

ضروری.

شناسه منحصر به فرد برای مکالمه

مثال زیر یک عنصر Conversation را نشان می دهد:

مثال

{
  "conversationId": "CQnJ7Z4i7UmvEZ9ph3AxyZRJ"
}

ورودی

استدلال های مورد انتظار برای بررسی یک سبد خرید.

جدول زیر ویژگی های نوع Input را فهرست می کند:

ویژگی تایپ کنید شرح
intent Enum [ "actions.foodordering.intent.CHECKOUT", "actions.intent.TRANSACTION_DECISION" ]

ضروری.

برای پیام درخواست تسویه حساب روی «actions.foodordering.intent.CHECKOUT» یا برای ارسال پیام درخواست سفارش «actions.intent.TRANSACTION_DECISION» تنظیم کنید.

arguments فهرست < Argument >

ضروری.

شامل سبد خریدی است که باید بررسی شود یا سفارشی که قرار است انجام شود

باید دقیقا 1 مورد داشته باشد.

بحث و جدل

حاوی جزئیاتی در مورد مواد غذایی است که کاربر می خواهد بررسی کند. برای پرداخت، فقط پسوند قابل اجرا است. برای ارسال سفارش، فقط tradeDecisionValue قابل اعمال است

جدول زیر ویژگی های نوع Argument را فهرست می کند:

ویژگی تایپ کنید شرح
دقیقاً یکی از گروه های زیر از خواص مورد نیاز است.
extension گروه 1 Cart

جزئیات مواد غذایی که کاربر می‌خواهد بررسی کند.

transactionDecisionValue گروه 2 TransactionDecisionValue

شامل سفارشی که قرار است انجام شود به همراه جزئیات پرداخت.

پاسخ تحقق

AppResponse

جدول زیر ویژگی های نوع AppResponse را فهرست می کند:

ویژگی تایپ کنید شرح
expectUserResponse Const

روی نادرست تنظیم کنید.

مقدار: False

finalResponse FinalResponse

ضروری.

حاوی پاسخ شما به پرداخت سبد خرید است.

مثال زیر یک عنصر AppResponse را نشان می دهد:

مثال 1

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

مثال 2

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

مثال 3

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

مثال 4

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

CheckoutResponseMessage

CheckoutResponseMessage یک AppResponse با checkoutResponse یا error در StructuredResponse است.

SubmitOrderResponse Message

SubmitOrderResponseMessage یک AppResponse با orderUpdate در StructuredResponse است.

پاسخ نهایی

پاسخ شما به پرداخت سبد خرید یا ارسال سفارش درخواست پیام.

جدول زیر ویژگی های نوع 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."
      }
    }
  ]
}

مورد

شامل پاسخ شما به پرداخت سبد خرید یا ارسال سفارش درخواست پیام است.

جدول زیر ویژگی های نوع Item را فهرست می کند:

ویژگی تایپ کنید شرح
structuredResponse StructuredResponse

ضروری.

RichResponse

حاوی پاسخ شما به پرداخت سبد خرید است.

جدول زیر ویژگی های نوع RichResponse را فهرست می کند:

ویژگی تایپ کنید شرح
items فهرست< Item >

ضروری.

باید دقیقا 1 مورد داشته باشد.

Structured Response

برای CheckoutResponseMessage، این می تواند یکی از موارد زیر باشد: CheckoutResponse نشان دهنده پرداخت موفقیت آمیز است. OR FoodErrorExtension: نشان دهنده خرابی در حین پرداخت است. پاسخ می تواند شامل یک سفارش پیشنهادی و گزینه های پرداخت تصحیح شده یا یک پیام خطا بدون گزینه های پرداخت باشد. برای SubmitOrderResponseMessage، فقط orderUpdate قابل اعمال است.

جدول زیر ویژگی های نوع StructuredResponse را فهرست می کند:

ویژگی تایپ کنید شرح
دقیقاً یکی از گروه های زیر از خواص مورد نیاز است.
checkoutResponse گروه 1 CheckoutResponse

بررسی اقلام به اضافه مالیات و تخفیف.

error گروه 2 FoodErrorExtension

خطاهای مشاهده شده در اقلام سبد خرید بسته به ماهیت خطا، این ویژگی می‌تواند شامل یک پیشنهاد سفارش و گزینه‌های پرداخت تصحیح شده یا فقط یک پیام خطا بدون گزینه‌های پرداخت باشد.

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 رشته

ضروری.

برچسب نمایشگر از حروف جمله با 30 کاراکتر یا کمتر برای اطمینان از رندر مناسب استفاده کنید.

مثال: Contact us

openUrlAction OpenUrlAction

ضروری.

مثال زیر یک عنصر Button را نشان می دهد:

مثال

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

اطلاعات لغو

جدول زیر ویژگی های نوع CancellationInfo را فهرست می کند:

ویژگی تایپ کنید شرح
reason رشته

ضروری.

دلیل متن قابل نمایش برای رد زمانی که OrderState.state "لغو" است.

مثال: Restaurant closed

مثال زیر یک عنصر CancellationInfo را نشان می دهد:

مثال

{
  "reason": "Insufficient inventory"
}

افزونه FoodOrderUpdate

این نوع یک فاصله زمانی تخمینی برای تحویل سفارش یا آماده شدن برای تحویل به کاربر ارائه می دهد. هر زمان که اطلاعات موجود است یا از آخرین ارسال تغییر کرده است، این برنامه افزودنی را در 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" تنظیم می شود.

مقدار: type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension

estimatedFulfillmentTimeIso8601 رشته

زمان تخمینی زمانی که سفارش تحویل داده می شود یا آماده تحویل است. رشته باید در قالب ISO 8601 باشد و باید با یک بازه به جای یک زمان ثابت منطبق باشد. قراردادهای قابل قبول عبارتند از: فواصل زمانی، مدت زمان، و تاریخ/زمان. این فیلد را می توان در SubmitOrderResponseMessage یا AsyncOrderUpdateRequestMessage ارسال کرد که اطلاعات در دسترس قرار گرفت یا تغییری رخ داد، مانند ورود زودهنگام یا تأخیر.

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

foodOrderErrors فهرست < FoodOrderError >

خطاهای رخ داده پس از سفارش را شرح می دهد. یک خطا در هر سبد خرید یا هر مورد توصیه می شود. از FoodOrderUpdateExtension.FoodOrderErrors برای هر خطایی که توسط RejectionInfo پوشش داده نشده است استفاده کنید.

نباید کمتر از 1 مورد داشته باشد.

مثال زیر یک عنصر 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 را فهرست می کند:

ویژگی تایپ کنید شرح
دقیقاً یکی از گروه های زیر از خواص مورد نیاز است.
deliveryTime گروه 1 مهر زمان ISO

از تخمین زده‌شدهFulfillmentTimeIso8601 در پیام FoodOrderingUpdateExtension استفاده کنید

pickupTime گروه 2 مهر زمان ISO

از تخمین زده‌شدهFulfillmentTimeIso8601 در پیام FoodOrderingUpdateExtension استفاده کنید

مثال زیر یک عنصر FulfillmentInfo را نشان می دهد:

مثال 1

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

مثال 2

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

InTransitInfo

جدول زیر ویژگی های نوع InTransitInfo را فهرست می کند:

ویژگی تایپ کنید شرح
updatedTime مهر زمانی ISO

از تخمین زده‌شدهFulfillmentTimeIso8601 در پیام FoodOrderingUpdateExtension استفاده کنید

مثال زیر یک عنصر InTransitInfo را نشان می دهد:

مثال

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

LineItemUpdate

جدول زیر ویژگی های نوع LineItemUpdate را فهرست می کند:

ویژگی تایپ کنید شرح
orderState OrderState
price Price
reason رشته

دلیل تغییر. برای تغییرات قیمت مورد نیاز است.

مثال زیر یک عنصر LineItemUpdate را نشان می دهد:

مثال

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

OpenUrlAction

جدول زیر ویژگی های نوع OpenUrlAction را فهرست می کند:

ویژگی تایپ کنید شرح
url رشته

ضروری.

عمل با کلیک کردن یا لمس کردن دکمه انجام می شود. لیست پیشوندهای قابل اجرا بستگی به orderManagementActionType دارد. "EMAIL": پیشوند باید "mailto" باشد. "CALL": پیشوند باید "tel" باشد. «CUSTOMER_SERVICE»: پیشوند باید «mailto»، «tel»، «http» یا «https» باشد.

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

OrderManagementAction

مدیریت سفارش کاربران را قادر می‌سازد تا پشتیبانی پس از سفارش را دریافت کنند و باید در هر OrderUpdate در AppResponse سفارش ارسال شوند و هر اقدام مدیریت سفارش AsyncOrderUpdateRequestMessage بعدی که برای یک سفارش خاص ارسال می‌شود، می‌تواند بر اساس وضعیت متفاوت باشد.

برای مثال، در حالت "CREATED"، 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" باشد.

Order State

وضعیت فعلی سفارش. هر مقدار state OrderState نیز با وضعیت خرید در myaccount.google.com مطابقت دارد.

در جدول زیر خصوصیات نوع OrderState ذکر شده است:

ویژگی تایپ کنید شرح
state OrderStateEnum

ضروری.

label رشته

ضروری.

رشته نمایشگر قابل مشاهده کاربر برای حالت. از پرونده جمله استفاده کنید.

مثال: Your order has been received

مثال زیر یک عنصر OrderState را نشان می دهد:

مثال

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

حرکات

انواع مربوط به OrderState را تعریف می کند.

نوع OrderStateEnum مقادیر ممکن زیر را دارد:

  • CREATED : سفارش ایجاد شده توسط یکپارچه سازی و انتظار برای تأیید توسط ارائه دهنده. مطابق با وضعیت خرید "سفارش داده شده" است.
  • CONFIRMED : سفارش تأیید شده توسط ارائه دهنده و فعال است. مطابق با وضعیت خرید "پذیرفته شده" است.
  • REJECTED : سفارش رد شده توسط یکپارچه یا ارائه دهنده. مطابق با وضعیت خرید "کاهش یافته" است.
  • CANCELLED : کاربر سفارش را لغو کرد. مطابق با وضعیت خرید "لغو شده" است.
  • IN_PREPARATION : غذا تهیه می شود. مطابق با وضعیت خرید "وضعیت ناشناخته" است.
  • READY_FOR_PICKUP : غذا برای وانت آماده است. مطابق با وضعیت خرید "آماده برای وانت" است.
  • IN_TRANSIT : سفارش تحویل داده می شود. مطابق با وضعیت خرید "در حال پیشرفت" است.
  • FULFILLED : کاربر آنچه را که سفارش داده شده بود دریافت کرد. مطابق با وضعیت خرید "برداشت شده" است.

اعلام وصول

این نوع را در یک AppResponse ارسال ارسال کنید ، جایی که OrderState "تأیید شده" ، "برآورده شده" یا "in_transit" است. ارسال را در زمانی که userVisibleOrderId در دسترس قرار می گیرد ، ارسال کنید. نیازی به ارسال رسید در به روزرسانی های بعدی نیست.

در جدول زیر خصوصیات نوع Receipt ذکر شده است:

ویژگی تایپ کنید شرح
userVisibleOrderId رشته

ضروری.

اگر سفارش "تأیید شده" ، "in_transit" یا "تحقق یافته" باشد ، لازم است. این قسمت شناسه منفرد کاربر برای این سفارش (معمولاً شناسه سفارش رستوران) است که در هر دو رسید یکپارچه ساز و کارت Google Order نمایش داده می شود. کاربر باید بتواند از این شناسه استفاده کند تا سفارش خود را برای خدمات به مشتری با ارائه دهنده و یکپارچه کننده ارجاع دهد. شما فقط باید یک بار این شناسه را در هر سفارش داده شده ارائه دهید. تا زمانی که ارائه نشود ، ActionOrderId userisibleorderid است. به عنوان مثال ، تا زمانی که سفارش توسط رستوران تأیید نشود ، ممکن است شما یک Uservisibleorderid داشته باشید. پس از تأیید ، پس از آن باید یک asyncorderupdaterequestmessage را با یک سفارش و یک رسید ارسال کنید.

مثال زیر یک عنصر Receipt را نشان می دهد:

مثال

{
  "userVisibleOrderId": "userVisibleId1234"
}

رد کردن

در جدول زیر خصوصیات مربوط به نوع RejectionInfo ذکر شده است:

ویژگی تایپ کنید شرح
type RejectionType

ضروری.

reason رشته

دلیل رد استفاده شده برای ورود به سیستم داخلی. این قسمت برای کاربران قابل مشاهده نیست.

مثال زیر یک عنصر RejectionInfo را نشان می دهد:

مثال

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

نوع رد

نوع RejectionType مقادیر ممکن زیر را دارد:

  • INELIGIBLE : کاربر به دلیل نگرانی های مربوط به خط مشی یا ریسک واجد شرایط نیست.
  • PAYMENT_DECLINED : مشکلی در پردازش پرداخت وجود دارد.
  • UNAVAILABLE_SLOT : سفارش را نمی توان در زمان پیش رو مشخص شده توسط DeliveryInfo یا PickupInfo انجام داد.
  • PROMO_NOT_APPLICABLE : مسئله ای در مورد ارتقاء وجود دارد.
  • UNKNOWN : هر دلیل دیگری.

انواع مربوط به پرداخت

در این بخش انواع مربوط به پرداخت مورد استفاده برای انجام سفارش مواد غذایی توضیح داده شده است.

ActionProvidedPaymentOptions

الزامات برای یک روش پرداخت ارائه شده توسط اقدام.

در جدول زیر خواص مربوط به ActionProvidedPaymentOptions نوع:

ویژگی تایپ کنید شرح
paymentType PaymentType

ضروری.

displayName رشته

ضروری.

نام ابزار پرداخت نمایش داده شده در رسید.

مثال: Taco Points Total

onFulfillmentPaymentData OnFulfillmentPaymentData

داده های اضافی برای پرداخت "on_fulfillment". به عنوان مثال ، می توانید از این قسمت استفاده کنید تا مشخص کنید آیا پول نقد یا کارت در انجام آن پشتیبانی می شود.

مثال زیر عنصر ActionProvidedPaymentOptions را نشان می دهد:

مثال

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

مجاز

نوع AllowedAuthMethods مقادیر ممکن زیر را دارد:

  • PAN_ONLY : روش احراز هویت مرتبط با کارتهای پرداخت ذخیره شده در پرونده با حساب Google کاربر. داده های پرداخت برگشتی شامل شماره حساب شخصی (PAN) با ماه انقضا و سال انقضا است.

مجاز کارت

نوع AllowedCardNetworks مقادیر ممکن زیر را دارد:

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

billingAddressParameters

این شی به شما امکان می دهد زمینه های اضافی را برای یک آدرس صورتحساب درخواست شده تنظیم کنید.

در جدول زیر خواص مربوط به نوع BillingAddressParameters ذکر شده است:

ویژگی تایپ کنید شرح
format رشته

قالب آدرس صورتحساب برای تکمیل معامله مورد نیاز است. حداقل: نام ، کد کشور و کد پستی. کامل: نام ، آدرس خیابان ، محل ، منطقه ، کد کشور و کد پستی.

مثال زیر یک عنصر BillingAddressParameters را نشان می دهد:

مثال 1

{
  "format": "MIN"
}

مثال 2

{
  "format": "FULL"
}

کارتن کارت

از این شی برای پیکربندی پشتیبانی سایت خود برای API Google Pay استفاده کنید.

در جدول زیر خصوصیات مربوط به CardParameters ذکر شده است:

ویژگی تایپ کنید شرح
allowedAuthMethods لیست <const>

ضروری.

زمینه های پشتیبانی شده برای تأیید اعتبار معامله کارت.

باید کمتر از 1 مورد نداشته باشد.

allowedCardNetworks لیست < AllowedCardNetworks >

ضروری.

یک یا چند شبکه کارت که از آنها پشتیبانی می کنید که توسط Google Pay API نیز پشتیبانی می شوند.

باید کمتر از 1 مورد نداشته باشد.

billingAddressRequired بولی

در صورت نیاز به آدرس صورتحساب ، تنظیم کنید. فقط در صورت نیاز به پردازش معامله ، آدرس صورتحساب را درخواست کنید. درخواست داده های اضافی می تواند اصطکاک را در فرآیند پرداخت افزایش داده و منجر به پایین آمدن نرخ تبدیل شود.

billingAddressParameters BillingAddressParameters

اگر BillingAddressRequired به درستی تنظیم شود ، زمینه های مورد انتظار بازگشتند.

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 رشته

ضروری.

رشته 64 رمزگذاری شده حاوی نشانه پرداخت برای شارژ کاربر با پردازنده Google Pay شرکت کننده ، طبق GoogleProvidePaymentOptions که قبلاً مشخص شده بود.

billingAddress PostalAddress

آدرس صورتحساب برای پرداخت.

مثال زیر یک عنصر GoogleProvidedPaymentInstrument را نشان می دهد:

مثال

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

GoogleProvidedPaymentOptions

الزامات روش پرداخت ارائه شده توسط Google.

در جدول زیر خصوصیات مربوط به GoogleProvidedPaymentOptions ذکر شده است:

ویژگی تایپ کنید شرح
facilitationSpecification رشته

PaymentDatareQuest Json به عنوان یک رشته. از این شی برای پیکربندی پشتیبانی سایت خود برای API Google Pay استفاده کنید.

supportedCardNetworks لیست SupportedCardNetworks

در عوض از تسهیل استفاده کنید. نوع شبکه های کارت پشتیبانی شده توسط نماینده.

این زمینه مستهلک می شود.

prepaidCardDisallowed بولی

در عوض از تسهیل استفاده کنید. آیا کارت پیش پرداخت به عنوان نوع پرداخت مجاز است یا خیر.

این زمینه مستهلک می شود.

billingAddressRequired بولی

در عوض از تسهیل استفاده کنید. آیا آدرس صورتحساب مورد نیاز است یا خیر.

این زمینه مستهلک می شود.

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
}

بازرگان

از این شی برای پیکربندی پشتیبانی سایت خود برای API Google Pay استفاده کنید.

در جدول زیر خواص مربوط به نوع MerchantInfo ذکر شده است:

ویژگی تایپ کنید شرح
merchantId رشته

شناسه بازرگان Google توسط Google Pay برای شما صادر شده است.

merchantName رشته

ضروری.

نام بازرگان به عنوان UTF-8 رمزگذاری شده است. نام بازرگان در برگه پرداخت ارائه می شود.

onfulfillmentpaymentdata

از این شی برای ارسال داده های اضافی برای پرداخت "on_fulfillment" استفاده کنید.

در جدول زیر خواص مربوط به نوع OnFulfillmentPaymentData ذکر شده است:

ویژگی تایپ کنید شرح
supportedPaymentOptions لیست PaymentOptionsEnums

لیست گزینه های پرداخت در زمان تحقق سفارش در دسترس کاربر.

مثال زیر یک عنصر OnFulfillmentPaymentData را نشان می دهد:

مثال

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

مولفه های

انواع مربوط به TokenizationParameters را تعریف می کند.

در جدول زیر خصوصیات نوع Parameters ذکر شده است:

ویژگی تایپ کنید شرح
gateway رشته

ضروری.

مثال: braintree

gatewayMerchantId رشته
[additionalKey: 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

ضروری.

نسخه اصلی API.

مقدار: 2

apiVersionMinor Const

ضروری.

نسخه API جزئی.

ارزش: 0

merchantInfo MerchantInfo

ضروری.

(Google Pay Merchant ID) اطلاعات مربوط به بازرگانی که درخواست پرداخت داده است.

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 نشان داده شده است:

ویژگی تایپ کنید شرح
displayName رشته

ضروری.

نام قابل مشاهده کاربر ابزار پرداخت برای نمایش در رسید.

paymentType PaymentType

ضروری.

googleProvidedPaymentInstrument GoogleProvidedPaymentInstrument

نشانه ای که می تواند توسط عمل استفاده شود. فقط این موضوع را مشخص کنید اگر GoogleProvidePaymentOptions را به عنوان یک گزینه پرداخت در 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"
}

روش پرداخت

از این شی برای پیکربندی پشتیبانی سایت خود برای API Google Pay استفاده کنید.

در جدول زیر خواص مربوط به نوع PaymentMethod ذکر شده است:

ویژگی تایپ کنید شرح
type Const

ضروری.

شناسه کوتاه برای روش پرداخت پشتیبانی شده. در حال حاضر فقط کارت پشتیبانی می شود.

ارزش: CARD

parameters CardParameters

ضروری.

پارامترهای مورد نیاز برای پیکربندی نوع روش پرداخت ارائه شده.

tokenizationSpecification TokenizationSpecification

ضروری.

برای دریافت اطلاعات پرداخت ، یک حساب یا ارائه دهنده رمزگشایی را پیکربندی کنید. این ملک برای روش پرداخت کارت مورد نیاز است.

مثال زیر یک عنصر PaymentMethod را نشان می دهد:

مثال

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

گزینه های پرداخت

در جدول زیر خواص مربوط به نوع 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 دارای مقادیر ممکن زیر است:

  • Cash
  • Card
  • UPI
  • Paytm

نوع پرداخت

نوع PaymentType مقادیر ممکن زیر را دارد:

  • PAYMENT_CARD : برای GoogleProvidePaymentOptions.
  • ON_FULFILLMENT : برای ActionProvidePaymentOptions.

پشتیبانی از کارتهای پشتیبانی

انواع مربوط به GoogleProvidedPaymentOptions را تعریف می کند.

نوع SupportedCardNetworks مقادیر ممکن زیر را دارد:

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

پارامترهای توکن سازی

انواع مربوط به GoogleProvidedPaymentOptions را تعریف می کند.

در جدول زیر خواص مربوط به نوع TokenizationParameters ذکر شده است:

ویژگی تایپ کنید شرح
tokenizationType Enum [ "UNSPECIFIED_TOKENIZATION_TYPE", "PAYMENT_GATEWAY" ]

ضروری.

در عوض از تسهیل استفاده کنید. نوع نشانه های قابل قبول.

parameters Parameters

در عوض از تسهیل استفاده کنید.

تصحیح tokenizations

این شی به شما امکان می دهد تا یک حساب کاربری را برای دریافت اطلاعات پرداخت قابل پرداخت پیکربندی کنید.

در جدول زیر خصوصیات نوع 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 ذکر شده است:

ویژگی تایپ کنید شرح
currencyCode رشته

ضروری.

کد ارز الفبایی ISO 4217.

transactionId رشته

شناسه منحصر به فرد که یک تلاش معامله را مشخص می کند. بازرگانان ممکن است از یک شناسه موجود استفاده کنند یا یک مورد خاص را برای تلاش های معامله Google Pay تولید کنند. این قسمت هنگام ارسال تماس تلفنی به API رویدادهای معامله Google مورد نیاز است.

totalPriceStatus Const

ضروری.

از "تخمین زده شده" به عنوان پیش فرض استفاده کنید. قیمت کل ممکن است براساس جزئیات پاسخ ، مانند مالیات فروش جمع آوری شده بر اساس آدرس صورتحساب تنظیم شود.

مقدار: ESTIMATED

totalPrice رشته

ضروری.

ارزش پولی کل معامله با دقت اعشاری اختیاری از دو مکان اعشاری. این قسمت باید همان مقدار Cart.TotalPrice را داشته باشد.

مثال زیر یک عنصر TransactionInfo را نشان می دهد:

مثال

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