पेमेंट के अलग-अलग तरीके सेट करना

Actions Center प्लैटफ़ॉर्म पर, पेमेंट पाने के लिए कई तरह के कॉन्फ़िगरेशन इस्तेमाल किए जा सकते हैं. पेमेंट की सुविधा चालू करने की गाइड में, इंटिग्रेशन के उन पहलुओं के बारे में बताया गया है जो सभी पेमेंट इंटिग्रेशन के लिए सामान्य हैं. इनमें ये शामिल हैं:

  1. tokenization_parameter की जानकारी शामिल करने के लिए फ़ीड कॉन्फ़िगर करना
  2. payment_method_token ऑब्जेक्ट को स्वीकार करने के लिए, बुकिंग सर्वर को अपडेट करना
  3. उपयोगकर्ता, ऐक्शन सेंटर, पार्टनर / व्यापारी/कंपनी, और पेमेंट प्रोसेसर के बीच शेयर की गई जानकारी की खास जानकारी.

इस गाइड में, हम अपने फ़ीड कॉन्फ़िगर करने के तरीके के बारे में ज़्यादा जानकारी देंगे. इससे यह तय किया जा सकेगा कि आपके कारोबारियों या कंपनियों और सेवाओं पर, पेमेंट के कौनसे कॉन्फ़िगरेशन लागू होंगे.

  1. कोई पेमेंट नहीं / पहुंचने पर पेमेंट करें
  2. पूरा ऐडवांस पेमेंट
  3. बुकिंग न करने पर लगने वाला शुल्क / बुकिंग रद्द करने पर लगने वाला शुल्क
  4. जमा

पेमेंट के सभी इस्तेमाल के उदाहरण, पेमेंट न करने / पहुंचने पर पेमेंट करने के इस्तेमाल के उदाहरण के एक्सटेंशन हैं. इसके लिए, पेमेंट कॉन्फ़िगरेशन की ज़रूरत नहीं होती. इसलिए, यह ट्यूटोरियल उस कॉन्फ़िगरेशन के बारे में बताकर शुरू होगा और अन्य कॉन्फ़िगरेशन को एक्सटेंशन के तौर पर इस्तेमाल करेगा.

हर सेक्शन में, बुकिंग सर्वर में ट्रैक किए जाने वाले फ़ील्ड भी शामिल होंगे. इससे, पेमेंट के किसी खास कॉन्फ़िगरेशन को स्वीकार करने में मदद मिलेगी.

कोई पेमेंट नहीं / पहुंचने पर पेमेंट करें

जिन सेवाओं के लिए बुकिंग के समय पेमेंट की ज़रूरत नहीं होती उनके लिए, कारोबारी या सेवा देने वाली कंपनी को पेमेंट से जुड़ा कोई कॉन्फ़िगरेशन नहीं करना पड़ता. हालांकि, कीमतों की जानकारी देना अब भी ज़रूरी है.

यह किसी सेवा का बेसलाइन कॉन्फ़िगरेशन है. इसमें नाम, ब्यौरा, और कीमत शामिल होती है. यह ServiceFeed में, सेवा से जुड़ा एक मैसेज होगा:

JSON
{
    "merchant_id": "merchant-1",
    "service_id": "service-1-a",
    "name": "Men's haircut",
    "description": "One of our stylists will cut your hair",
    "price": {
        "price_micros": 15000000,
        "currency_code": "USD"
    }
}

बुकिंग सर्वर में, स्टैंडर्ड तरीके से लागू करने के अलावा, आने पर पैसे चुकाने की सुविधा के लिए किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं होती.

पूर्व-भुगतान

इस कॉन्फ़िगरेशन का इस्तेमाल यह बताने के लिए किया जाता है कि सेवा के लिए, बुकिंग के समय पूरी रकम चुकाई जानी चाहिए.

