기본 유형
장바구니
주문 세부정보 및 요청의 수령 여부 포함 배송을 예로 들 수 있습니다 장바구니에는 배송 세부정보, 봉사료, 배송 상품도 포함되어 있습니다. 있습니다.Cart
객체는 Checkout AppRequest
.f에 정의되어 있습니다.
Checkout AppResponse
에 장바구니 사본을 포함합니다.
다음 표에는 Cart
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 |
이 객체의 유형입니다. 상위 장바구니 객체가 ProposedOrder의 일부인 경우 이 필드를 생략합니다. 값: |
|
id |
String |
장바구니의 ID입니다(선택사항). |
|
merchant |
Merchant |
이 장바구니와 연결된 판매자입니다. |
|
lineItems |
목록<LineItem > |
필수 항목입니다. 사용자가 주문하는 상품 또는 서비스의 목록입니다. 항목이 1개 이상이어야 합니다. |
|
promotions |
목록<Promotion > |
이 장바구니에 적용된 프로모션입니다. 현재 하나의 프로모션만 지원됩니다. |
|
notes |
String |
주문 또는 배송 안내에 관한 참고사항 |
|
extension |
FoodCartExtension |
fulfillment 환경설정 등 사용자에 관한 세부정보를 정의합니다. |
다음 예는 Cart
요소를 보여줍니다.
예시 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.Cart", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
예 2
{ "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }
문의
주문을 받는 사람에 대한 세부정보를 지정합니다. 다음에서만 사용할 수 있습니다.AppResponse
다음 표에는 Contact
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
displayName |
String |
표시하려는 주문을 받는 사람의 이름입니다. firstName과 lastName이 지정되지 않은 경우 이 필드를 사용합니다. 예: |
|
email |
String |
주문 상품을 수령하는 사람의 이메일 주소 예: |
|
firstName |
String |
주문을 받는 사람의 이름입니다. 예: |
|
lastName |
String |
주문을 받는 사람의 성 예: |
|
phoneNumber |
String |
국가 코드를 포함한 주문 상품을 수령하는 사람의 전화번호 예: |
|
emailVerified |
Boolean |
주문 상품을 받는 사람이 Google 계정으로 로그인했는지 여부를 나타냅니다. |
다음 예는 Contact
요소를 보여줍니다.
예
{ "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" }
CustomPushMessage
요청의OrderUpdate
를 포함합니다.
다음 표에는 CustomPushMessage
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
orderUpdate |
OrderUpdate |
필수 항목입니다. 주문 정보가 업데이트되었습니다. |
다음 예는 CustomPushMessage
요소를 보여줍니다.
예
{ "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } }
DeliveryInfo
다음 표에는 DeliveryInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
deliveryTimeIso8601 |
String |
예상 배송 시간(ISO 8601 타임스탬프 형식): "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" 또는 기간 형식: 'P(n)Y(n)M(n)DT(n)H(n)M(n)S'. 예를 들어 PT90M은 90분의 지속 시간을 나타냅니다. 기본값 'PT0M'은 선호하는 배송 기간을 최대한 빨리 지정함을 나타냅니다. 참조: https://ko.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations 결제 응답을 통해 예상 배송 기간을 업데이트하려면 이 속성을 사용하세요. 예: |
다음 예는 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 또는 프로모션에 잘못된 데이터가 포함되어 있습니다.NOT_FOUND
: LineItem, FulfillmentOption 또는 프로모션을 찾을 수 없습니다.PRICE_CHANGED
: 상품 가격이 변경되었습니다.
FeeAmountRange
다음 표에는 FeeAmountRange
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
minFeeAmount |
Money |
청구되는 수수료 금액의 하한입니다. |
|
maxFeeAmount |
Money |
청구되는 수수료 금액의 상한선.. |
FeePercentRange
다음 표에는 FeePercentRange
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
minFeePercent |
숫자 |
청구된 수수료율의 하한입니다. |
|
maxFeePercent |
숫자 |
청구된 수수료 비율의 상한선입니다. |
FoodCartExtension
처리 환경설정과 같은 사용자 세부정보가 포함됩니다.
다음 표에는 FoodCartExtension
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 |
이 확장 프로그램의 유형입니다. 이 필드는 항상 'type.googleapis.com/google.actions.v2.orders.FoodCartExtension'으로 설정됩니다. 값: |
|
contact |
Contact |
주문 상품을 수령하는 사람의 연락처 정보 세부정보에는 사용자의 이름, 전화번호, 이메일 주소가 포함됩니다. |
|
fulfillmentPreference |
FulfillmentOption |
필수 항목입니다. 사용자의 처리 환경설정 |
|
location |
Location |
CheckoutRequestMessage에서 이 필드는 주문이 배송되는 경우 필수인 배송지 주소를 지정합니다. 테이크아웃 또는 포장 주문인 경우 이 필드가 메시지에 포함되지 않습니다. |
다음 예는 FoodCartExtension
요소를 보여줍니다.
예시 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } }
예 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } }
FoodErrorExtension
요청을 처리하는 동안 발생한 하나 이상의 오류를 식별합니다. 다음 표에서는FoodErrorExtension
유형의 필드를 설명합니다.
CheckoutResponse
에서 오류를 전송할 수 있습니다.
다음 표에는 FoodErrorExtension
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 | 필수 항목입니다. 이 확장 프로그램의 유형입니다. 값: |
|
foodOrderErrors |
목록<FoodOrderError > |
필수 항목입니다. 발생한 오류를 설명하는 FoodOrderError 객체의 배열입니다. 장바구니 또는 상품당 오류 1개를 사용하는 것이 좋습니다. 항목이 1개 이상이어야 합니다. |
|
correctedProposedOrder |
ProposedOrder |
필요한 경우
수정사항이 포함된 새로운 제안 주문입니다. 원래 ProposedOrder에 복구 가능한 오류가 있으면 이 객체를 반환합니다. 예를 들어 장바구니에 있는 하나 이상의 광고 항목 가격이 변경되면 복구할 수 있는 오류입니다. 유효한 ProposedOrder가 있는 복구 가능한 오류는 사용자에게 장바구니 검토를 요구하지 않고 확인 단계로 진행됩니다. |
|
paymentOptions |
PaymentOptions |
필요한 경우
사용자에 대해 선택된 기본 결제 옵션입니다. |
|
additionalPaymentOptions |
목록<PaymentOptions > |
사용자가 대체 결제 옵션을 사용할 수 있습니다. |
다음 예는 FoodErrorExtension
요소를 보여줍니다.
예
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_1", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, { "error": "PRICE_CHANGED", "id": "sample_item_offer_id_2", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "8" } } ], "correctedProposedOrder": { "id": "sample_corrected_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true } } }
FoodItemExtension
식품의 부가기능을 정의합니다.
다음 표에는 FoodItemExtension
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 | 필수 항목입니다. 이 확장 프로그램의 유형입니다. 이 필드는 항상 'type.googleapis.com/google.actions.v2.orders.FoodItemExtension'으로 설정됩니다. 값: |
|
options |
목록<FoodItemOption > |
옵션은 부가기능 항목 또는 부가기능 집합이 포함된 부가기능 그룹일 수 있습니다. |
다음 예는 FoodItemExtension
요소를 보여줍니다.
예
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 } ] } ] }
FoodItemOption
다음 표에는 FoodItemOption
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
id |
String |
Google에서 할당한 고유 ID FoodOrderError 또는 AsyncOrderUpdateRequest를 전송할 때 이 필드를 사용하여 장바구니에 동일한 offerId의 상품이 두 개 이상 포함된 경우를 구분할 수 있습니다. 예: |
|
offerId |
String |
상품의 혜택 ID입니다. 예: |
|
name |
String |
옵션 이름입니다. 예: |
|
price |
Money |
||
note |
String |
옵션과 관련된 참고사항입니다. |
|
quantity |
숫자 |
항목인 옵션의 경우 항목 수입니다. 예: |
|
subOptions |
목록<FoodItemOption > |
옵션의 하위 옵션입니다(있는 경우). 예: |
다음 예는 FoodItemOption
요소를 보여줍니다.
예시 1
{ "id": "10293231", "offerId": "1918491", "name": "Honey Mustard", "price": { "currencyCode": "USD", "units": "1", "nanos": 250000000 }, "quantity": 5 }
예 2
{ "id": "123166552", "offerId": "912849184", "name": "Make It A Meal", "price": { "currencyCode": "USD", "units": "3", "nanos": 730000000 }, "quantity": 1, "subOptions": [ { "id": "10239138", "offerId": "912391723", "name": "Fries", "price": { "currencyCode": "USD", "units": "2", "nanos": 230000000 }, "quantity": 1 }, { "id": "57159183", "offerId": "81837123", "name": "Drink", "price": { "currencyCode": "USD", "units": "3", "nanos": 130000000 }, "quantity": 1 } ] }
FoodOrderError
CheckoutResponse
의 오류에 관한 세부정보가 포함되어 있습니다.
다음 표에는 FoodOrderError
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
error |
Error |
필수 항목입니다. |
|
id |
String | 필요한 경우
상품 수준 오류의 경우 필수 입력란입니다. Google에서 할당한 LineItem.id(메뉴 항목의 경우) 또는 FoodItemOption.id(부가기능의 경우)입니다. |
|
description |
String |
오류에 대한 설명입니다. 이 설명은 내부 로깅용이며 사용자에게는 표시되지 않습니다. |
|
updatedPrice |
Money |
필요한 경우
오류가 발생한 상품의 새로운 가격입니다. 오류가 'PRICE_CHANGED'인 경우에만 필요합니다. |
|
availableQuantity |
정수 | 필요한 경우
오류가 발생한 상품의 새 재고 수량입니다. 오류가 'INVALID'인 경우에만 필요합니다. 또는 'NOT_FOUND'. 'INVALID'의 경우 값이 0이어야 합니다. 'NOT_FOUND'입니다. |
다음 예는 FoodOrderError
요소를 보여줍니다.
예시 1
{ "error": "CLOSED", "description": "This store is currently reachable. Please try again later." }
예 2
{ "error": "PRICE_CHANGED", "id": "french_fries", "description": "The price has changed.", "updatedPrice": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }
FoodOrderExtension
주문의 처리 정보가 포함됩니다.
다음 표에는 FoodOrderExtension
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 |
이 확장 프로그램의 유형입니다. 이 입력란은 항상 'type.googleapis.com/google.actions.v2.orders.FoodOrderExtension'으로 설정됩니다. 값: |
|
availableFulfillmentOptions |
목록<FulfillmentOption > |
주문에 사용 가능한 처리 옵션을 나타냅니다. |
|
optinForRemarketing |
Boolean |
마케팅 채널 수신 동의를 위한 사용자 요청입니다. 기본적으로 사용자 동의 없이 마케팅 콘텐츠를 전송할 수 없습니다. optinFor리마케팅이 true이면 사용자를 구독할 수 있습니다. optinFor리마케팅이 false이거나 존재하지 않는 경우 시스템에서 구독 상태를 그대로 유지해야 합니다. 사용자는 Google을 통해 수신을 거부할 수 없으며 마케팅 채널에서 제공하는 수신 거부 기능을 통해서만 수신 해제할 수 있습니다. 이 플래그는 SubmitOrderRequestMessage에만 있습니다. |
다음 예는 FoodOrderExtension
요소를 보여줍니다.
예시 1
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] }
예 2
{ "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2020-08-20T11:41:00Z" } ], "optinForRemarketing": true }
FulfillmentOption
다음과 같은 방법으로FulfillmentOption
객체를 사용할 수 있습니다.
-
Checkout AppRequest
및Submit AppRequest
,Cart.extension.fulfillmentPreference
: 사용자의 환경설정 저장 (전송) 또는 승차). 결제 요청이 전송될 때 가격은 항상 0입니다. -
Checkout AppResponse
에서ProposedOrder.extension.availableFulfillmentOptions
: 하나 이상의 게재 옵션을 정의합니다 (현재는 하나의 옵션만 지원됨). 다음에서 기본 옵션을LineItem
로 지정합니다.ProposedOrder.otherItems
입니다.offerId
FulfillmentOption
는ProposedOrder.otherItems
에 지정된LineItem
입니다.
다음 표에는 FulfillmentOption
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
offerId |
String |
이 처리 옵션의 고유 식별자입니다(있는 경우). |
|
fulfillmentInfo |
FulfillmentOptionInfo |
필수 항목입니다. |
|
expiresAt |
ISO 타임스탬프 |
이 처리 옵션이 만료되는 시간입니다. |
|
price |
Money |
이 옵션의 비용입니다. |
다음 예는 FulfillmentOption
요소를 보여줍니다.
예
{ "offerId": "offer5", "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2019-05-02T00:00:00-07:00", "price": { "currencyCode": "USD", "units": "5", "nanos": 230000000 } }
FulfillmentOptionInfo
FulfillmentInfo
관련 정보를 정의합니다.
다음 표에는 FulfillmentOptionInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
다음 속성 그룹 중 하나만 필요합니다. | |||
delivery |
그룹 1 | DeliveryInfo |
있는 경우 전송 순서를 나타냅니다. |
pickup |
그룹 2 | PickupInfo |
있는 경우 수령 주문을 나타냅니다. |
이미지
다음 표에는 Image
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
sourceUrl |
String | 필수 항목입니다. 이미지의 URL입니다. 이미지는 최소 72x72픽셀이어야 합니다. 최상의 결과를 얻으려면 216x216픽셀 이상의 이미지를 사용하세요. 이미지는 6MB 및 64메가픽셀 미만이어야 합니다. |
LineItem
장바구니의 콘텐츠 (Cart.lineItems
) 또는 상품의 추가 요금을 정의합니다.
주문 (ProposedOrder.otherItems
)
다음 표에는 LineItem
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
id |
String | 필요한 경우
장바구니에 있는 상품 (ProposedOrder.cart.lineItems[0].id)의 경우 주문을 생성할 때 Google에서 생성한 고유 ID입니다. 배송비 및 세금 등의 항목을 추가하는 데 사용되는 ProposedOrder.otherItems[0].id의 광고 항목 (ProposedOrder.otherItems[0].id)의 경우 제공업체가 ID 값을 정의합니다. 예를 들어 장바구니에 준비 방법이 다른 동일한 항목이 두 개 있습니다 (예: 토핑 세트가 다른 미디엄 피자 두 개). 이 경우 두 항목 모두 기본 offerId가 동일합니다. 상품이 거부되었음을 나타내기 위해 주문 업데이트 요청을 보낼 때 이 ID를 구분자로 사용합니다. 즉, 피자 중 하나가 특정 토핑이 없어서 거부된 경우 ID는 Google에서 사용자가 참조하는 순서에서 어떤 항목을 확인하는 데 도움이 됩니다. 이 필드는 otherItems를 제외하고 필수입니다. |
|
name |
String | 필수 항목입니다. 광고 항목의 이름입니다. 사용자에게 표시되는 문자열이며 '배송비', '서비스 요금', '세금'과 같이 가능한 경우 문장 첫 글자를 대문자로 표기해야 합니다. 이 입력란은 사용자에 대해 100자(영문 기준)에서 잘립니다. |
|
type |
LineItemType |
필수 항목입니다. |
|
quantity |
정수 | 필요한 경우
포함된 항목 수입니다. ProposedOrder.otherItems에는 적용되지 않습니다. |
|
description |
String |
항목의 설명입니다. |
|
price |
Price |
필수 항목입니다. 상품의 가격입니다. 이 값은 이 광고 항목에 대한 모든 상품 또는 서비스의 총 가격을 반영합니다 (즉, 부가 항목 비용을 더하고 수량을 곱함). 예: 가격이 $10인 상품의 수량이 3개라면 가격은 $30입니다. 기본 가격이 5,000원이고 부가 채널이 1,000원인 피자 1개의 경우 가격은 6,000원입니다. 기본 가격이 5,000원이고 부가 채널이 각각 1,000원인 피자 2개 (수량 = 2)의 가격은 12,000원입니다. 가격이 '0'이어도 각 LineItem에는 가격이 있어야 합니다. 유형이 DISCOUNT인 경우 값을 음수로 지정합니다 (예: '-2'). |
|
subLines |
목록<SublineNote > |
선택사항이며 유형이 'REGULAR'인 경우에만 유효합니다. 결제 요청 및 주문 제출 요청의 이 입력란을 통해 사용자의 상품별 메모를 보낼 수 있습니다. 메모를 제공했을 때 판매자가 메모를 받도록 합니다. 요청에 subLines[0].note로 표시되며, 요청에 있을 때 이 필드에 제공되는 유일한 값입니다. 항목이 1개 이하여야 합니다. |
|
offerId |
String | 필요한 경우
항목에 관한 MenuItem의 제공 ID입니다. ProposedOrder.otherItems에는 적용되지 않습니다. |
|
extension |
FoodItemExtension |
식품의 부가기능을 정의합니다. |
다음 예는 LineItem
요소를 보여줍니다.
예시 1
{ "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }
예 2
{ "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }
LineItemType
LineItemType
유형에 사용 가능한 값은 다음과 같습니다.
REGULAR
: 상품 광고 항목입니다. Cart.lineItems에 적용됩니다.TAX
: 세금 광고 항목입니다. ProposedOrder.otherItems에 적용할 수 있습니다.DISCOUNT
: 할인 광고 항목입니다. 가격은 음수여야 합니다. ProposedOrder.otherItems에 적용할 수 있습니다.GRATUITY
: 봉사료 광고 항목. 일반적으로 사용자가 선택한 팁의 SubmitOrderRequestMessage를 위해 예약됩니다. ProposedOrder.otherItems에 적용할 수 있습니다.DELIVERY
: 게재 광고 항목입니다. ProposedOrder.otherItems에 적용할 수 있습니다.SUBTOTAL
: 소계 광고 항목. ProposedOrder.otherItems에 적용할 수 있습니다.FEE
: 다른 유형에 포함되지 않는 추가 광고 항목입니다. ProposedOrder.otherItems에 적용할 수 있습니다.
위치
음식 주문을 위한 주소를 지정합니다.Location
유형은
Cart
을 사용하여 배송 주문의 목적지만 나타낼 수 있습니다.
최종 위치는
TransactionDecisionValue
주문 내역을 확인할 수 있습니다. 수령이 지정된 주문인 경우 위치는
전혀 포함되지 않습니다 (빈 클래스도 아님).
다음 표에는 Location
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
coordinates |
Coordinates |
||
formattedAddress |
String |
위치의 표시 주소입니다. 예: |
|
postalAddress |
PostalAddress |
||
zipCode |
String |
예: |
|
city |
String |
도시 이름입니다. 예: |
|
notes |
String |
게이트 코드와 같은 위치에 대한 메모입니다. 500자(영문 기준) 이하여야 합니다. 예: |
다음 예는 Location
요소를 보여줍니다.
예
{ "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" }
판매자
다음 표에는 Merchant
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
id |
String |
판매자의 ID입니다. 지정된 경우 레스토랑 피드의 Restaurant.@id와 일치합니다. 예: |
|
name |
String | 필수 항목입니다. 사용자가 볼 수 있는 판매자 이름입니다. 예: |
다음 예는 Merchant
요소를 보여줍니다.
예
{ "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }
Money
다음 표에는 Money
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
currencyCode |
String | 필수 항목입니다. ISO 4217 형식의 3자리 통화 코드입니다. 예: |
|
units |
String |
금액의 전체 단위입니다. 예를 들어currencyCode가 'USD'인 경우 '1'입니다. 단위는 미화 1달러입니다. 예: |
|
nanos |
정수 |
금액의 나노 (10^-9) 단위 숫자입니다. 값은 -999,999,999 이상 +999,999,999 이하여야 합니다. 다음 규칙을 사용하세요. 단위가 양수이면 나노가 양수 또는 0이어야 합니다. 단위가 0인 경우에는 나노가 양수, 0 또는 음수가 될 수 있습니다. 단위가 음수이면 나노가 음수 또는 0이어야 합니다. 예를 들어 $-1.75는 단위 = -1, 나노값 = -750,000,000으로 표시됩니다. 예: |
다음 예는 Money
요소를 보여줍니다.
예시 1
{ "currencyCode": "USD", "units": "36", "nanos": 730000000 }
예 2
{ "currencyCode": "EUR", "units": "10" }
주문
세금, 수수료, 배송료가 포함된 최종 주문이 포함됩니다. 결제 정보도 표시됩니다 이 객체는Submit AppRequest
다음 표에는 Order
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
finalOrder |
ProposedOrder |
필수 항목입니다. 주문을 발생시킨 제안된 주문입니다. |
|
googleOrderId |
String | 필수 항목입니다. Google에서 할당한 주문 ID입니다. 이 ID는 주문의 전체 수명 주기 동안 안정적이어야 합니다. 이 ID는 최종 사용자에게는 표시되지 않습니다. |
|
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 |
String | 필수 항목입니다. 업데이트가 전송되는 주문을 식별하는 데 사용되는 통합업체 시스템 내 주문의 고유 ID입니다. 'CREATED'에 대해 OrderUpdate에서 receive.user_visible_order_id가 한 번 이상 제공되지 않은 경우 주문인 경우 이 ID가 입력된 사용자 표시 ID가 Google 주문 카드에 표시됩니다. |
|
orderState |
OrderState |
필수 항목입니다. 주문의 새 상태입니다. |
|
lineItemUpdates |
맵<문자열, LineItemUpdate > |
||
updateTime |
ISO 타임스탬프 | 필수 항목입니다. 주문이 업데이트된 시간입니다. |
|
orderManagementActions |
목록<OrderManagementAction > |
지원팀에 문의 및 주문 세부정보 보기와 같은 주문 후 작업 항목 1개 이상 항목 6개 이하여야 합니다. |
|
rejectionInfo |
RejectionInfo |
필요한 경우
|
|
cancellationInfo |
CancellationInfo |
필요한 경우
|
|
inTransitInfo |
InTransitInfo |
이 필드는 지원 중단되었습니다. |
|
fulfillmentInfo |
FulfillmentInfo |
이 필드는 지원 중단되었습니다. |
|
receipt |
Receipt |
필요한 경우
영수증에 사용자에게 표시되는 주문 ID를 제공합니다. |
|
totalPrice |
Price |
총 주문 가격입니다. |
|
infoExtension |
FoodOrderUpdateExtension |
예상 배송 시간 또는 수령 간격과 같은 주문 업데이트에 관한 세부정보를 정의합니다. |
다음 예는 OrderUpdate
요소를 보여줍니다.
예
{ "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "41", "nanos": 600000000 } }, "lineItemUpdates": { "sample_item_id_1": { "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "reason": "This item has an updated price." } }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } }
PickupInfo
다음 표에는 PickupInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
pickupTimeIso8601 |
String |
예상 수령 시간(ISO 8601 타임스탬프 형식): "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" 또는 기간 형식: 'P(n)Y(n)M(n)DT(n)H(n)M(n)S'. 예를 들어 PT90M은 90분의 지속 시간을 나타냅니다. 기본값 'PT0M'은 선호하는 승차 시간이 최대한 빠르다는 것을 나타냅니다. 참조: https://ko.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations 결제 응답 시 예상 수령 시간을 업데이트하려면 이 속성을 사용합니다. 예: |
다음 예는 PickupInfo
요소를 보여줍니다.
예
{ "pickupTimeIso8601": "PT90M" }
PostalAddress
다음 표에는 PostalAddress
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
regionCode |
String | 필수 항목입니다. 2자리 국가 코드입니다. 예: |
|
postalCode |
String |
우편번호입니다. 예: |
|
administrativeArea |
String |
국가 또는 지역의 주소에 사용되는 최상위 행정 구역 단위입니다. 주, 도, 현이 될 수 있습니다. 예: |
|
locality |
String |
이 위치의 시/군/구입니다. 지역이 잘 정의되어 있지 않거나 이 구조에 맞지 않는 지역에서는 지역을 지정하지 말고 addressLines 필드를 사용하세요. 예: |
|
addressLines |
List<String> |
상세 주소를 지정하는 데 사용할 수 있는 하나 이상의 줄입니다. 이 입력란은 불분명한 지역을 포함할 수 있으므로 수정해서는 안 됩니다. 예: |
|
recipients |
List<String> |
주문의 수신자 목록입니다. 이 필드는 billingAddress에서만 사용할 수 있습니다. |
다음 예는 PostalAddress
요소를 보여줍니다.
예
{ "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }
가격
다음 표에는 Price
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
type |
Enum [
"ESTIMATE",
"ACTUAL"
] |
필수 항목입니다. 프로모션 쿠폰 코드 |
|
amount |
Money |
필수 항목입니다. |
프로모션
다음 표에는 Promotion
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
coupon |
String | 필수 항목입니다. 프로모션 쿠폰 코드 |
ProposedOrder
다음 표에는 ProposedOrder
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
id |
String |
제안된 주문의 ID입니다(선택사항). |
|
cart |
Cart |
필수 항목입니다. 사용자의 항목입니다. |
|
otherItems |
목록<LineItem > |
배송비, 기타 수수료, 세금 등 제공업체가 추가하는 항목입니다. otherItems에는 사용자가 추가한 봉사료 및/또는 할인이 포함될 수 있습니다. 항목이 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" } ] } }
SublineNote
다음 표에는 SublineNote
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
note |
String | 필수 항목입니다. |
타임스탬프
다음 형식의 날짜 및 시간입니다.
"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
TransactionDecisionValue
Order
를 포함합니다.
다음 표에는 TransactionDecisionValue
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
order |
Order |
필수 항목입니다. 결제 세부정보가 포함된 주문입니다. |
다음 예는 TransactionDecisionValue
요소를 보여줍니다.
예
{ "order": { "finalOrder": { "cart": { "notes": "Guest prefers their food to be hot when it is delivered.", "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Cucina Venti" }, "lineItems": [ { "name": "Sizzling Prawns Dinner", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "16", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Lovefood Ordering", "email": "ilovefood@example.com", "phoneNumber": "+16501234567" } } }, "otherItems": [ { "name": "Service fee", "type": "FEE", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } } }, { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 590000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "23", "nanos": 710000000 } }, "id": "sample_final_order_id", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ], "optinForRemarketing": true } }, "googleOrderId": "sample_google_order_id", "orderDate": "2017-07-17T12:00:00Z", "paymentInfo": { "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" } } }
처리 요청
AppRequest
다음 표에는 AppRequest
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
isInSandbox |
Boolean |
후속 트랜잭션이 샌드박스 환경에서 수행되는지 여부를 나타냅니다. |
|
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
SubmitOrderRequestMessage
는 AppRequest
입니다.
(actions.foodordering.intent.TRANSACTION_DECISION
인텐트 사용)
대화
Conversation
는 세션 하나에서만 고유합니다. 이를 사용하여 여러 개의
필요한 경우 Checkout
및 SubmitOrder
작업을 함께 사용합니다.
다음 표에는 Conversation
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
conversationId |
String | 필수 항목입니다. 대화의 고유 ID입니다. |
다음 예는 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개가 있어야 합니다. |
인수
사용자가 결제하려는 식품의 세부정보가 포함되어 있습니다. 결제의 경우 연장만 적용됩니다. 주문 제출의 경우transactionDecisionValue만 적용할 수 있습니다.
다음 표에는 Argument
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
다음 속성 그룹 중 하나만 필요합니다. | |||
extension |
그룹 1 | Cart |
사용자가 결제하려는 식품을 자세히 설명합니다. |
transactionDecisionValue |
그룹 2 | TransactionDecisionValue |
여기에는 결제 세부정보와 함께 주문이 포함됩니다. |
처리 응답
AppResponse
다음 표에는 AppResponse
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
expectUserResponse |
컨스트 |
false로 설정합니다. 값: |
|
finalResponse |
FinalResponse |
필수 항목입니다. 장바구니 결제에 대한 응답이 포함됩니다. |
다음 예는 AppResponse
요소를 보여줍니다.
예시 1
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] } } } ] } } }
예 2
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+18005554679" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } } ] } } }
예시 3
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "The restaurant is closed." } ] } } } ] } } }
예 4
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "subLines": [], "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "OWG_ACTIVE_CODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "OWG_ACTIVE_CODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "14", "nanos": 860000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-04-10T01:20:08.471Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true } } } } } ] } } }
CheckoutResponseMessage
CheckoutResponseMessage
은 다음 항목이 있는 AppResponse
입니다.
checkoutResponse
또는 error
StructuredResponse
:
SubmitOrderResponseMessage
SubmitOrderResponseMessage
은 다음 항목이 있는 AppResponse
입니다.
StructuredResponse
의 orderUpdate
FinalResponse
장바구니 결제 또는 SubmitOrderRequestMessage에 대한 응답입니다.
다음 표에는 FinalResponse
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
richResponse |
RichResponse |
필수 항목입니다. CheckoutRequestMessage 또는 SubmitOrderRequestMessage에 대한 응답이 포함됩니다. |
CheckoutResponse
다음 표에는 CheckoutResponse
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
proposedOrder |
ProposedOrder |
필수 항목입니다. 거래에 사용할 제안된 주문입니다. |
|
paymentOptions |
PaymentOptions |
필수 항목입니다. 사용자에 대해 선택된 기본 결제 옵션 |
|
additionalPaymentOptions |
목록<PaymentOptions > |
사용자가 대체 결제 옵션을 사용할 수 있습니다. |
다음 예는 CheckoutResponse
요소를 보여줍니다.
예
{ "proposedOrder": { "id": "sample_proposed_order_id_1", "otherItems": [ { "name": "New customer discount", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": -500000000 } }, "type": "DISCOUNT" }, { "name": "Delivery fee", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 500000000 } }, "type": "TAX" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Pita Chips", "type": "REGULAR", "id": "sample_item_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "2", "nanos": 750000000 } }, "subLines": [ { "note": "Notes for this item." } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension", "options": [ { "id": "sample_addon_offer_id_1", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "name": "Honey Mustard", "price": { "currencyCode": "USD" }, "quantity": 1 }, { "id": "sample_addon_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id2", "name": "BBQ Sauce", "price": { "currencyCode": "USD", "nanos": 500000000 }, "quantity": 1 } ] } }, { "name": "Chicken Shwarma Wrap", "type": "REGULAR", "id": "sample_item_offer_id_2", "offerId": "https://www.exampleprovider.com/menu/item/offer/id2", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "8" } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Greek Salad", "type": "REGULAR", "id": "sample_item_offer_id_3", "offerId": "https://www.exampleprovider.com/menu/item/offer/id3", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } }, { "name": "Prawns Biryani", "type": "REGULAR", "id": "sample_item_offer_id_4", "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "15", "nanos": 990000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P90M" } } }, "location": { "coordinates": { "latitude": 37.788783, "longitude": -122.41384 }, "formattedAddress": "1350 CHARLESTON ROAD, MOUNTAIN VIEW, CA, United States", "zipCode": "94043", "city": "Mountain View", "postalAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] }, "notes": "Gate code is #111" } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "36", "nanos": 730000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } }, "expiresAt": "2017-07-17T12:30:00Z" } ] } }, "paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }, "additionalPaymentOptions": [ { "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Cash on delivery." } } ] }
항목
장바구니 결제 또는 SubmitOrderRequestMessage에 대한 응답이 포함됩니다.
다음 표에는 Item
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
structuredResponse |
StructuredResponse |
필수 항목입니다. |
RichResponse
장바구니 결제에 대한 응답이 포함됩니다.
다음 표에는 RichResponse
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
items |
목록<Item > |
필수 항목입니다. 정확히 항목 1개가 있어야 합니다. |
StructuredResponse
CheckoutResponseMessage의 경우 다음 중 하나일 수 있습니다. CheckoutResponse 결제 성공을 나타냅니다. OR FoodErrorExtension: 결제 중 실패를 나타냅니다. 응답에는 수정된 ProposedOrder 및 PaymentOptions 또는 PaymentOptions가 없는 오류 메시지가 포함될 수 있습니다. SubmitOrderResponseMessage의 경우 orderUpdate만 적용할 수 있습니다.
다음 표에는 StructuredResponse
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
다음 속성 그룹 중 하나만 필요합니다. | |||
checkoutResponse |
그룹 1 | CheckoutResponse |
확인한 상품(세금, 할인) |
error |
그룹 2 | FoodErrorExtension |
장바구니 상품에서 오류가 발견되었습니다. 오류의 특성에 따라 이 속성에는 수정된 ProposedOrder 및 PaymentOptions가 포함되거나 PaymentOptions가 없는 오류 메시지만 포함될 수 있습니다. |
orderUpdate |
그룹 3 | OrderUpdate |
비동기식 주문 업데이트
이 섹션에서는 요청을 구성하는 상위 수준 유형과 일반적인 음식 주문 내장 작업 상호작용의 응답입니다.AsyncOrderUpdateRequestMessage
주문이 제출 및 확인된 후 사용자에게 변경사항을 알립니다. 예를 들어 주문 상품이 배송 중이거나 배송 상품이 배송 중인지 사용자에게 알릴 수 있습니다. 가격이 변경되었습니다. 자세한 내용은 다음을 참조하시기 바랍니다.다음 표에는 AsyncOrderUpdateRequestMessage
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
isInSandbox |
Boolean |
이 업데이트가 전송된 주문이 샌드박스 결제임을 나타냅니다. |
|
customPushMessage |
CustomPushMessage |
필수 항목입니다. 요청에 대한 OrderUpdate를 포함합니다. |
다음 예는 AsyncOrderUpdateRequestMessage
요소를 보여줍니다.
예
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
AsyncOrderUpdateResponseMessage
AsyncOrderUpdateRequestMessage
를 성공적으로 전송하면 Google이 응답합니다.
HTTP 200 상태와 본문이 비어 있습니다 업데이트에 실패하면
Google에서는 주문 업데이트에 실패한 이유에 관한 세부정보를 응답으로 제공합니다.
주문 업데이트 유형
버튼
사용자 상호작용을 제공하기 위해 추가할 수 있는 사용자 인터페이스 요소를 정의합니다.
다음 표에는 Button
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
title |
String | 필수 항목입니다. 표시 라벨 적절한 렌더링을 위해 30자(영문 기준) 이하의 문장을 사용하세요. 예: |
|
openUrlAction |
OpenUrlAction |
필수 항목입니다. |
다음 예는 Button
요소를 보여줍니다.
예
{ "title": "Send us feedback", "openUrlAction": { "url": "mailto:person@example.com" } }
CancellationInfo
다음 표에는 CancellationInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
reason |
String | 필수 항목입니다. OrderState.state가 'CANCELLED'인 경우 거부에 대한 표시 가능한 텍스트 이유입니다. 예: |
다음 예는 CancellationInfo
요소를 보여줍니다.
예
{ "reason": "Insufficient inventory" }
FoodOrderUpdateExtension
이 유형은 사용자에게 주문이 이루어지는 예상 간격을 제공합니다.
배송 완료 또는 수령 준비 완료입니다. 이 확장 프로그램을
OrderUpdate
정보를 사용할 수 있거나 마지막으로 전송된 이후 변경된 경우.
처리 간격에 대한 보수적인 추정치를 제공하여 사용자가 항상 충족되어야 합니다. 예를 들어 주문 금액이 13:00에 전송된 경우 예상 간격을 오늘 12시 45분과 같이 교통 상황에 따른 변동성과 일치 13:15까지 표시됩니다.
ISO 8601 기간 또는 타임스탬프는
OrderUpdate
의 updateTime
(본질적으로 '현재')를
updateTime
+ duration
'지금'이 아니면 이 형식을 사용하지 마세요. 실제로는 합리적인 기대입니다.
ISO 8601 간격은 간격의 끝입니다.
다음 표에는 FoodOrderUpdateExtension
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
@type |
컨스트 |
이 확장 프로그램의 유형입니다. 이 필드는 항상 'type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension'으로 설정됩니다. 값: |
|
estimatedFulfillmentTimeIso8601 |
String |
주문 상품이 배송되거나 수령이 가능할 것으로 예상되는 시간입니다. 문자열은 ISO 8601 형식이어야 하며 고정된 단일 시간이 아닌 간격과 일치해야 합니다. 허용되는 규칙은 간격, 기간, 날짜/시간입니다. 이 필드는 정보를 사용할 수 있게 되거나 조기 또는 지연된 도착과 같은 변경사항이 있을 때 SubmitOrderResponseMessage 또는 AsyncOrderUpdateRequestMessage로 전송할 수 있습니다. 예: |
|
foodOrderErrors |
목록<FoodOrderError > |
주문 후 발생한 오류를 설명합니다. 장바구니 또는 상품당 오류 1개를 사용하는 것이 좋습니다. DeclineionInfo에서 다루지 않는 오류에는 FoodOrderUpdateExtension.FoodOrderErrors를 사용하세요. 항목이 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
<ph type="x-smartling-placeholder">다음 표에는 FulfillmentInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
다음 속성 그룹 중 하나만 필요합니다. | |||
deliveryTime |
그룹 1 | ISO 타임스탬프 |
FoodOrderingUpdateExtension 메시지에 예상FulfillmentTimeIso8601 사용 |
pickupTime |
그룹 2 | ISO 타임스탬프 |
FoodOrderingUpdateExtension 메시지에 예상FulfillmentTimeIso8601 사용 |
다음 예는 FulfillmentInfo
요소를 보여줍니다.
예시 1
{ "deliveryTime": "2017-05-10T02:36:38.803Z" }
예 2
{ "pickupTime": "2019-12-26T07:24:27.803Z" }
InTransitInfo
<ph type="x-smartling-placeholder">다음 표에는 InTransitInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
updatedTime |
ISO 타임스탬프 |
FoodOrderingUpdateExtension 메시지에 예상FulfillmentTimeIso8601 사용 |
다음 예는 InTransitInfo
요소를 보여줍니다.
예
{ "updatedTime": "2017-05-10T02:36:38.803Z" }
LineItemUpdate
다음 표에는 LineItemUpdate
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
orderState |
OrderState |
||
price |
Price |
||
reason |
String |
변경 이유입니다. 가격 변경에 필요합니다. |
다음 예는 LineItemUpdate
요소를 보여줍니다.
예
{ "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "5", "nanos": 500000000 } }, "reason": "Menu updated prices." }
OpenUrlAction
다음 표에는 OpenUrlAction
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
url |
String | 필수 항목입니다. 버튼을 클릭하거나 터치하여 트리거되는 작업입니다. 적용 가능한 접두사 목록은 orderManagementActionType에 따라 다릅니다. 'EMAIL': 접두사는 'mailto'여야 합니다. 'CALL': 접두사는 'tel'이어야 합니다. 'CUSTOMER_SERVICE': 접두사는 'mailto', 'tel', 'http' 또는 'https'여야 합니다. 예: |
OrderManagementAction
주문 관리를 사용하면 사용자가 주문 후 지원을 받을 수 있으며
제출 주문 내 각 OrderUpdate
AppResponse
이후에
AsyncOrderUpdateRequestMessage
특정 주문에 전송되는 주문 관리 작업은
있습니다.
예를 들어 'CREATED' CUSTOMER_SERVICE
는
고객 지원 전화에 문의할 수 있습니다. 그런 다음 '확인됨' 주, CUSTOMER_SERVICE
전화를 받을 수 있는 최선의 방법이 될 경우
고객 담당자에게 연락합니다. 마찬가지로 주문이 'FULFILLED' 상태인 경우 주
CUSTOMER_SERVICE
에서 지원 이메일 주소를 참조할 수 있습니다.
다음 표에는 OrderManagementAction
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
type |
OrderManagementActionType |
필수 항목입니다. |
|
button |
Button |
필수 항목입니다. |
다음 예는 OrderManagementAction
요소를 보여줍니다.
예시 1
{ "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }
예 2
{ "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }
OrderManagementActionType
OrderManagementAction
와 관련된 유형을 정의합니다.
OrderManagementActionType
유형에 사용 가능한 값은 다음과 같습니다.
CUSTOMER_SERVICE
: 주문 확인 페이지에 표시될 고객 서비스의 이메일 또는 연락처 번호입니다. 필수 항목입니다. openUrlAction.url 접두사는 'mailto', 'tel', 'http' 또는 'https'여야 합니다.EMAIL
: 주문 세부정보 페이지에서만 이메일을 보낼 수 있습니다. openUrlAction.url 접두사는 'mailto'여야 합니다.CALL_DRIVER
: 주문 세부정보 페이지의 통화 작업만 가능합니다. openUrlAction.url 접두사는 'tel'이어야 합니다.CALL_RESTAURANT
: 주문 세부정보 페이지의 통화 작업만 가능합니다. openUrlAction.url 접두사는 'tel'이어야 합니다.
OrderState
주문의 현재 상태입니다. 또한 OrderState
의 각 state
값도
의 구매 상태를 나타냅니다.
myaccount.google.com으로 로그인합니다.
다음 표에는 OrderState
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
state |
OrderStateEnum |
필수 항목입니다. |
|
label |
String | 필수 항목입니다. 사용자에게 표시되는 상태의 표시 문자열입니다. 첫 글자는 대문자로 표기합니다. 예: |
다음 예는 OrderState
요소를 보여줍니다.
예
{ "state": "CONFIRMED", "label": "Provider confirmed" }
OrderStateEnum
OrderState
와 관련된 유형을 정의합니다.
OrderStateEnum
유형에 사용 가능한 값은 다음과 같습니다.
CREATED
: 통합업체에서 생성했으며 제공업체의 확인을 기다리는 중입니다. 'Ordered' 구매 상태CONFIRMED
: 제공업체에서 주문을 확인했으며 활성 상태입니다. 'Accepted' 구매 상태REJECTED
: 통합업체 또는 제공업체가 주문을 거부했습니다. 'Declined' 구매 상태CANCELLED
: 사용자가 주문을 취소했습니다. '취소됨' 구매 상태IN_PREPARATION
: 음식이 준비 중입니다. '상태 알 수 없음'에 해당합니다. 구매 상태가 됩니다.READY_FOR_PICKUP
: 음식이 준비되었습니다. '수령 준비 완료'에 해당합니다. 구매 상태가 됩니다.IN_TRANSIT
: 주문 상품이 배송 중입니다. '진행 중' 구매 상태가 됩니다.FULFILLED
: 사용자가 주문한 상품을 수령함 'Picked up' 구매 상태
영수증
이 유형을 제출 주문AppResponse
으로 전송합니다.
여기서 OrderState
는 'CONFIRMED', 'FULFILLED' 또는 'IN_transit'입니다. 영수증 발송 시간:
userVisibleOrderId
를 사용할 수 있게 되는 시간 Kubernetes에서
후속 업데이트에서 영수증을 전송합니다.
다음 표에는 Receipt
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
userVisibleOrderId |
String | 필수 항목입니다. 주문이 '확인됨', '배송 중' 또는 '완료'인 경우 필수입니다. 이 필드는 이 주문에 대해 사용자에게 표시되는 단일 ID (일반적으로 식당의 주문 ID)이며 통합업체의 영수증과 Google 주문 카드에 모두 표시됩니다. 사용자는 이 ID를 사용하여 제공업체 및 통합업체의 고객 서비스 주문을 참조할 수 있어야 합니다. 지정된 OrderUpdate에서 이 ID를 한 번만 제공하면 됩니다. 이 필드가 제공될 때까지 actionOrderId는 userVisibleOrderId입니다. 예를 들어 식당에서 주문을 확인할 때까지 userVisibleOrderId가 없을 수 있습니다. 확인이 완료되면 OrderUpdate 및 영수증과 함께 AsyncOrderUpdateRequestMessage를 전송해야 합니다. |
다음 예는 Receipt
요소를 보여줍니다.
예
{ "userVisibleOrderId": "userVisibleId1234" }
RejectionInfo
다음 표에는 RejectionInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
type |
RejectionType |
필수 항목입니다. |
|
reason |
String |
내부 로깅에 사용된 거부 이유입니다. 이 필드는 사용자에게 표시되지 않습니다. |
다음 예는 RejectionInfo
요소를 보여줍니다.
예
{ "type": "PAYMENT_DECLINED", "reason": "There is an issue with payment processing." }
RejectionType
RejectionType
유형에 사용 가능한 값은 다음과 같습니다.
INELIGIBLE
: 정책 또는 위험 관련 문제로 인해 자격 요건을 충족하지 않는 사용자입니다.PAYMENT_DECLINED
: 결제 처리에 문제가 있습니다.UNAVAILABLE_SLOT
: DeliveryInfo 또는 PickupInfo에서 지정한 주문 시점에 주문을 미리 처리할 수 없습니다.PROMO_NOT_APPLICABLE
: 프로모션에 문제가 있습니다.UNKNOWN
: 기타 이유
결제 관련 유형
이 섹션에서는 음식 주문에 사용되는 결제 관련 유형을 설명합니다. 합니다.ActionProvidedPaymentOptions
작업 제공 결제 수단 요구사항
다음 표에는 ActionProvidedPaymentOptions
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
paymentType |
PaymentType |
필수 항목입니다. |
|
displayName |
String | 필수 항목입니다. 영수증에 표시된 결제 수단의 이름입니다. 예: |
|
onFulfillmentPaymentData |
OnFulfillmentPaymentData |
결제 유형 'ON_FULFILLMENT'에 대한 추가 데이터입니다. 예를 들어 이 필드를 사용하여 주문 처리 시 현금 또는 카드 지원 여부를 지정할 수 있습니다. |
다음 예는 ActionProvidedPaymentOptions
요소를 보여줍니다.
예
{ "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } }
AllowedAuthMethods
AllowedAuthMethods
유형에 사용 가능한 값은 다음과 같습니다.
PAN_ONLY
: 사용자의 Google 계정에 등록된 결제 카드와 연결된 인증 방법입니다. 반환된 결제 데이터에는 만료 월 및 만료 연도가 포함된 개인 계좌 번호 (PAN)가 포함됩니다.
AllowedCardNetworks
AllowedCardNetworks
유형에 사용 가능한 값은 다음과 같습니다.
AMEX
DISCOVER
INTERAC
JCB
MASTERCARD
VISA
BillingAddressParameters
이 객체를 사용하면 요청된 청구서 수신 주소에 대해 반환될 추가 필드를 설정할 수 있습니다.
다음 표에는 BillingAddressParameters
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
format |
String |
거래를 완료하려면 청구서 수신 주소 형식이 필요합니다. MIN: 이름, 국가 코드, 우편번호입니다. 전체: 이름, 상세 주소, 구/군/시, 주/도, 국가 코드, 우편번호. |
다음 예는 BillingAddressParameters
요소를 보여줍니다.
예시 1
{ "format": "MIN" }
예 2
{ "format": "FULL" }
CardParameters
이 객체를 사용하여 사이트의 Google Pay API 지원을 구성합니다.
다음 표에는 CardParameters
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
allowedAuthMethods |
List<Const> | 필수 항목입니다. 카드 거래를 인증하기 위해 지원되는 필드입니다. 항목이 1개 이상이어야 합니다. |
|
allowedCardNetworks |
목록<AllowedCardNetworks > |
필수 항목입니다. 지원하는 하나 이상의 카드 네트워크이며 Google Pay API에서도 지원됩니다. 항목이 1개 이상이어야 합니다. |
|
billingAddressRequired |
Boolean |
청구서 수신 주소가 필요한 경우 true로 설정하세요. 거래를 처리하는 데 필요한 경우에만 청구서 수신 주소를 요청하세요. 결제 과정에서 불편이 가중되고 전환율이 낮아질 수 있습니다. |
|
billingAddressParameters |
BillingAddressParameters |
billingAddressRequired가 true로 설정된 경우 반환되는 예상 필드입니다. |
|
cvcRequired |
Boolean |
TimesofMoney를 사용하는 경우 true로, 기타 모든 결제 대행업체는 false로 설정합니다. |
다음 예는 CardParameters
요소를 보여줍니다.
예시 1
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": false, "cvcRequired": false }
예 2
{ "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "AMEX", "DISCOVER" ], "billingAddressRequired": true, "billingAddressParameters": { "format": "MIN" }, "cvcRequired": false }
GoogleProvidedPaymentInstrument
다음 표에는 GoogleProvidedPaymentInstrument
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
instrumentToken |
String | 필수 항목입니다. 이전에 지정된 GoogleProvidedPaymentOptions에 따라 참여 Google Pay 대행업체에 사용자에게 청구하기 위한 결제 토큰을 포함하는 Base64 인코딩 문자열입니다. |
|
billingAddress |
PostalAddress |
결제의 청구서 수신 주소입니다. |
다음 예는 GoogleProvidedPaymentInstrument
요소를 보여줍니다.
예
{ "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1350 Charleston Road" ] } }
GoogleProvidedPaymentOptions
Google에서 제공하는 결제 수단의 요구사항
다음 표에는 GoogleProvidedPaymentOptions
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
facilitationSpecification |
String |
문자열 형식의 PaymentDataRequest JSON. 이 객체를 사용하여 사이트의 Google Pay API 지원을 구성합니다. |
|
supportedCardNetworks |
목록<SupportedCardNetworks > |
대신 facilitationSpecification을 사용하세요. 상담사가 지원하는 카드 네트워크 유형입니다. 이 필드는 지원 중단되었습니다. |
|
prepaidCardDisallowed |
Boolean |
대신 facilitationSpecification을 사용하세요. 선불카드가 결제 유형으로 허용되는지 여부입니다. 이 필드는 지원 중단되었습니다. |
|
billingAddressRequired |
Boolean |
대신 facilitationSpecification을 사용하세요. 청구서 수신 주소가 필요한지 여부입니다. 이 필드는 지원 중단되었습니다. |
|
tokenizationParameters |
TokenizationParameters |
이 필드는 지원 중단되었습니다. |
다음 예는 GoogleProvidedPaymentOptions
요소를 보여줍니다.
예시 1
{ "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" }
예 2
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "a1b2c3d4e5", "braintree:clientKey": "production_braintree_client_key", "braintree:authorizationFingerprint": "same_as_client_key" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "JCB", "VISA" ], "prepaidCardDisallowed": true }
예시 3
{ "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "pk_live_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true, "billingAddressRequired": true }
MerchantInfo
이 객체를 사용하여 사이트의 Google Pay API 지원을 구성합니다.
다음 표에는 MerchantInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
merchantId |
String |
Google Pay에서 발급한 Google 판매자 식별자입니다. |
|
merchantName |
String | 필수 항목입니다. UTF-8로 인코딩된 판매자 이름입니다. 판매자 이름이 결제 명세서에 렌더링됩니다. |
OnFulfillmentPaymentData
이 객체를 사용하여 PaymentType 'ON_FULFILLMENT'의 추가 데이터를 전송합니다.
다음 표에는 OnFulfillmentPaymentData
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
supportedPaymentOptions |
목록<PaymentOptionsEnums > |
주문 처리 시 사용자가 사용할 수 있는 결제 옵션 목록입니다. |
다음 예는 OnFulfillmentPaymentData
요소를 보여줍니다.
예
{ "supportedPaymentOptions": [ "Cash", "Card" ] }
매개변수
TokenizationParameters
와 관련된 유형을 정의합니다.
다음 표에는 Parameters
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
gateway |
String | 필수 항목입니다. 예: |
|
gatewayMerchantId |
String | ||
[additionalKey: string] |
String | 추가 키-값 쌍 |
다음 예는 Parameters
요소를 보여줍니다.
예시 1
{ "gatewayMerchantId": "90412491", "gateway": "olo" }
예 2
{ "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "YOUR_MERCHANT_ID", "braintree:clientKey": "YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY" }
PaymentDataRequest
이 객체를 사용하여 사이트의 Google Pay API 지원을 구성합니다.
다음 표에는 PaymentDataRequest
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
apiVersion |
컨스트 | 필수 항목입니다. API 주 버전 값: |
|
apiVersionMinor |
컨스트 | 필수 항목입니다. API 부 버전입니다. 값: |
|
merchantInfo |
MerchantInfo |
필수 항목입니다. (Google Pay 판매자 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
주문의 결제 관련 정보입니다.
다음 표에는 PaymentInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
displayName |
String | 필수 항목입니다. 사용자가 볼 수 있는 결제 수단의 이름으로, 영수증에 표시됩니다. |
|
paymentType |
PaymentType |
필수 항목입니다. |
|
googleProvidedPaymentInstrument |
GoogleProvidedPaymentInstrument |
작업에서 사용할 수 있는 토큰입니다. CheckoutResponseMessage에서 GoogleProvidedPaymentOptions를 결제 옵션으로 지정한 경우에만 이를 지정하세요. |
다음 예는 PaymentInfo
요소를 보여줍니다.
예시 1
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd" }, "paymentType": "PAYMENT_CARD" }
예 2
{ "displayName": "Visa\u2006****\u20061111", "googleProvidedPaymentInstrument": { "instrumentToken": "abcd", "billingAddress": { "regionCode": "US", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "123 Random Street", "Unit ABC" ], "recipients": [ "sample_receipient" ] } }, "paymentType": "PAYMENT_CARD" }
PaymentMethod
이 객체를 사용하여 사이트의 Google Pay API 지원을 구성합니다.
다음 표에는 PaymentMethod
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
type |
컨스트 | 필수 항목입니다. 지원되는 결제 수단의 짧은 식별자입니다. 현재 CARD만 지원됩니다. 값: |
|
parameters |
CardParameters |
필수 항목입니다. 제공된 결제 수단 유형을 구성하는 데 필요한 매개변수입니다. |
|
tokenizationSpecification |
TokenizationSpecification |
필수 항목입니다. 결제 정보를 수신할 계정 또는 복호화 제공업체를 구성합니다. 이 속성은 CARD 결제 수단에 필요합니다. |
다음 예는 PaymentMethod
요소를 보여줍니다.
예
{ "type": "CARD", "parameters": { "allowedAuthMethods": [ "PAN_ONLY" ], "allowedCardNetworks": [ "VISA", "AMEX", "MASTERCARD" ], "billingAddressRequired": false }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "90412491", "gateway": "olo" } } }
PaymentOptions
다음 표에는 PaymentOptions
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
다음 속성 그룹 중 하나만 필요합니다. | |||
googleProvidedOptions |
그룹 1 | GoogleProvidedPaymentOptions |
actionProvidedOptions와 상호 배타적입니다. gPay를 통한 온라인 결제에 사용하세요. |
actionProvidedOptions |
그룹 2 | ActionProvidedPaymentOptions |
googleProvidedOptions와 상호 배타적입니다. '상품 인도 결제'에 사용합니다. '처리 시 결제'와 같은 형태가 있습니다. |
다음 예는 PaymentOptions
요소를 보여줍니다.
예시 1
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\": false }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
예 2
{ "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\": 2,\"apiVersionMinor\": 0,\"merchantInfo\": { \"merchantId\": \"Merchant ID\", \"merchantName\": \"Merchant Name\"},\"allowedPaymentMethods\": [ { \"type\": \"CARD\", \"parameters\": { \"allowedAuthMethods\": [ \"PAN_ONLY\" ], \"allowedCardNetworks\": [ \"VISA\", \"AMEX\", \"MASTERCARD\" ], \"billingAddressRequired\":true, \"billingAddressParameters\": { \"format\":\"MIN\" } }, \"tokenizationSpecification\": { \"type\": \"PAYMENT_GATEWAY\", \"parameters\": { \"stripe:publishableKey\": \"pk_test_OoPcJNnxI1rDXhBq8BiXO2wz00s1Xc92dA\", \"gateway\": \"stripe\", \"stripe:version\": \"2019-05-16\" } } }],\"transactionInfo\": { \"currencyCode\": \"AUD\", \"totalPriceStatus\": \"ESTIMATED\", \"totalPrice\": \"1.0\"}}" } }
예시 3
{ "actionProvidedOptions": { "paymentType": "ON_FULFILLMENT", "displayName": "Pay when you get your food.", "onFulfillmentPaymentData": { "supportedPaymentOptions": [ "Cash", "Card" ] } } }
PaymentOptionsEnums
PaymentOptionsEnums
유형에 사용 가능한 값은 다음과 같습니다.
Cash
Card
UPI
Paytm
PaymentType
PaymentType
유형에 사용 가능한 값은 다음과 같습니다.
PAYMENT_CARD
: GoogleProvidedPaymentOptions에 사용합니다.ON_FULFILLMENT
: ActionProvidedPaymentOptions:
SupportedCardNetworks
GoogleProvidedPaymentOptions
와 관련된 유형을 정의합니다.
SupportedCardNetworks
유형에 사용 가능한 값은 다음과 같습니다.
UNSPECIFIED_CARD_NETWORK
AMEX
DISCOVER
JCB
MASTERCARD
VISA
TokenizationParameters
<ph type="x-smartling-placeholder">GoogleProvidedPaymentOptions
와 관련된 유형을 정의합니다.
다음 표에는 TokenizationParameters
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
tokenizationType |
Enum [
"UNSPECIFIED_TOKENIZATION_TYPE",
"PAYMENT_GATEWAY"
] |
필수 항목입니다. 대신 facilitationSpecification을 사용하세요. 허용되는 토큰 유형입니다. |
|
parameters |
Parameters |
대신 facilitationSpecification을 사용하세요. |
TokenizationSpecification
이 객체를 사용하면 청구 가능한 결제 정보를 수신하도록 계정을 구성할 수 있습니다.
다음 표에는 TokenizationSpecification
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
type |
컨스트 | 필수 항목입니다. |
|
parameters |
Parameters |
필수 항목입니다. |
다음 예는 TokenizationSpecification
요소를 보여줍니다.
예시 1
{ "type": "PAYMENT_GATEWAY", "parameters": { "gatewayMerchantId": "1247192", "gateway": "cybersource" } }
예 2
{ "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:version": "2018-10-31", "stripe:publishableKey": "12378127" } }
TransactionInfo
이 객체는 결제자의 결제 능력을 결정하는 거래를 설명합니다. 결제 승인 대화상자를 표시하는 데 사용됩니다.
다음 표에는 TransactionInfo
유형의 속성이 나와 있습니다.
속성 | 유형 | 설명 | |
---|---|---|---|
currencyCode |
String | 필수 항목입니다. ISO 4217 알파벳 통화 코드입니다. |
|
transactionId |
String |
트랜잭션 시도를 식별하는 고유 ID입니다. 판매자는 Google Pay 거래 시도에 기존 ID를 사용하거나 특정 ID를 생성할 수 있습니다. 이 필드는 Google Transaction Events API에 콜백을 보낼 때 필요합니다. |
|
totalPriceStatus |
컨스트 | 필수 항목입니다. 'ESTIMATED' 사용 를 기본값으로 사용합니다. 청구서 수신 주소에 따라 수집된 판매세와 같은 응답 세부정보를 바탕으로 총 가격이 조정될 수 있습니다. 값: |
|
totalPrice |
String | 필수 항목입니다. 필요에 따라 십진수를 소수점 이하 두 자리로 표시하는 거래의 총 금액입니다. 이 필드는 car.totalPrice와 같은 값을 가져야 합니다. |
다음 예는 TransactionInfo
요소를 보여줍니다.
예
{ "totalPriceStatus": "ESTIMATED", "totalPrice": "12.34", "currencyCode": "USD" }