सिंक्रोनस बुकिंग को ऐसी बुकिंग कहा जाता है जिनकी पुष्टि रीयल टाइम में होती है या जिन्हें अस्वीकार किया जाता है.
एसिंक्रोनस बुकिंग को बुकिंग के तौर पर बताया जाता है, जिसकी पुष्टि व्यापारी या कंपनी बाद में करती है या जिसे अस्वीकार कर दिया जाता है.
बुकिंग को सिंक्रोनस या एसिंक्रोनस के तौर पर बताया जाता है. इसका मतलब यह भी है कि किसी व्यापारी/कंपनी और सेवा के लिए, सिंक्रोनस और एसिंक्रोनस, दोनों तरह की उपलब्धता वाले स्लॉट हो सकते हैं.
सही तरह से लागू करने के लिए, सबसे पहले यह पता करें कि आपकी इन्वेंट्री किस कैटगरी में आती है:
- सिर्फ़ सिंक्रोनस बुकिंग चालू करना: सभी व्यापारियों और सेवाओं की तुरंत पुष्टि की जाती है.
- एसिंक्रोनस बुकिंग की सुविधा चालू करना: कुछ या सभी व्यापारियों और सेवाओं के लिए व्यापारी/कंपनी की ओर से मैन्युअल पुष्टि की ज़रूरत होती है.
एसिंक्रोनस बुकिंग की शर्तें
- Reserve with Google पर एक साथ काम नहीं करने वाली बुकिंग में बदलाव करने की सुविधा नहीं है.
- सिंक्रोनस बुकिंग के लिए, पैसे चुकाने की ज़रूरत नहीं है.
- व्यापारियों या कंपनियों को पार्टनर के ऑनलाइन सिस्टम (उदाहरण के लिए, रेस्टोरेंट के लिए होस्ट पैनल) से बुकिंग को स्वीकार या अस्वीकार करना होगा. व्यापारी को उपयोगकर्ता की ओर से कॉल करके, यह पता किया जा सकता है कि व्यापारी या कंपनी बुकिंग को स्वीकार या अस्वीकार करती है, नहीं की अनुमति है.
- व्यापारी/कंपनी के नए बुकिंग समय के बारे में प्रस्ताव नहीं है. बुकिंग का अनुरोध मूल स्थिति में ही स्वीकार या अस्वीकार किया जाना चाहिए.
सिर्फ़ सिंक्रोनस बुकिंग चालू की जा रही है
स्टैंडर्ड लागू करने की प्रक्रिया, डिफ़ॉल्ट रूप से सिंक होने वाली बुकिंग के हिसाब से होती है. ज़्यादा जानकारी के लिए, एंड-टू-एंड इंटिग्रेशन गाइड देखें.
एसिंक्रोनस बुकिंग चालू करना
अगर कुछ या सभी व्यापारी एसिंक्रोनस बुकिंग फ़्लो का इस्तेमाल करते हैं, तो ये बदलाव करने होंगे:
-
पुष्टि करने वाला मोड: अब उपलब्धता स्लॉट के सभी प्रतिनिधित्व में एक
confirmation_mode
फ़ील्ड होता है, जो यह बताता है कि उस उपलब्धता स्लॉट की बुकिंग की पुष्टि कैसे की जाती है. उपलब्धता के हर स्लॉट के लिए,confirmation_mode
की जानकारी दें:- उपलब्धता फ़ीड में, इसके बारे में
confirmation_mode
बताया जाता है. - बुकिंग सर्वर एपीआई के तरीकों में,
confirmation_mode
के बारे में स्लॉट लेवल पर बताया गया है - रीयल-टाइम अपडेट एपीआई के तरीकों में,
confirmation_mode
के बारे में बताया गया है कि यह उपलब्धता के लेवल पर कितना है
- उपलब्धता फ़ीड में, इसके बारे में
- बुकिंग की स्थिति: बुकिंग के सभी प्रतिनिधित्व में एक
status
फ़ील्ड होता है, जो बुकिंग की स्थिति दिखाता है. एसिंक्रोनस स्थिति में, तीन नई वैल्यू जोड़ी गई हैं:PENDING_CONFIRMATION
,DECLINED_BY_MERCHANT
, औरFAILED
. एसिंक्रोनस बुकिंग की प्रोसेस, उन्हें अस्वीकार किए जाने, और फ़ेल होने पर, स्टेटस की नई वैल्यू का इस्तेमाल करें. - बुकिंग के अपडेट: बुकिंग की स्थिति के बारे में सभी एसिंक्रोनस अपडेट, बुकिंग सूचना एपीआई के booking.patch तरीके से रिपोर्ट किए जाने चाहिए.
नीचे दिया गया डायग्राम दिखाता है कि एक सामान्य एसिंक्रोनस बुकिंग इंटरैक्शन में, पुष्टि मोड और बुकिंग की स्थिति का इस्तेमाल कैसे किया जाता है.
- खरीदारी के लिए उपलब्धता फ़ीड को अपडेट कर दिया गया है, ताकि हर उपलब्धता स्लॉट के पुष्टि मोड के बारे में बताया जा सके. फ़ीड में यह जानकारी होना ज़रूरी है, ताकि हम उपयोगकर्ता को पहले ही बुकिंग के बारे में एसिंक्रोनस तरीके से बता सकें.
- जब
BatchAvailabilityLookup
याCheckAvailability
को कॉल किया जाता है, तो हम पुष्टि करने वाले मोड से गुज़रते हैं और पुष्टि करने के लिए उसी मोड को इस्तेमाल करते हैं. इससे यह पक्का होता है कि उपयोगकर्ता को सही मैसेज दिखाया जा रहा है. - जब
CreateBooking
को कॉल किया जाता है, तो हम अनुमानित मोड बताने के लिए, पुष्टि करने वाले मोड से गुज़रते हैं. एसिंक्रोनस बुकिंग अनुरोध सबमिट किए जाने पर, बुकिंग की स्थितिPENDING_MERCHANT_CONFIRMATION
दिखती है. - जब व्यापारी, बुकिंग के अनुरोध को स्वीकार या अस्वीकार करता है, तब बुकिंग की स्थिति को रीयल-टाइम अपडेट करने की सूचना देने वाले एपीआई के bookings.patch तरीके का इस्तेमाल करके अपडेट किया जाता है. अगर आपको अपने-आप अस्वीकार होने वाली बुकिंग का समय तय नहीं करना है, तो रीयल-टाइम अपडेट करने का वही तरीका अपनाएं.
उपलब्धता फ़ीड
उपलब्धता फ़ीड में, बताएं कि हर स्लॉट सिंक्रोनस है या एसिंक्रोनस. ऐसा करने के लिए, नया confirmation_mode
फ़ील्ड सेट करें.
// Mode by which bookings for an availability slot are confirmed. // enum ConfirmationMode { // The confirmation mode was not specified. // Synchronous confirmation will be assumed. CONFIRMATION_MODE_UNSPECIFIED = 0; // Bookings for this availability will be confirmed synchronously. CONFIRMATION_MODE_SYNCHRONOUS = 1; // Bookings for this availability will be confirmed asynchronously. CONFIRMATION_MODE_ASYNCHRONOUS = 2; }
हालांकि, अगर कोई मोड नहीं बताया गया है, तो पुष्टि करने वाले मोड को सिंक्रोनस मान लिया जाता है. हालांकि, हम ऐसा मोड इस्तेमाल करने के लिए बढ़ावा देते हैं जिससे गलती से हुई गलतियों के बारे में भ्रम की स्थिति न पैदा हो.
Async
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] }
सिंक करें
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] }
एक साथ काम नहीं करने वाली प्रोसेस और सिंक
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, { "merchant_id": "10002", "service_id": "1000", "spots_open": 4, "spots_total": 4, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 2 }, "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] }
बुकिंग सर्वर
बैच में उपलब्धताLookup या CheckAvailability
BatchAvailabilityLookupResponse
(BAL) या CheckAvailabilityResponse
(CA) में, वही confirmation_mode
दिखाएं जो उपलब्धता फ़ीड में बताया गया है और BatchAvailabilityLookupRequest
या CheckAvailabilityRequest
साथ भेजा गया.
BAL-Async
{ "slot_time_availability": [ { "slot_time": { "duration_sec": "3600", "resource_ids": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "available": true } ] }
BAL-सिंक
{ "slot_time_availability": [ { "slot_time": { "duration_sec": "3600", "resource_ids": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "available": true } ] }
CA-Async
{ "slot": { "duration_sec": "3600", "merchant_id": "317652", "resources": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "count_available": 1, "duration_requirement": "DO_NOT_SHOW_DURATION" }
CA-सिंक
{ "slot": { "duration_sec": "3600", "merchant_id": "317652", "resources": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "count_available": 1, "duration_requirement": "DO_NOT_SHOW_DURATION" }
बुकिंग बनाएं
नीचे दिए गए विकल्पों का इस्तेमाल करके, बुकिंग का सही स्टेटस दिखाना न भूलें:
// Status of a booking. // // Updating booking status does not change the status of the associated payment. // Prepayment status updates should be done using the PrepaymentStatus enum. enum BookingStatus { // Not specified. BOOKING_STATUS_UNSPECIFIED = 0; // Booking has been confirmed CONFIRMED = 1; // Booking is awaiting confirmation by the merchant before it can transition // into CONFIRMED status. Only applicable to non-payments Dining or // Beauty verticals. PENDING_MERCHANT_CONFIRMATION = 2; // Booking has been canceled on behalf of the user. // The merchant can still trigger a manual refund. CANCELED = 3; // User did not show for the appointment NO_SHOW = 4; // User did not show for the appointment in violation of the cancellation // policy. NO_SHOW_PENALIZED = 5; // Booking could not be completed by the async backend due to a failure. FAILED = 6; // Booking was asynchronously declined by the merchant. Only applicable to // non-payments Dining or Beauty verticals. DECLINED_BY_MERCHANT = 7; }
CreateBookingResponse
में,
CreateBookingRequest में दिए गए बुकिंग के एग्रीगेट किए गए स्लॉट के लिए
मौजूदा confirmation_mode
दें. इसके अलावा, बुकिंग के एसिंक्रोनस होने पर,
status
को PENDING_MERCHANT_CONFIRMATION
पर सेट करें. कृपया यह पक्का कर लें कि confirmation_mode
वही है जो उपयोगकर्ता के साथ किया जाता है. साथ ही, यह भी पक्का करें कि Reserve with Google, उपयोगकर्ता को भ्रम में न डालने की उम्मीद करता हो.
Async
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "PENDING_MERCHANT_CONFIRMATION" } }
सिंक करें
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "CONFIRMED" } }
अपडेट बुकिंग
एसिंक्रोनस की शुरुआती रिलीज़ में, मौजूदा बुकिंग के लिए उपयोगकर्ता में बदलाव करने की सुविधा उपलब्ध नहीं है. इसके बजाय, उपयोगकर्ता को बुकिंग रद्द करनी चाहिए और नई बुकिंग करनी चाहिए.
रीयल-टाइम अपडेट
उपलब्ध होने की रीयल-टाइम अपडेट के लिए, confirmation_mode
तय करना ज़रूरी है. यह इन तरीकों पर लागू होता है:
इन्वेंट्री से जुड़ा आरटीयू (बदलेंServiceAvailability या BatchreplaceServiceAvailability)
availability.replace
(बैच) मैथड या services.availability.replace
मेथड का इस्तेमाल करके, Availability
में confirmation_mode
को CONFIRMATION_MODE_ASYNCHRONOUS
पर सेट करें
Async
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] } ] }
सिंक करें
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
एक साथ काम नहीं करने वाली प्रोसेस और सिंक
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, { "startTime": "2014-10-03T11:00:00.00Z", "duration": "5400s", "spotsOpen": "1", "spotsTotal": "1", "availabilityTag": "1000002", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
बुकिंग सूचना API
बुकिंग की स्थिति को सिंक न करने वाले अपडेट, बुकिंग सूचना एपीआई bookings.patch वाले तरीके से किए जाने चाहिए.
स्टेटस अपडेट करते समय, updateMask
में status
फ़ील्ड का नाम ज़रूर शामिल करें.
स्थिति | जानकारी |
---|---|
पुष्टि हो गई | व्यापारी ने बुकिंग की पुष्टि की |
नहीं हो सका | पार्टनर, व्यापारी या कंपनी की बुकिंग की पुष्टि नहीं कर सका या उसे अस्वीकार नहीं कर सका |
अस्वीकार किया गया_BY_Merchant | व्यापारी/कंपनी ने बुकिंग अस्वीकार कर दी है |
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"DECLINED_BY_MERCHANT"}
बुकिंग नहीं हो पाने पर, बुकिंग की स्थिति FAILED
पर सेट करें और
Booking_failure की जानकारी दें. अगर स्टेटस किसी और चीज़ पर सेट है, तो booking_failure
को अनदेखा कर दिया जाता है.
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status&booking_failure.cause="SLOT_UNAVAILABLE" Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"FAILED"}
ईमेल सूचनाएं
एसिंक्रोनस बुकिंग के लिए, उपयोगकर्ताओं को भेजे गए बुकिंग की स्थिति से जुड़े पांच संभावित ईमेल उपलब्ध होते हैं.
PENDING_MERCHANT_CONFIRMATION
CONFIRMED
DECLINED_BY_MERCHANT
FAILED
CANCELED