सेवा के लेवल पर, पहले से किए गए पेमेंट की जानकारी देने के लिए, Service के prepayment_type फ़ील्ड का इस्तेमाल किया जाता है. किसी सेवा के लिए पेमेंट की ज़रूरत होने पर, इसे REQUIRED पर सेट किया जाना चाहिए, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है. ध्यान दें कि कीमत, उसी तरह से बताई गई है जिस तरह से ऑर्डर मिलने पर पेमेंट करने के उदाहरण में बताई गई है. यहां, पहले पेमेंट करने की सुविधा को ज़रूरी के तौर पर सेट किया जा रहा है. इसलिए, क्रेडिट कार्ड की जानकारी ली जाएगी और चेकआउट के समय यह कीमत ली जा सकती है.

JSON
{
    "merchant_id": "merchant-1",
    "service_id": "service-2-b",
    "name": "Spa Treatment",
    "description": "A full spa treatment",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
    "prepayment_type": "REQUIRED"
}

बुकिंग सर्वर

रिसेप्शन से पहले पैसे चुकाने पर, payment_processing_parameters.unparsed_payment_method_token फ़ील्ड की मदद से, CreateBooking को कॉल करने पर, आपके बुकिंग सर्वर को पेमेंट टोकन भेजा जाता है. आपको फ़ीड में मौजूद कीमत वाले फ़ील्ड में बताई गई रकम ही लेनी होगी. साथ ही, आपको फ़ीड में बताई गई मुद्रा का इस्तेमाल करना होगा. ये शुल्क, पेमेंट की सुविधा चालू करने के बारे में गाइड में बताए गए फ़्लो के मुताबिक होने चाहिए.

CreateBookingResponse को रिटर्न करते समय, booking.payment_information फ़ील्ड को सही तरीके से सेट करना ज़रूरी है, ताकि यह पता चल सके कि पेमेंट पहले ही किया जा चुका है और उसे प्रोसेस कर लिया गया है.

PaymentInformation स्पेसिफ़िकेशन में, पेमेंट की जानकारी के सभी विकल्पों के लिए पूरा दस्तावेज़ होता है. ऐडवांस पेमेंट प्रोसेस करने के लिए, यहां एक छोटा सा उदाहरण दिया गया है. यह ज़रूरी है कि कीमत वाले फ़ील्ड में दिखाई गई कीमत, अनुरोध में बताई गई कीमत से पूरी तरह मेल खाए. इसके अलावा, अगर फ़ीड/अनुरोध में टैक्स की दर बताई गई है, तो उसे भी सटीक रूप से शामिल करना होगा.

यह भी ध्यान रखें कि आपको ट्रांज़ैक्शन आईडी देना होगा. यह ट्रांज़ैक्शन आईडी, कम से कम उस व्यापारी/कंपनी के अन्य लेन-देन के आईडी से अलग होना चाहिए. पेमेंट प्रोसेस करने वाली कंपनी से मिला ट्रांज़ैक्शन आईडी, ट्रांज़ैक्शन आईडी के तौर पर इस्तेमाल किया जा सकता है.

JSON
{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
}

बुकिंग रद्द करने पर लगने वाला शुल्क

अगर कोई व्यक्ति अपनी बुकिंग पर नहीं आता है या रद्द करने की समयसीमा के बाद बुकिंग रद्द करता है, तो उससे बुकिंग न करने का शुल्क लिया जा सकता है. अगर रद्द करने की विंडो तय नहीं की जाती है, तो यह डिफ़ॉल्ट रूप से स्लॉट के शुरू होने के समय पर सेट हो जाएगी.

सेवा फ़ीड में, नॉन-शो फ़ीस की जानकारी देने के लिए, आपको no_show_fee फ़ील्ड शामिल करना होगा. इसका उदाहरण यहां दिया गया है:

JSON
{
    "merchant_id": "merchant-1",
    "service_id": "service-2-b",
    "name": "Spa Treatment",
    "description": "A full spa treatment",
    "price": {
        "price_micros": 200000000,
        "currency_code": "USD"
    }
    "scheduling_rules": {
        "min_advance_online_canceling": 14400,
    }
    "no_show_fee": {
        "fee": {
            "price_micros": 25000000,
            "currency_code": "USD"
        }
        "fee_type": "FIXED_RATE_DEFAULT"
    }
}

