प्रमोशन का इस्तेमाल करके, आप और Google, ग्राहकों को छूट पर खाना ऑर्डर करने की सुविधा आज़माने के लिए बढ़ावा दे सकते हैं. Google आपकी ऑर्डरिंग एंड-टू-एंड कार्रवाइयों को प्रमोशन मैनेजमेंट सिस्टम के साथ इंटिग्रेट करने में मदद करता है.
इस तरह की छूट उपलब्ध हैं:
- Google के प्रायोजित प्रोमो कोड: ऐसे प्रमोशन कोड जिन्हें Google अपने-आप भरता है या उपयोगकर्ता डालते हैं.
- तीसरे पक्ष की ओर से प्रायोजित किए गए प्रमोशन कोड: उपयोगकर्ताओं को डालने के लिए प्रोमो कोड. ये कोड, खाना ऑर्डर करने की सेवा देने वाली कंपनी के ज़रिए उपलब्ध कराई जाती है.
- तीसरे पक्ष की ओर से प्रायोजित की गई अपने-आप लागू होने वाली छूट: इसमें ऐसी छूट दी जाती है जो बिना किसी प्रमोशन कोड के, अपने-आप लागू हो जाती है.
छूट किसी भी तरह की हो, Google आपके खाने-पीने के ऑर्डर को पूरा करने के लिए चेकआउट करता है. ऐसा छूट की पुष्टि करने और उसे लागू करने के लिए किया जाता है.
अगर आप खाना ऑर्डर करने की सेवा देने वाले डेवलपर हैं, तो आपको मान्य प्रोमो कोड के लिए छूट का हिसाब लगाने या अमान्य प्रोमो कोड के लिए गड़बड़ी की जानकारी भेजने, प्रोमो कोड रिडीम करने की सीमाओं को मैनेज करने, और पैसे वापस पाने के लिए अकाउंटिंग डेटा को ट्रैक करने के तरीके में कुछ बदलाव करने होंगे.
प्रमोशन प्रोसेस करने का तरीका
प्रमोशन की सुविधा देने वाले फ़ुलफ़िलमेंट को लागू करने के लिए, यह तरीका अपनाएं:
- प्रमोशन इंटिग्रेशन सेट अप करना. (अगर Google के स्पॉन्सर किए गए प्रोमो कोड का इस्तेमाल नहीं किया जा रहा है, तो यह चरण छोड़ दें.)
- प्रमोशन की मदद से चेकआउट की सुविधा इस्तेमाल करें.
- प्रमोशन के साथ 'ऑर्डर सबमिट करें' लागू करें.
प्रमोशन इंटिग्रेशन सेट अप करना
इस सेक्शन में बताया गया है कि अगर आपको Google के प्रायोजित प्रोमो कोड का इस्तेमाल करना है, तो प्रमोशन इंटिग्रेशन सेट अप कैसे करें. अगर आपको सिर्फ़ उन प्रमोशन कोड या छूट की सुविधा देनी है जिन्हें तीसरे पक्ष ने प्रायोजित किया है, तो अपने हिसाब से सेटअप तय करें और इस सेक्शन को छोड़ें.
Google यह बताता है कि स्पॉन्सर करने के लिए किस तरह के प्रमोशन का इस्तेमाल किया जाएगा और इंटिग्रेशन सेट अप करने के लिए आपसे संपर्क किया जाएगा. हम नीचे दी गई जानकारी देते हैं:
- छूट की रकम.
- कार्ट की कम से कम वैल्यू.
- प्रोमो कोड का इस्तेमाल शुरू और खत्म होने की तारीख.
- प्रमोशन कैंपेन के लिए तय की गई ज़्यादा से ज़्यादा रकम.
- प्रोमो कोड का इस्तेमाल कितनी बार किया जा सकता है.
प्रोमो कोड के उदाहरण:
FopaNewUser
: 10% (तय प्रतिशत) पर ज़्यादा से ज़्यादा 50 डॉलर की छूट पाएं.FopaMoreThan50
: 10 डॉलर (तय रकम की छूट).
अगर Google, कोड को लागू होने से रोकने का फ़ैसला लेता है, तो आपसे संपर्क किया जाएगा.
पैसे भेजने की सुविधा सेट अप करना
पेमेंट की प्रोसेस सेट अप करने के लिए, Google के ईएपी सलाहकार से संपर्क करें. Google, Google के प्रायोजित प्रमोशन कोड से जुड़े लेन-देन के लिए पैसे सिर्फ़ तब वापस करता है, जब ऑर्डर की आखिरी स्थिति इनमें से कोई एक हो:
CONFIRMED
IN_TRANSIT
READY_FOR_PICKUP
IN_PREPARATION
FULFILLED
प्रमोशन की सुविधा के साथ चेकआउट की सुविधा लागू करना
इस सेक्शन में बताया गया है कि जब प्रोमो कोड (Google की ओर से प्रायोजित या तीसरे पक्ष की ओर से प्रायोजित) की सुविधा दी जाती है, तो चेकआउट प्रोसेस लागू की जा सकती है. अपने-आप लागू होने वाली तीसरे पक्ष की ओर से दी जाने वाली छूट के लिए, आपको सिर्फ़ CheckoutResponseMessage
में छूट वाला लाइन आइटम लौटाना होगा. इसके लिए, प्रोमो कोड की जांच करने की ज़रूरत नहीं होती.
खाने के ऑर्डर को पूरा करने के दौरान, Google आपके ऑर्डर को पूरा करने के लिए CheckoutRequestMessage
में एक प्रोमो कोड भेजता है. बार-बार चेकआउट करने का अनुरोध करने पर, उपयोगकर्ता अपने कार्ट
या प्रोमो कोड को बदल सकते हैं.
यह देखने के लिए कि क्या उपयोगकर्ता ने पहली बार प्रोमो कोड लागू किया है, ये काम करें:
- Google के प्रायोजित प्रोमो कोड: Google यह जांच करता है कि कोई लौटने वाला उपयोगकर्ता, एक ही प्रोमो कोड को फिर से इस्तेमाल करने की कोशिश कर रहा है या नहीं. आपको कुछ करने की ज़रूरत नहीं है.
- तीसरे पक्ष के प्रायोजित प्रमोशन कोड या अपने-आप लागू होने वाली छूट: अगर आपने खाता जोड़ने की सुविधा और उपयोगकर्ता को ऑप्ट-इन करने की सुविधा लागू नहीं की है, तो चेकआउट के अनुरोध को प्रोसेस करते समय उपयोगकर्ता की जानकारी नहीं देखी जा सकेगी. इसके बजाय,
SubmitOrderRequestMessage
प्रोसेसिंग के दौरान,FoodCartExtension
ऑब्जेक्ट सेContact
जानकारी (जैसे कि उपयोगकर्ता का ईमेल पता) का इस्तेमाल करके यह जांच करें.
चेकआउट के हाल ही के अनुरोध के आधार पर, ऑर्डर पूरा करते समय छूट का हिसाब लगाएं या गड़बड़ियों का पता लगाएं. ऐसा करते समय, पक्का करें कि आपका सिस्टम पुरानी जानकारी को सेव न करे.
प्रोमो कोड की वैधता की जांच करना
ऑफ़र खत्म होने की तारीख, ज़्यादा से ज़्यादा इस्तेमाल, और ज़्यादा से ज़्यादा छूट जैसी तय की गई शर्तों के हिसाब से, इस बात की जांच की जानी चाहिए कि प्रमोशन कोड मान्य है या नहीं. इसके बाद, CheckoutResponseMessage
में तय की गई छूट के साथ सही तरीके से जवाब दें. इसके अलावा, अगर प्रोमो कोड लागू नहीं किया जा सकता, तो foodOrderErrors
के साथ सही जवाब दें. अगर आपको प्रोमो कोड में गड़बड़ियां मिलती हैं, तो प्रमोशन से जुड़ी गड़बड़ियों को ठीक करना लेख में बताया गया तरीका अपनाएं.
नीचे दिया गया स्निपेट, प्रमोशन कोड के लिए foodOrderErrors
का एक उदाहरण दिखाता है.
पक्का करें कि correctedProposedOrder
में प्रमोशन नोड शामिल न हो.
"foodOrderErrors": [
{
"error": "PROMO_NOT_APPLICABLE",
// Copy promotions.coupon string from CheckoutRequest as the ID
"id": "GoogleNewUser",
"description": "Promotion could not be applied"
}
],
"correctedProposedOrder": {// required ...},
"paymentOptions": {// required ...}
छूट तय करें
अगर प्रोमो कोड मान्य है, तो आपके फ़ुलफ़िलमेंट को छूट की
डॉलर वैल्यू का हिसाब लगाना चाहिए. साथ ही, otherItems
कलेक्शन में कंप्यूट किए गए
छूट की वैल्यू के साथ CheckoutResponseMessage
वापस भेजना चाहिए. ऑर्डर की कुल कीमत,
नेगेटिव नहीं होनी चाहिए. अगर छूट की रकम कार्ट की रकम से ज़्यादा है, तो ऑर्डर की कुल कीमत को 0 डॉलर करने के लिए, ज़्यादा से ज़्यादा डॉलर की रकम वापस भेजें.
यह स्निपेट, प्रमोशन वाली छूट के लिए CheckoutResponseMessage
सेक्शन का उदाहरण दिखाता है:
"proposedOrder": {
"otherItems": [
. . .
{
"name": "Discount",
// copy promotions.coupon field from CheckoutRequest as the id
"id": "GoogleNewUser",
"price": {
"type": "ESTIMATE",
"amount": {
"currencyCode": "USD",
"units": "-3",
"nanos": -500000000
}
},
"type": "DISCOUNT",
}
]
}
इस्तेमाल नहीं किए गए प्रमोशन रिलीज़ करें
चेकआउट के हर अनुरोध पर, ऑर्डर सबमिट करने का अनुरोध नहीं किया जाता. अगर चेकआउट के दौरान, ऑर्डर सबमिट करने के दौरान प्रमोशन पर रोक लगाई जाती है, तो पक्का करें कि आपके पास प्रमोशन को वापस लेने का कोई तरीका उपलब्ध हो. इससे यह पक्का होता है कि खाने-पीने की चीज़ें ऑर्डर करने की सेवा, सही कैंपेन कोटा बनाए रखती है.
प्रमोशन की गड़बड़ियां ठीक करना
अगर आपके फ़ुलफ़िलमेंट के हिसाब से CheckoutRequestMessage
से मिला प्रोमो कोड मान्य नहीं है (उदाहरण के लिए, इसकी समयसीमा खत्म हो गई है, अमान्य है या इसकी पहचान नहीं की गई है), तो foodOrderError
के साथ CheckoutResponseMessage
भेजें. साथ ही, इसमें correctedProposedOrder
और paymentOptions
ऑब्जेक्ट के साथ-साथ, गड़बड़ी का लागू होने वाला कोड और वजह का टेक्स्ट दें.
अगर आपको एक ही अनुरोध से, प्रमोशन कोड में कई गड़बड़ियां मिलती हैं, तो जिन गड़बड़ियों को ठीक नहीं किया जा सकता उन्हें वापस भेजें. इसके बाद, उन गड़बड़ियों को वापस भेजें जिन्हें आपको वापस पाया जा सकता है. अपने चेक को इस तरह प्राथमिकता दें (ज़्यादा से कम प्राथमिकता):
PROMO_NOT_RECOGNIZED
PROMO_EXPIRED
PROMO_USER_INELIGIBLE
PROMO_ORDER_INELIGIBLE
PROMO_NOT_APPLICABLE
उदाहरण
यहां प्रमोशन कोड के साथ चेकआउट के अनुरोध का उदाहरण दिया गया है:
{ "accessToken": "test_access_token", "lastSeen": "2018-06-22T19:25:39Z" }, "conversation": { "conversationId": "XYZ" }, "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": "Falafel Bite" }, "lineItems": [ { "name": "Falafel Tray", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 950000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "FOPAACTIVECODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } } } ] } ], "directActionOnly": true, "isInSandbox": true }
अगर प्रमोशन कोड मान्य है, तो यह रहा ऑर्डर पूरा करने के दौरान मिला चेकआउट रिस्पॉन्स:
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "checkoutResponse": { "proposedOrder": { "otherItems": [ { "name": "Delivery Fees", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "3", "nanos": 500000000 } }, "type": "DELIVERY" }, { "name": "Tax", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 370000000 } }, "type": "TAX" }, { "name": "Promotion", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5", "nanos": 0 } }, "id": "FOPAACTIVECODE", "type": "DISCOUNT" } ], "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Falafel Tray", "type": "REGULAR", "id": "2529103", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 950000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "FOPAACTIVECODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } } } }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 820000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension", "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } }, "expiresAt": "2018-06-22T19:30:52.596Z" } ] } }, "orderOptions": {}, "paymentOptions": { "googleProvidedOptions": { "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "stripe", "stripe:publishableKey": "example_stripe_client_key", "stripe:version": "2017-04-06" } }, "supportedCardNetworks": [ "AMEX", "DISCOVER", "MASTERCARD", "VISA", "JCB" ], "prepaidCardDisallowed": true } } } } } ], "suggestions": [] } } }
अगर प्रोमो कोड अमान्य है, तो चेकआउट के जवाब का एक उदाहरण यहां दिया गया है:
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "error": { "foodOrderErrors": [ { "error": "PROMO_NOT_RECOGNIZED", "id": "SOMEPROMO", "description": "Coupon not found" } ], "correctedProposedOrder": { "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "id": "sample_item_offer_id_4", "name": "Prawns Biryani", "type": "REGULAR", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "18", "nanos": 750000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/offer/id4", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "extension": { "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension" }, "promotions": [] }, "otherItems": [ { "name": "Tax", "type": "TAX", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "1", "nanos": 650000000 } } } ], "termsOfServiceUrl": "https://exampleprovider.com/terms", "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "20", "nanos": 400000000 } }, "extension": { "availableFulfillmentOptions": [ { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "PT0M" } } } ], "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" } }, "paymentOptions": { "googleProvidedOptions": { "prepaidCardDisallowed": false, "billingAddressRequired": true, "tokenizationParameters": { "tokenizationType": "PAYMENT_GATEWAY", "parameters": { "gateway": "braintree", "braintree:apiVersion": "v1", "braintree:sdkVersion": "1.4.0", "braintree:merchantId": "example_braintree_merchant_ID", "braintree:clientKey": "example_braintree_client_key", "braintree:authorizationFingerprint": "example_braintree_fingerprint" } } } }, "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension" } } } ] } } }
प्रमोशन के साथ ऑर्डर सबमिट करने का ऑर्डर लागू करना
ऑर्डर पूरा करने के लिए सबमिट किए गए डेटा में, यह देखें कि क्या उपयोगकर्ता पहली बार
प्रोमो कोड लागू कर रहा है. SubmitOrderRequestMessage
प्रोसेसिंग के दौरान, FoodCartExtension
ऑब्जेक्ट से Contact
जानकारी (जैसे, उपयोगकर्ता का ईमेल पता) का इस्तेमाल करके यह देखा जा सकता है.
आपको यह भी फिर से देखना होगा कि प्रोमो कोड इस्तेमाल किया जा सकता है या नहीं:
- अगर कोड लागू होता है, तो: ऑर्डर की पुष्टि करें और रिडीम किए गए कूपन को मार्क करें.
- अगर कोड अब लागू नहीं होता है, तो:
PROMO_NOT_APPLICABLE
गड़बड़ी की मदद से ऑर्डर को अस्वीकार करें.FoodOrderUpdateExtension
वाले तरीके का इस्तेमाल करके, अस्वीकार किए जाने की खास वजह बताई जा सकती है.
उदाहरण
यहां प्रमोशन के साथ ऑर्डर सबमिट करने के अनुरोध का उदाहरण दिया गया है:
{ "conversation": { "conversationId": "example_conversation_ID" }, "inputs": [ { "intent": "actions.intent.TRANSACTION_DECISION", "arguments": [ { "transactionDecisionValue": { "order": { "finalOrder": { "cart": { "merchant": { "id": "https://www.exampleprovider.com/merchant/id1", "name": "Falafel Bite" }, "lineItems": [ { "name": "Falafel Tray", "type": "REGULAR", "id": "sample_item_offer_id_1", "quantity": 1, "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 950000000 } }, "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1", "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension" } } ], "promotions": [ { "coupon": "FOPAACTIVECODE" } ], "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension", "fulfillmentPreference": { "fulfillmentInfo": { "pickup": { "pickupTimeIso8601": "P0M" } } }, "contact": { "displayName": "Food Ordering", "email": "example.provider@gmail.com", "phoneNumber": "+19993334444", "firstName": "Food", "lastName": "Ordering" } } }, "otherItems": [ { "name": "Delivery Fees", "type": "DELIVERY", "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": "Promotion", "type": "DISCOUNT", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "-5" } }, "id": "FOPAACTIVECODE" }, { "name": "Subtotal", "type": "SUBTOTAL", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 950000000 } } }, { "name": "Tip", "type": "GRATUITY", "price": { "type": "ESTIMATE", "amount": { "currencyCode": "USD" } } } ], "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "9", "nanos": 820000000 } }, "extension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension" } }, "googleOrderId": "example_google_order_ID", "orderDate": "2018-06-22T19:30:59.502Z", "paymentInfo": { "displayName": "example_display_name", "googleProvidedPaymentInstrument": { "instrumentToken": "example_instrument_token" }, "paymentType": "PAYMENT_CARD" }, "locale": "en" } } } ] } ], "directActionOnly": true, "isInSandbox": true }
यहां प्रमोशन कोड मान्य होने पर, फ़ुलफ़िलमेंट से मिले ऑर्डर के लिए सबमिट किए गए जवाब का एक उदाहरण दिया गया है:
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "example_action_order_ID", "orderState": { "state": "CREATED", "label": "Order is created with partner." }, "updateTime": "2018-06-22T19:31:01.556Z", "orderManagementActions": [ { "type": "CALL_RESTAURANT", "button": { "title": "Call Us", "openUrlAction": { "url": "tel:+1-111-111-1111" } } }, { "type": "EMAIL", "button": { "title": "Email Us", "openUrlAction": { "url": "mailto:example.provider@gmail.com" } } }, { "type": "CUSTOMER_SERVICE", "button": { "title": "Customer Service", "openUrlAction": { "url": "http://www.google.com" } } } ] } } } ], "suggestions": [] } } }
अगर प्रोमो कोड अमान्य है, तो ऑर्डर सबमिट करने का उदाहरण यहां दिया गया है:
"orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected." }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "PROMO_NOT_APPLICABLE", "reason": "Sorry, there's something wrong. Try another code?" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:example.provider@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+19993334444" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "PROMO_USER_INELIGIBLE", "description": "Sorry, you can only use this promotion once." } ] } }