चेकआउट के बाद कॉल, उपयोगकर्ता, अपडेट किए गए कार्ट को देखता है. इसमें टैक्स, डिलीवरी के शुल्क, छूट, और वापस किए जाते हैं. उपयोगकर्ता ऑर्डर की पुष्टि करता है और उसे सबमिट करता है और Google आपके फ़ुलफ़िलमेंट एंडपॉइंट को एक JSON अनुरोध भेजता है, जिसमें ऑर्डर की जानकारी. आपकी वेब सेवा को यह ऑर्डर मिलना चाहिए, इसे प्रोसेस करना चाहिए, और आदेश की स्थिति के साथ Google को जवाब दें.
इस सेक्शन में, ऑर्डर के अनुरोध के लिए Google की ओर से भेजे गए मैसेज के फ़ॉर्मैट के बारे में बताया गया है.
SubmitOrderRequestMessage
पर कॉल किया और रिस्पॉन्स मैसेज के फ़ॉर्मैट
आपको प्रदान करना होगा, जिसे
SubmitOrderResponseMessage
.
ऑर्डर पूरा करने की लाइफ़साइकल के बारे में ज़्यादा जानकारी के लिए, यहां देखें:
ग्राहक को आइटम भेजने की खास जानकारी.
ऑर्डर पूरा करने की प्रक्रिया लागू करना
सीधे खाना ऑर्डर करने की सुविधा के साथ काम करने के लिए बनाई गई, खाना ऑर्डर करने की सुविधा देने वाली वेब सेवा को
Google से ऑर्डर मैसेज पाने के लिए यूआरएल एंडपॉइंट शामिल करें. ऑर्डर के लिए
प्रोसेस हो रही है, तो आपकी वेब सेवा को JSON में SubmitOrderRequestMessage
मिलता है
को Google से पीओएसटी अनुरोध के तौर पर भेजना होगा. इस अनुरोध में एक ग्राहक का ऑर्डर शामिल है.
इसमें टैक्स, शुल्क, और क्रेडिट/डेबिट कार्ड की जानकारी शामिल होती है. सबमिट करने का ऑर्डर मिलने पर
अनुरोध है, तो आपकी वेब सेवा को ये काम करने होंगे:
- लेन-देन की ज़रूरी शर्तों के बारे में जानें, जैसे कि कार्ड की पुष्टि या धोखाधड़ी का पता लगाना.
- अपने सिस्टम में एक ऑर्डर बनाएं.
- पेमेंट के तरीके को अनुमति दें और लागू होने पर, पेमेंट प्रोसेस करने वाली कंपनी के शुल्क एपीआई को कॉल करें.
- आदेश की उचित स्थिति के साथ जवाब दें:
CREATED
,CONFIRMED
याREJECTED
.
ऑर्डर प्रोसेस होने के बाद, आपके फ़ुलफ़िलमेंट कोड को जवाब देना होगा
Google को SubmitOrderResponseMessage
JSON मैसेज के रूप में भेजा जा सकता है.
ऑर्डर पूरा करने तक ऑर्डर देने वाली वेब सेवा के बारे में ज़्यादा जानकारी के लिए ज़रूरी शर्तों को लागू करने के लिए, ग्राहक को आइटम भेजने की खास जानकारी देखें.
ऑर्डर के अनुरोध का मैसेज
जब कोई ग्राहक सीधे ऑर्डर करने की सुविधा के दौरान ऑर्डर देता है, तो
Google आपकी वेब सेवा को JSON मैसेज के साथ एक अनुरोध भेजता है.
SubmitOrderRequestMessage
, जिसमें यह डेटा शामिल है:
- इंटेंट: सबमिट करने के हर अनुरोध के मुख्य हिस्से का
inputs[0].intent
फ़ील्डactions.intent.TRANSACTION_DECISION
स्ट्रिंग की वैल्यू शामिल होती है. - क्रम: The
inputs[0].arguments[0].transactionDecisionValue
फ़ील्ड ऑफ़ सबमिट किए गए ऑर्डर के अनुरोध में एकOrder
ऑब्जेक्ट है जो ऑर्डर देने के लिए किया जा सकता है. - सैंडबॉक्स फ़्लैग: सबमिट किए गए ऑर्डर के अनुरोध का
isInSandbox
फ़ील्ड बताता है कि लेन-देन में सैंडबॉक्स पेमेंट का इस्तेमाल होता है या नहीं.
ऑर्डर के अनुरोध का उदाहरण
यहां SubmitOrderRequestMessage
का उदाहरण दिया गया है:
JSON
{ "user": {}, "conversation": { "conversationId": "CTKbKfUlHCyDEdcz_5PBJTtf" }, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "merchant": { "id": "restaurant/Restaurant/QWERTY", "name": "Tep Tep Chicken Club" }, "lineItems": [ { "name": "Spicy Fried Chicken", "type": "REGULAR", "id": "299977679", "quantity": 2, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "AUD", "units": "39", "nanos": 600000000 } }, "offerId": "MenuItemOffer/QWERTY/scheduleId/496/itemId/143", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "delivery": { "deliveryTimeIso8601": "P0M" } } }, "location": { "coordinates": { "latitude": -33.8376441, "longitude": 151.0868736 }, "formattedAddress": "Killoola St, 1, Concord West NSW 2138", "zipCode": "2138", "city": "Concord West", "postalAddress": { "regionCode": "AU", "postalCode": "2138", "administrativeArea": "NSW", "locality": "Concord West", "addressLines": [ "Killoola St", "1" ] } }, "contact": { "displayName": "Hab Sy", "email": "hab9878.sy@gmail.com", "phoneNumber": "+61000000000", "firstName": "Hab", "lastName": "Sy" } } }, "otherItems": [ { "name": "Delivery fee", "type": "DELIVERY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "AUD", "units": "3", "nanos": 500000000 } } }, { "name": "Subtotal", "type": "SUBTOTAL", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "AUD", "units": "39", "nanos": 600000000 } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "AUD", "units": "43", "nanos": 100000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" } }, "googleOrderId": "01412971004192156198", "orderDate": "2020-10-22T09:02:06.173Z", "paymentInfo": { "displayName": "Pay when you get your food", "paymentType": "ON_FULFILLMENT" } } } } ] } ], "directActionOnly": true, "isInSandbox": true }
ऑर्डर का जवाब देने वाला मैसेज
अनुरोध मिलने के बाद, खाना ऑर्डर करने की सुविधा देने वाली आपकी वेब सेवा,
अनुरोध करता है और एक SubmitOrderResponseMessage
को वापस भेजता है, जिसमें
नीचे दिया गया डेटा:
OrderUpdate
: एक ऑब्जेक्ट, जिसमें ऑर्डर की स्थिति और कोई भी आइटम मौजूद होता है उपयोगकर्ता के लिए उपलब्ध पोस्ट-ऑर्डर कार्रवाइयां, जैसे कि सहायता टीम से संपर्क करना और ऑर्डर विवरण देखने के लिए, जिसे आपfinalResponse.richResponse.items[0].structuredResponse.orderUpdate
फ़ील्ड जवाब को प्राथमिकता दें.
ऑर्डर अपडेट करने का फ़ील्ड
जब आपकी वेब सेवा SubmitOrderResponseMessage
भेजती है, तो उसमें
OrderUpdate
फ़ील्ड, जिसमें ये फ़ील्ड शामिल हैं:
actionOrderId
: ऑर्डर का यूनीक आईडी, जिसका इस्तेमाल खास तौर पर अपने सिस्टम में आदेश की पहचान करें और बाद में भेजते समय उसका संदर्भ लें ऑर्डर के अपडेट.orderState
:OrderState
ऑब्जेक्ट, जो ऑर्डर की स्थिति दिखाता है.orderManagementActions
: ऑर्डर करने के बाद की कार्रवाइयां, उपयोगकर्ता के लिए उपलब्ध हैं, जैसे कि ग्राहक सहायता से संपर्क करने और ऑर्डर की जानकारी देखने के लिए.totalPrice
: ऑर्डर की कुल कीमत. हालांकि, ऐसा करना ज़रूरी नहीं है. सिर्फ़ भेजें अगर ऑर्डर सबमिट किए जाने के बाद, ऑर्डर की कुल कीमत बदल गई है.
कोई ऑर्डर इनमें से किसी एक स्थिति में हो सकता है:
CREATED
: आपके फ़ुलफ़िलमेंट एंडपॉइंट ने ऑर्डर प्रोसेस कर दिया है, लेकिन सेवा देने वाली कंपनी ने अभी तक ऑर्डर की पुष्टि नहीं की है.CONFIRMED
: आपके फ़ुलफ़िलमेंट एंडपॉइंट ने ऑर्डर प्रोसेस कर दिया है, और सेवा देने वाली कंपनी ने ऑर्डर की पुष्टि कर दी है.REJECTED
: किसी गड़बड़ी की वजह से, आपका फ़ुलफ़िलमेंट एंडपॉइंट काम नहीं कर सका ऑर्डर बनाएं या उसकी पुष्टि करें. इसमें पेमेंट से जुड़ी समस्याएं भी हो सकती हैं.
अगर आपने किसी ऑर्डर को REJECTED
स्थिति में सेट किया है, तो
OrderUpdate
में से rejectionInfo
फ़ील्ड. इस्तेमाल की जाने वाली चीज़ें
इसके साथ FoodOrderUpdateExtension.FoodOrderErrors
वैल्यू
UNKNOWN
टाइप का rejectionInfo
और ब्यौरा दें.
ऑर्डर से जुड़े रिस्पॉन्स का उदाहरण
यहां SubmitOrderResponseMessage
का उदाहरण दिया गया है:
JSON
{ "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "1603357328160", "orderState": { "state": "CONFIRMED", "label": "Pending" }, "updateTime": "2020-10-22T02:02:08-07:00", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Call customer service", "openUrlAction": { "url": "tel:+61234561000" } } }, { "type": "VIEW_DETAILS", "button": { "title": "View order details", "openUrlAction": { "url": "https://partner.com/view/orderstatus" } } } ], "receipt": { "userVisibleOrderId": "BXZ-1603357328" } } } } ] } } }
अनुरोध पूरा नहीं किया जा सका
अगर सबमिट करने का अनुरोध पूरा नहीं होता है, तो SubmitOrderResponseMessage
को सेट करना होगा
OrderState.state
से REJECTED
में. जवाब भी ऐसा होना चाहिए
RejectionInfo को शामिल करना, जिसमें RejectionType
ऑब्जेक्ट सबमिट करें.
पूरे न हो पाने वाले जवाब का उदाहरण
JSON
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "PAYMENT_DECLINED", "reason": "Insufficient funds" }, "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", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "VIEW_DETAILS", "button": { "title": "View order", "openUrlAction": { "url": "https://orderview.partner.com?orderid=sample_action_order_id" } } } ] } } } ] } } }
ऑर्डर लागू करने का तरीका सबमिट करें
सबमिट ऑर्डर एपीआई को लागू करते समय, आपको यह तरीका अपनाना चाहिए.
पुष्टि
- सेवा, कार्ट, और प्रमोशन की पुष्टि करने के लिए, सेट अप करें चेकआउट करें.
- नीचे दिए गए विकल्पों में से किसी एक के साथ RejectionInfo लौटा दें, अगर ज़रूरी है:
RejectionInfoType | इस्तेमाल का उदाहरण |
---|---|
UNAVAILABLE_SLOT |
ग्राहक को आइटम भेजने का समय अब मान्य नहीं है. |
PROMO_USER_INELIGIBLE |
अनुरोध में, संपर्क ऑब्जेक्ट में दिए गए ईमेल पते का इस्तेमाल करें, ताकि यह पुष्टि की जा सके कि उपयोगकर्ता के लिए प्रमोशन की ज़रूरी शर्तें पूरी की जा रही हैं. प्रमोशन के साथ सबमिट ऑर्डर लागू करना में इसका उदाहरण देखें. |
INELIGIBLE |
|
PAYMENT_DECLINED |
पेमेंट प्रोसेस नहीं किया जा सकता. उदाहरण के लिए, ऐसा खाते में ज़रूरत के मुताबिक पैसे न होने की वजह से हो सकता है. |
UNKNOWN |
पुष्टि करने से जुड़ी किसी भी दूसरी गड़बड़ी के लिए. |
अगर पुष्टि की जा रही है, तो OrderState.state
को REJECTED
पर सेट करें
गड़बड़ियां हुईं. इसके अलावा, आपके पास आवेदन अस्वीकार करने की खास वजह भी बताने का विकल्प है
FoodOrderUpdateExtension का इस्तेमाल करके.foodOrderErrors
. इसमें उदाहरण देखें
ऑर्डर की पुष्टि करने का अनुरोध सबमिट करें.
पेमेंट प्रोसेस करें
totalPrice
का हिसाब लगाने के लिए, कार्ट की कीमत, शुल्क, छूट, टैक्स, और ग्रेच्यूटी.totalPrice
और लौटाए गएtotalPrice
में वैल्यू एक जैसी होनी चाहिए CheckoutResponseMessage के साथ ही, अगर ग्रेच्युटी में उपयोगकर्ता बदलाव कर सकता है, तो ग्रेच्यूट की रकम. कीमत देखें देखें.- अगर आपको ऑर्डर की स्थिति के बारे में जवाब मिलता है, तो ऑर्डर और पेमेंट को प्रोसेस करें
CREATED
याCONFIRMED
में से. - जनरेट किए गए टाइप के डेटा का इस्तेमाल करके, पक्का करें कि रिस्पॉन्स का मान्य फ़ॉर्मैट दिखाया गया हो स्कीमा से बनाया गया है, जैसा कि क्लाइंट लाइब्रेरी जनरेट करें.
- इसका इस्तेमाल करें
GoogleProvidedPaymentInstrument.
instrumentToken
पेमेंट प्रोसेस करने के लिए. इस तरह की RejectionInfo दिखाएं पेमेंट नहीं होने परPAYMENT_DECLINED
. प्रोसेस देखें भुगतान पर जाएं. - ऑर्डर प्रोसेस होने के तुरंत बाद, उपयोगकर्ता को ईमेल से सूचित करें और या एसएमएस के तौर पर भेजा गया.
जवाब दें
- OrderState.
state
कोCREATED
याCONFIRMED
पर सेट करें, अगर कोई गड़बड़ी नहीं है. - अगर गड़बड़ियां हैं, तो OrderState.
state
कोREJECTED
पर सेट करें मिला है और उसमें RejectionInfo ऑब्जेक्ट को संबंधित RejectionInfoType का इस्तेमाल करें. - OrderUpdate सेट करें.
orderManagementActions
.