ऊपर दिए गए उदाहरण में, अगर अपॉइंटमेंट बुक करने वाला व्यक्ति अपॉइंटमेंट पर नहीं आता है, तो पार्टनर या कारोबारी के पास, no_show_fee.fee.price_micros फ़ील्ड में बताए गए मुताबिक 25 डॉलर का तय शुल्क लेने का अधिकार होता है. अगर उपयोगकर्ता, अपॉइंटमेंट से चार घंटे (14,400 सेकंड) पहले रद्द करता है, तो भी यह शुल्क लिया जा सकता है. इस बारे में scheduling_rules.min_advance_online_canceling फ़ील्ड में बताया गया है.

उपलब्धता के लेवल पर, बुकिंग न करने पर लगने वाले शुल्क की जानकारी देने का तरीका जानने के लिए, यह सेक्शन देखें.

बुकिंग सर्वर

अगर किसी ऐसे अनुरोध को प्रोसेस किया जा रहा है जिसमें बुकिंग न करने पर लगने वाला शुल्क शामिल है, तो payment_processing_parameters.unparsed_payment_method_token फ़ील्ड की मदद से, CreateBooking को कॉल करने पर, आपके बुकिंग सर्वर को पेमेंट टोकन भेजा जाता है. यह टोकन उसी तरह से पास किया जाता है जिस तरह से प्रीपेड के मामले में किया जाता है. हालांकि, टोकन को सिर्फ़ कुछ समय के लिए अनुमति दी जाती है. इसलिए, आपको अपने पेमेंट प्रोसेसर के काम के एपीआई को कॉल करके, इस टोकन को ऐसे वर्शन में अपग्रेड करना होगा जिसका इस्तेमाल बाद में किया जा सके. इस बारे में, नो-शो फ़ीस टोकन फ़्लो पर, पेमेंट की सुविधा चालू करने की गाइड के सेक्शन में बताया गया है.

CreateBookingResponse का रिटर्न भेजते समय, booking.payment_information फ़ील्ड को सेट करना ज़रूरी है, ताकि नॉन-शो फ़ीस की स्थिति को सही तरीके से दिखाया जा सके. इसका उदाहरण यहां दिया गया है.

JSON
{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
    "no_show_fee": {
        "fee": {
            "price_micros": 25000000,
            "currency_code": "USD"
        }
        "fee_type": "FIXED_RATE_DEFAULT"
    }
}

ध्यान दें कि no_show_fee को शुल्क की कीमत और स्ट्रक्चर दिखाने के लिए सेट किया गया है. यह भी ध्यान रखें कि पहले से किए गए पेमेंट के उदाहरण की तरह ही, इस मैसेज में भी transaction_id की वैल्यू देना ज़रूरी है.

यह भी ध्यान रखें कि CreateBookingResponse में सेट किया गया booking_id, रीयल-टाइम अपडेट के लिए ज़रूरी फ़ील्ड है. यह अपडेट, न पहुंचने की वजह से लिया जाने वाला शुल्क लगाते समय भेजा जाना चाहिए. उम्मीद है कि यह आईडी, बुकिंग की जानकारी के साथ सेव किया गया है.

रीयल-टाइम अपडेट

अगर कोई व्यक्ति शेड्यूल की गई बुकिंग के लिए नहीं आता है या बुकिंग रद्द करने की समयसीमा खत्म होने के बाद (जैसे, सीधे आपसे संपर्क करके) बुकिंग रद्द करता है, तो आपके पास बुकिंग के समय सेव की गई पेमेंट की जानकारी का इस्तेमाल करके, बुकिंग न करने पर लगने वाला शुल्क लेने का विकल्प होता है. अगर आपने बुकिंग रद्द करने पर शुल्क लिया है, तो आपको रीयल टाइम अपडेट भेजना होगा. इसमें यह बताना होगा कि बुकिंग रद्द करने पर शुल्क लिया गया है.

CreateBooking से की गई बुकिंग के लिए, notification.partners.bookings.patch को अपडेट भेजा जाना चाहिए. इस अनुरोध के मुख्य हिस्से में, अपडेट की गई बुकिंग होनी चाहिए. साथ ही, इसका स्टेटस NO_SHOW_PENALIZED पर सेट होना चाहिए. इस स्थिति से Google को पता चलता है कि शुल्क लिया गया है.

उदाहरण के लिए, अनुरोध इन लोगों को भेजा जा सकता है:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

अनुरोध के मुख्य हिस्से के साथ:

JSON
{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "NO_SHOW_PENALIZED"
}

जमा

डिपॉज़िट का इस्तेमाल, बुकिंग के लिए ज़रूरी शुरुआती शुल्क इकट्ठा करने के लिए किया जाता है. बुकिंग के समय या बाद में, डिपॉज़िट लिया जा सकता है. आपको यह तय करना होगा कि जमा की गई रकम किन शर्तों के तहत रिफ़ंड की जा सकती है. साथ ही, यह भी तय करना होगा कि ऑनलाइन बुकिंग कब रद्द की जा सकती है.

डिपॉज़िट की जानकारी देने के लिए, आपको सेवा फ़ीड में deposit फ़ील्ड शामिल करना होगा, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

JSON
{
    "merchant_id": "merchant-1",
    "service_id": "service-2-b",
    "name": "Spa Treatment",
    "description": "A full spa treatment",
    "price": {
        "price_micros": 200000000,
        "currency_code": "USD"
    }
    "scheduling_rules": {
        "min_advance_online_canceling": 86400,
    }
    "deposit": {
        "deposit": {
            "price_micros": 25000000,
            "currency_code": USD,
            "min_advance_cancellation_sec": 14400,
        }
        "deposit_type": "FIXED_RATE_DEFAULT"
    }
}

इस उदाहरण में, min_advance_online_canceling से रद्द करने की समयसीमा और deposit.min_advance_cancellation_sec से यह तय होता है कि जमा किए गए पैसे कब रिफ़ंड किए जाएंगे. ध्यान दें कि ऊपर दिए गए उदाहरण में, रिफ़ंड की शर्तों के अलावा, रिफ़ंड के लिए जमा किए गए पैसों के लिए, रिज़र्वेशन रद्द करने का समय भी अलग से बताया जा सकता है. इस मामले में, उपयोगकर्ता 24 घंटे (86,400 सेकंड) पहले तक, ऑनलाइन सेवा रद्द कर सकता है. इससे यह पक्का होता है कि अगर बुकिंग रद्द करने की सूचना देर से दी जाती है, तो व्यापारी/कंपनी/कारोबारी को सीधे तौर पर इसकी जानकारी दी जाए. हालांकि, उपयोगकर्ता के पास बुकिंग से चार घंटे (14,400 सेकंड) पहले तक, अपने डिपॉज़िट का रिफ़ंड पाने का विकल्प होता है. इसके लिए, उसे आपसे या कारोबारी से संपर्क करना होगा. यह जानकारी, चेकआउट के समय दिखने वाली शर्तों और पुष्टि करने वाले ईमेल में दी जाएगी.

उपलब्धता के लेवल पर डिपॉज़िट तय करने का तरीका जानने के लिए, यह सेक्शन देखें.

बुकिंग सर्वर

अगर किसी अनुरोध में डिपॉज़िट शामिल है, तो payment_processing_parameters.unparsed_payment_method_token फ़ील्ड के ज़रिए, CreateBooking को कॉल करने पर, आपके बुकिंग सर्वर को पेमेंट टोकन भेजा जाता है. यह टोकन उसी तरह से पास किया जाता है जिस तरह से प्रीपेमेंट के मामले में किया जाता है. अगर आपने बुकिंग के समय डिपॉज़िट लिया है या पैसे रोके हैं, तो इस अनुरोध के दौरान ऐसा किया जा सकता है.

अगर आपको बाद में डिपॉज़िट शुल्क लेना है, तो आपको अपने पेमेंट प्रोसेसर के काम के एपीआई को कॉल करना होगा. इससे, टोकन को ऐसे वर्शन में अपग्रेड किया जा सकेगा जिसका इस्तेमाल बाद में किया जा सके. इस बारे में जानकारी, टोकन डिपॉज़िट करने के फ़्लो पर, पेमेंट की सुविधा चालू करने के लिए बनी गाइड के सेक्शन में दी गई है.

CreateBookingResponse को वापस करते समय, booking.payment_information फ़ील्ड में डिपॉज़िट की स्थिति सही तरीके से दिखनी चाहिए, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है.

JSON
{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
    "deposit": {
        "deposit": {
            "price_micros": 25000000,
            "currency_code": USD,
            "min_advance_cancellation_sec": 28800,
        }
        "deposit_type": "FIXED_RATE_DEFAULT"
    }
}

ध्यान दें कि डिपॉज़िट की कीमत और स्ट्रक्चर को दिखाने के लिए, डिपॉज़िट सेट किया जाता है. यह डिपॉज़िट, खरीदार से लिया जाएगा या उसके खाते में रोका जाएगा. यह भी ध्यान रखें कि पहले से किए गए पेमेंट के उदाहरण की तरह ही, इस मैसेज में भी transaction_id की वैल्यू देना ज़रूरी है.

रीयल-टाइम अपडेट

अगर कोई उपयोगकर्ता, जमा रकम रद्द करने की समयसीमा खत्म होने से पहले अपनी बुकिंग रद्द करता है, तो आपको उपयोगकर्ता के कार्ड से लिए गए जमा की रकम रिफ़ंड करनी होगी. डिपॉज़िट का रिफ़ंड करते समय, आपको रीयल टाइम अपडेट भेजना होगा. इसमें यह बताना होगा कि डिपॉज़िट का रिफ़ंड कर दिया गया है.

CreateBooking से की गई बुकिंग के लिए, notification.partners.bookings.patch को अपडेट भेजा जाना चाहिए. इस अनुरोध के मुख्य हिस्से में, अपडेट की गई बुकिंग होनी चाहिए. साथ ही, स्टेटस को CANCELED पर और paymentInformation.prepaymentStatus फ़ील्ड को PREPAYMENT_REFUNDED पर सेट किया जाना चाहिए. इससे Google को पता चलता है कि डिपॉज़िट रिफ़ंड कर दिया गया है.

उदाहरण के लिए, अनुरोध इन लोगों को भेजा जा सकता है:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

अनुरोध के मुख्य हिस्से के साथ:

JSON
{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "CANCELED"
    "paymentInformation": {
      "prepaymentStatus": "PREPAYMENT_REFUNDED"
    }
    
}

क्रेडिट कार्ड की ज़रूरत है

किसी सेवा के लिए, उपयोगकर्ता की पहचान की पुष्टि करने के लिए, क्रेडिट कार्ड की जानकारी देना पड़ सकता है. हालांकि, इसका इस्तेमाल पहले से किए गए पेमेंट, डिपॉज़िट या बुकिंग न करने पर लगने वाले शुल्क के लिए नहीं किया जाना चाहिए. अगर इस्तेमाल के उन उदाहरणों की ज़रूरत है, तो उन्हें ऊपर बताए गए तरीके का इस्तेमाल करके साफ़ तौर पर कॉन्फ़िगर किया जाना चाहिए. कृपया यह भी ध्यान रखें कि क्रेडिट कार्ड की ज़रूरत होने पर, अक्सर इस सेवा के लिए बुकिंग में काफ़ी गिरावट आती है.

चेकआउट के दौरान क्रेडिट कार्ड की जानकारी देना ज़रूरी करने के लिए, आपको फ़ील्ड require_credit_card को REQUIRE_CREDIT_CARD_ALWAYS पर सेट करना होगा.

JSON
{
    "merchant_id": "merchant-1",
    "service_id": "service-1-a",
    "name": "Men's haircut",
    "description": "One of our stylists will cut your hair",
    "price": {
        "price_micros": 15000000,
        "currency_code": "USD"
    },
    "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}

बुकिंग सर्वर

क्रेडिट कार्ड की ज़रूरी शर्त वाले अनुरोध को प्रोसेस करते समय, पेमेंट टोकन को आपके बुकिंग सर्वर पर भेजा जाता है. यह टोकन, payment_processing_parameters.unparsed_payment_method_token फ़ील्ड के ज़रिए CreateBooking को कॉल करने पर भेजा जाता है. यह टोकन उसी तरह से पास किया जाता है जिस तरह से प्रीपेड के मामले में किया जाता है. हालांकि, टोकन को सिर्फ़ कुछ समय के लिए अनुमति दी जाती है. इसलिए, आपको अपने पेमेंट प्रोसेसर के काम के एपीआई को कॉल करके, इस टोकन को ऐसे वर्शन में अपग्रेड करना होगा जिसका इस्तेमाल बाद में किया जा सके.

बुकिंग सर्वर के जवाब में, आने पर पैसे चुकाने के उदाहरण के अलावा कोई और जानकारी नहीं होनी चाहिए.

उपलब्धता के लेवल पर कीमत बदलना

ऊपर दिए गए सभी उदाहरणों में, कीमत / शुल्क का स्ट्रक्चर, सेवा के लेवल पर बताया गया है. ज़्यादातर मामलों में, सेवा के लेवल के हिसाब से तय की गई कीमत का इस्तेमाल किया जाना चाहिए. हालांकि, कुछ मामलों में, उपलब्धता के कुछ स्लॉट के लिए पेमेंट के स्ट्रक्चर में बदलाव करना सही होता है. उदाहरण के लिए, उपलब्धता के लेवल पर कीमतों / शुल्कों को बदलकर, इन स्थितियों को मैनेज किया जा सकता है:

  • मंगलवार को किराया कम और शनिवार को ज़्यादा होता है.
  • शाम 5:00 बजे से शाम 7:00 बजे के बीच, शो के लिए कोई शुल्क नहीं लिया जाता.

नीचे दी गई टेबल में, हर पेमेंट / शुल्क के तरीके के लिए, सेवा के लेवल की परिभाषा को बदलने के लिए, उपलब्धता फ़ीड में किस फ़ील्ड का इस्तेमाल करना है, इसकी जानकारी दी गई है.

पेमेंट का तरीका शुल्क / कीमत की परिभाषा क्या इसे बदला जा सकता है?
पहुंचने पर पेमेंट करना Service.price कीमत को Availability.payment_option_id रेफ़रंस के ज़रिए बदला जा सकता है Merchant.payment_option
पूर्व-भुगतान Service.price कीमत को Availability.payment_option_id रेफ़रंस के ज़रिए बदला जा सकता है Merchant.payment_option
बुकिंग रद्द करने पर लगने वाला शुल्क Service.no_show_fee Availability.no_show_fee
जमा Service.deposit Availability.deposit
क्रेडिट कार्ड की जानकारी देना ज़रूरी है Service.require_credit_card Availability.require_credit_card

ध्यान दें कि उपलब्धता के लेवल पर कीमत बदलने के लिए, आपको पहले व्यापारी/कंपनी/कारोबारी के लेवल पर पेमेंट का विकल्प तय करना होगा. इसके अलावा, उपलब्धता के लेवल पर रद्द करने की समयसीमा जोड़ने के बारे में दिशा-निर्देश पाने के लिए, कृपया रद्द करने की समयसीमा जोड़ने का तरीका गाइड देखें.