इस्तेमाल न किए जा सकने वाले डिजिटल लेन-देन बनाएं (Dialogflow)

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

मुख्य शब्द: इस्तेमाल न किया जा सकने वाला डिजिटल प्रॉडक्ट, स्टॉक रखने वाली ऐसी यूनिट (SKU) होता है जिसे सिर्फ़ एक बार खरीदा जा सकता है. जैसे, किसी ऐक्शन या Android ऐप्लिकेशन में अतिरिक्त कॉन्टेंट का ऐक्सेस पैसे देकर. इस तरह का प्रॉडक्ट, इस्तेमाल किए जा सकने वाले डिजिटल प्रॉडक्ट से अलग होता है. जिसे खरीदा, इस्तेमाल, और फिर से खरीदा जा सकता है.

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

पाबंदियां और समीक्षा के लिए दिशा-निर्देश

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

डिजिटल प्रॉडक्ट बेचने वाली कार्रवाइयों को इन देशों में ही डिप्लॉय किया जा सकता है:

  • ऑस्ट्रेलिया
  • ब्राज़ील
  • कनाडा
  • इंडोनेशिया
  • जापान
  • मेक्सिको
  • रूस
  • सिंगापुर
  • थाईलैंड
  • तुर्किये
  • यूनाइटेड किंगडम
  • अमेरिका

लेन-देन फ़्लो

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

  1. डिजिटल खरीदारी के लिए एपीआई क्लाइंट सेट अप करें: आपकी सेट की गई कार्रवाई, आपकी Google Play इन्वेंट्री से संपर्क करने और लेन-देन करने के लिए, डिजिटल खरीदारी एपीआई का इस्तेमाल करती है. आपकी सेट की गई कार्रवाई से पहले कुछ और करने से पहले, यह डिजिटल खरीदारी एपीआई के साथ संपर्क करने के लिए, सेवा कुंजी के साथ एक JWT क्लाइंट बनाता है.
  2. जानकारी इकट्ठा करें: आपकी सेट की गई कार्रवाई, लेन-देन की तैयारी करने के लिए, उपयोगकर्ता और आपकी Google Play इन्वेंट्री के बारे में बुनियादी जानकारी इकट्ठा करती है.
    1. लेन-देन से जुड़ी ज़रूरी शर्तों की पुष्टि करना: आपकी सेट की गई कार्रवाई, परचेज़ फ़्लो की शुरुआत में ही डिजिटल ट्रांज़ैक्शन से जुड़ी ज़रूरी शर्तों के लिए हेल्पर का इस्तेमाल करती है. इसकी मदद से यह पक्का किया जाता है कि उपयोगकर्ता लेन-देन कर सकता है.
    2. उपलब्ध इन्वेंट्री इकट्ठा करें: आपकी सेट की गई कार्रवाई, आपकी Google Play इन्वेंट्री की जांच करती है और यह पहचान करती है कि फ़िलहाल कौनसे आइटम खरीदारी के लिए उपलब्ध हैं.
  3. ऑर्डर तैयार करना: आपकी सेट की गई कार्रवाई, उपयोगकर्ता को उपलब्ध डिजिटल प्रॉडक्ट दिखाती है, ताकि वह खरीदारी करने के लिए कोई डिजिटल प्रॉडक्ट चुन सके.
  4. खरीदारी पूरी करें: आपकी सेट की गई कार्रवाई, Google Play Store पर उपयोगकर्ता के चुने गए विकल्प से खरीदारी शुरू करने के लिए, डिजिटल खरीदारी एपीआई का इस्तेमाल करती है.
  5. नतीजा मैनेज करें: आपकी सेट की गई कार्रवाई को लेन-देन के लिए स्टेटस कोड मिलता है. साथ ही, उपयोगकर्ता को खरीदारी हो जाने की सूचना देती है (या उसे कुछ और चरण पूरे करने होते हैं).

ज़रूरी शर्तें

अपनी सेट की गई कार्रवाई में डिजिटल लेन-देन को शामिल करने से पहले, आपको इन शर्तों को पूरा करना होगा:

  • Google Play पर डेवलपर खाता और व्यापारी खाता. इससे Google Play Console में अपने डिजिटल प्रॉडक्ट मैनेज किए जा सकते हैं.

  • ऐसा वेब डोमेन जिसकी Google Search Console में पुष्टि की गई हो. इस डोमेन को सार्वजनिक तौर पर लॉन्च की गई किसी वेबसाइट से जोड़ने की ज़रूरत नहीं है. हमें सिर्फ़ आपके वेब डोमेन की जानकारी चाहिए.

  • ऐसा Android ऐप्लिकेशन जिसके पास Google Play Console में com.android.vending.BILLING अनुमति हो. आपका डिजिटल प्रॉडक्ट "इन-ऐप्लिकेशन खरीदारी" के लिए होगा जो Google Play Console में इस ऐप्लिकेशन से जुड़ी होगी.

    आपको इस ऐप्लिकेशन का इस्तेमाल करके Play Console में एक रिलीज़ भी बनानी होगी. हालांकि, अगर आपको रिलीज़ को सार्वजनिक नहीं करना है, तो क्लोज़्ड ऐल्फ़ा वर्शन बनाया जा सकता है.

    अगर आपके पास पहले से कोई Android ऐप्लिकेशन नहीं है, तो Android ऐप्लिकेशन जोड़ने के निर्देश देखें.

  • Google Play Console में एक या एक से ज़्यादा मैनेज किए जा रहे प्रॉडक्ट हैं. ये ऐसे डिजिटल प्रॉडक्ट हैं जिन्हें आपकी कार्रवाई की मदद से बेचा जाता है. ध्यान दें कि Play Console में मैनेज किए जा रहे प्रॉडक्ट तब तक नहीं बनाए जा सकते, जब तक Android ऐप्लिकेशन के लिए ज़रूरी शर्तें सेट अप नहीं की जाती.

    अगर आपके पास पहले से मैनेज किए जा रहे प्रॉडक्ट नहीं हैं, तो डिजिटल सामान बनाने के निर्देश अपनाएं.

कोई Android ऐप्लिकेशन जोड़ें

अगर फ़िलहाल आपके पास Google Play Console में बिलिंग की अनुमति वाला Android ऐप्लिकेशन नहीं है, तो यह तरीका अपनाएं:

  1. Android Studio या अपनी पसंद के Android IDE में, नया प्रोजेक्ट बनाएं. एक बहुत ही बुनियादी ऐप्लिकेशन बनाने के लिए, प्रोजेक्ट सेटअप प्रॉम्प्ट में विकल्प चुनें.
  2. प्रोजेक्ट को पैकेज के लिए कोई नाम दें, जैसे कि com.mycompany.myapp. इस नाम को डिफ़ॉल्ट के तौर पर न छोड़ें. ऐसा इसलिए, क्योंकि Play Console पर com.example वाले पैकेज अपलोड नहीं किए जा सकते.
  3. अपने ऐप्लिकेशन की AndroidManifest.xml फ़ाइल खोलें.
  4. manifest एलिमेंट में कोड की यह लाइन जोड़ें:

    <uses-permission android:name="com.android.vending.BILLING" />

    आपकी AndroidManifest.xml फ़ाइल कुछ इस तरह दिखेगी:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.mycompany.myapp">
        <uses-permission android:name="com.android.vending.BILLING" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme" />
    </manifest>
    
  5. हस्ताक्षर किए गए APK के तौर पर अपना ऐप्लिकेशन बनाएं. Android Studio में यह तरीका अपनाएं:

    1. बिल्ड पर जाएं, साइन किया गया बंडल / APK जनरेट करें पर जाएं.
    2. आगे बढ़ें पर क्लिक करें.
    3. की स्टोर पाथ में जाकर, नया बनाएं पर क्लिक करें.
    4. हर फ़ील्ड को भरें. इसके बाद, ठीक है पर क्लिक करें. अपने कुंजी स्टोर के पासवर्ड और कुंजी मैनेज करने के लिए पासवर्ड को नोट कर लें और इन्हें किसी सुरक्षित जगह पर रखें, क्योंकि बाद में इनका इस्तेमाल किया जाएगा.
    5. आगे बढ़ें पर क्लिक करें.
    6. रिलीज़ चुनें.
    7. V1 (JAR Signature) चुनें.
    8. पूरा करें पर क्लिक करें.
    9. कुछ सेकंड के बाद, Android Studio app-release.apk फ़ाइल जनरेट करता है. बाद में इस्तेमाल के लिए यह फ़ाइल ढूंढें.
  6. Google Play कंसोल में, नया ऐप्लिकेशन बनाएं.

  7. ऐप्लिकेशन रिलीज़ पर जाएं.

  8. बंद ट्रैक में, मैनेज करें पर जाएं और फिर ऐल्फ़ा पर जाएं.

  9. रिलीज़ बनाएं बटन पर क्लिक करें.

  10. Google को आपका साइनिंग पासकोड मैनेज और सुरक्षित करने दें में जाकर, अपनी साइनिंग कुंजी की जानकारी डालें.

  11. अपनी APK फ़ाइल अपलोड करें.

  12. सेव करें पर क्लिक करें.

अपना डिजिटल सामान बनाएं

अगर फ़िलहाल आपके पास Play Console में कोई डिजिटल प्रॉडक्ट नहीं है, तो यह तरीका अपनाएं:

  1. Google Play Console में, ऐप्लिकेशन में खरीदने के लिए प्रॉडक्ट पर जाएं. इसके बाद, मैनेज किए जा रहे प्रॉडक्ट पर जाएं. अगर आपको कोई चेतावनी दिखती है, तो Android ऐप्लिकेशन बनाने के लिए पिछले निर्देशों का पालन करें या व्यापारी/कंपनी प्रोफ़ाइल बनाने के लिए दिए गए लिंक पर क्लिक करें.
  2. मैनेज किया जा रहा प्रॉडक्ट बनाएं पर क्लिक करें.
  3. अपने डिजिटल प्रॉडक्ट के लिए फ़ील्ड भरें. प्रॉडक्ट आईडी को नोट करें, ताकि आप अपनी सेट की गई कार्रवाई से इस प्रॉडक्ट के बारे में बता सकें.
  4. सेव करें पर क्लिक करें.
  5. आपको जिस प्रॉडक्ट को बेचना है उसके लिए, दूसरे से चौथे चरण तक की प्रोसेस दोहराएं.

Google Play Console में, इस्तेमाल न की जाने वाली चीज़ों के उदाहरण.

अपना Actions प्रोजेक्ट तैयार करना

Google Play कंसोल में सेट अप किए गए अपने डिजिटल प्रॉडक्ट के साथ, आपको डिजिटल लेन-देन चालू करने होंगे. साथ ही, अपने Actions प्रोजेक्ट को Play ऐप्लिकेशन से जोड़ना होगा.

अपने Actions प्रोजेक्ट में डिजिटल प्रॉडक्ट के लेन-देन की सुविधा चालू करने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, अपना प्रोजेक्ट खोलें या नया प्रोजेक्ट बनाएं.
  2. डिप्लॉय करें पर जाएं. इसके बाद, डायरेक्ट्री की जानकारी पर जाएं.
  3. ज़्यादा जानकारी और लेन-देन में, क्या आपकी कार्रवाइयां डिजिटल प्रॉडक्ट के लेन-देन करने के लिए डिजिटल खरीदारी एपीआई का इस्तेमाल करती हैं में हां बॉक्स को चुनें.
  4. सेव करें पर क्लिक करें.

डिजिटल प्रॉडक्ट एपीआई पासकोड बनाना

डिजिटल प्रॉडक्ट एपीआई को अनुरोध भेजने के लिए, आपको अपने Actions कंसोल प्रोजेक्ट से जुड़ा JSON सेवा खाता कुंजी डाउनलोड करनी होगी.

अपने सेवा खाते की कुंजी को वापस पाने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, सबसे ऊपर दाएं कोने में मौजूद तीन बिंदु वाले आइकॉन पर क्लिक करें. इसके बाद, प्रोजेक्ट सेटिंग पर क्लिक करें.
  2. अपनी सेट की गई कार्रवाई का प्रोजेक्ट आईडी ढूंढें.
  3. "<project_id>" को अपने प्रोजेक्ट आईडी से बदलकर, इस लिंक पर जाएं: https://console.developers.google.com/apis/credentials?project=project_id
  4. मुख्य नेविगेशन में, क्रेडेंशियल पर जाएं.
  5. इसके बाद दिखने वाले पेज पर, क्रेडेंशियल बनाएं पर क्लिक करें. इसके बाद, सेवा खाता कुंजी पर क्लिक करें.
  6. सेवा खाते पर जाएं और नया सेवा खाता पर क्लिक करें.
  7. सेवा खाते को Digitaltransactions जैसा नाम दें.
  8. बनाएं पर क्लिक करें.
  9. भूमिका को प्रोजेक्ट > मालिक पर सेट करें.
  10. जारी रखें पर क्लिक करें.
  11. कुंजी बनाएं पर क्लिक करें.
  12. JSON कुंजी का टाइप चुनें.
  13. कुंजी बनाएं पर क्लिक करें और JSON सेवा खाता कुंजी डाउनलोड करें.

इस सेवा खाता कुंजी को किसी सुरक्षित जगह पर सेव करें. आपको डिजिटल खरीदारी एपीआई के लिए क्लाइंट बनाने के लिए, इस कुंजी का इस्तेमाल करना होगा.

अपनी Play इन्वेंट्री से कनेक्ट करें

किसी कार्रवाई प्रोजेक्ट से अपने डिजिटल प्रॉडक्ट ऐक्सेस करने के लिए, अपने वेब डोमेन और ऐप्लिकेशन को कनेक्ट की गई प्रॉपर्टी के तौर पर अपने प्रोजेक्ट से जोड़ें.

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

अपने Play Console वेब डोमेन और ऐप्लिकेशन को अपने Actions प्रोजेक्ट से कनेक्ट करने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, डिप्लॉय करें पर जाएं. इसके बाद, ब्रैंड की पुष्टि पर जाएं.
  2. अगर आपने कोई प्रॉपर्टी कनेक्ट नहीं की है, तो सबसे पहले किसी वेबसाइट को कनेक्ट करें:

    1. वेब प्रॉपर्टी (</>) बटन पर क्लिक करें.
    2. अपने वेब डोमेन का यूआरएल डालें और कनेक्ट करें पर क्लिक करें.

    Google उस व्यक्ति को आगे के निर्देशों के साथ एक ईमेल भेजता है जिसने Google Search Console में उस वेब डोमेन के लिए पुष्टि कर ली हो. जब ईमेल पाने वाला व्यक्ति यह तरीका अपना लेगा, तब वेबसाइट ब्रैंड की पुष्टि में दिखेगी.

  3. जब आपके पास कम से कम एक वेबसाइट कनेक्ट हो, तो अपने Android ऐप्लिकेशन को कनेक्ट करने के लिए यह तरीका अपनाएं:

    1. Actions कंसोल में, डिप्लॉय करें पर जाएं. इसके बाद, ब्रैंड की पुष्टि पर जाएं.
    2. ऐप्लिकेशन कनेक्ट करें पर क्लिक करें.
    3. इसके बाद, एक पेज दिखेगा. उसमें दिए गए निर्देशों का पालन करके, Play Console पर अपने वेब डोमेन की पुष्टि करें. वह Play ऐप्लिकेशन चुनें जिसमें आपका डिजिटल सामान शामिल है और वेब डोमेन का यूआरएल ठीक वैसा ही डालें जैसा ब्रैंड की पुष्टि पेज पर दिखाया गया है.

      Google एक बार फिर से, डोमेन के ऐसे मालिक को पुष्टि करने के लिए ईमेल भेजता है जिसके मालिकाना हक की पुष्टि हो चुकी है. जब वे पुष्टि को मंज़ूरी दे देंगे, तो आपका Play ऐप्लिकेशन ब्रैंड की पुष्टि में दिखेगा.

    4. Play पर की जाने वाली खरीदारी ऐक्सेस करना चालू करें.

इमेज प्रोजेक्ट से जुड़ी वेबसाइट और ऐप्लिकेशन दिखा रही है.

अपना परचेज़ फ़्लो बनाना

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

1. डिजिटल खरीदारी एपीआई क्लाइंट सेट अप करना

बातचीत पूरी करने के लिए वेबहुक में, अपने सेवा खाते की JSON कुंजी और https://www.googleapis.com/auth/actions.purchases.digital स्कोप की मदद से JWT क्लाइंट बनाएं.

यहां दिया गया Node.js कोड, डिजिटल खरीदारी एपीआई के लिए JWT क्लाइंट बनाता है:

  const serviceAccount = {'my-file.json'};
  const request = require('request');
  const {google} = require('googleapis');

  const jwtClient = new google.auth.JWT(
    serviceAccount.client_email, null, serviceAccount.private_key,
    ['https://www.googleapis.com/auth/actions.purchases.digital'],
    null
  );

2. जानकारी इकट्ठा करना

उपयोगकर्ता के खरीदारी करने से पहले, आपकी सेट की गई कार्रवाई, खरीदारी करने के लिए उपयोगकर्ता के पास मौजूद जानकारी को इकट्ठा करती है. साथ ही, यह जानकारी भी इकट्ठा करती है कि आपकी इन्वेंट्री से कौनसे सामान उपलब्ध हैं.

2. ए. लेन-देन की ज़रूरी शर्तों की पुष्टि करना

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

यह Node.js कोड, बातचीत की शुरुआत में DIGITAL_PURCHASE_CHECK का इस्तेमाल करता है:

app.intent('Default Welcome Intent', async (conv, { SKU }) => {
  // Immediately invoke digital purchase check intent to confirm
  // purchase eligibility.
  conv.ask(new DigitalPurchaseCheck());
});

बातचीत के तर्कों में, इस जांच के नतीजे को DIGITAL_PURCHASE_CHECK_RESULT के तौर पर पाएं. इस नतीजे के आधार पर, या तो लेन-देन जारी रखें या साइट को बड़ा करें और उनसे अपना Google Pay कॉन्फ़िगरेशन जांचने का अनुरोध करें.

नीचे दिया गया Node.js कोड, ज़रूरी शर्तों की जांच के नतीजे को मैनेज करता है :

app.intent('Digital Purchase Check', async (conv) => {
  const arg = conv.arguments.get('DIGITAL_PURCHASE_CHECK_RESULT');
  if (!arg || !arg.resultType) {
    conv.close('Digital Purchase check failed. Please check logs.');
    return;
  }
  // User does not meet necessary conditions for completing a digital purchase
  if (arg.resultType === 'CANNOT_PURCHASE' || arg.resultType === 'RESULT_TYPE_UNSPECIFIED') {
    conv.close(`It looks like you aren't able to make digital purchases. Please check your Google Pay configuration and try again.`);
    return;
  }
  conv.ask('Welcome to the Digital Goods Sample. Would you like to see what I have for sale?');
});

2. b. उपलब्ध इन्वेंट्री इकट्ठा करना

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

आपके हर डिजिटल प्रॉडक्ट को JSON फ़ॉर्मैट में SKU के तौर पर दिखाया जाता है. यहां दिया गया Node.js कोड, हर SKU के लिए सही फ़ॉर्मैट के बारे में बताता है:

body = {
  skus: [
    skuId: {
      skuType: one of "APP" or "UNSPECIFIED"
      id: string,
      packageName: string
    }
    formattedPrice: string,
    title: string,
    description: string
  ]
}

https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet एंडपॉइंट पर एक पोस्ट अनुरोध भेजें, जहां Google Play Console में {packageName} आपके ऐप्लिकेशन के पैकेज का नाम हो (उदाहरण के लिए, com.myapp.digitalgoods). साथ ही, नतीजे को SKU के ऐरेग के तौर पर फ़ॉर्मैट करें.

मिलने वाले कलेक्शन में सिर्फ़ खास डिजिटल प्रॉडक्ट वापस पाने के लिए, उन डिजिटल प्रॉडक्ट के आईडी लिस्ट करें जिन्हें body.ids में खरीदारी के लिए उपलब्ध कराना है. डिजिटल प्रॉडक्ट के आईडी की जानकारी, Google Play Console में इन-ऐप्लिकेशन प्रॉडक्ट में दी गई है.

यह Node.js कोड डिजिटल खरीदारी एपीआई से उपलब्ध वस्तुओं की एक सूची का अनुरोध करता है. साथ ही, उसे SKU की एक कैटगरी के तौर पर फ़ॉर्मैट करता है:

return jwtClient.authorize((err, tokens) => {
    if (err) {
      throw new Error(`Auth error: ${err}`);
    }

    const packageName = 'com.example.projectname';

    request.post(`https://actions.googleapis.com/v3/packages/${packageName}/skus:batchGet`, {
      'auth': {
        'bearer': tokens.access_token,
      },
      'json': true,
      'body': {
        'conversationId': conversationId,
        'skuType': 'APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['nonconsumable.1']
      },
    }, (err, httpResponse, body) => {
      if (err) {
        throw new Error(`API request error: ${err}`);
      }
      console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
      console.log(JSON.stringify(body));
    });
  });
});

3. ऑर्डर बनाएं

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

नीचे दिया गया Node.js कोड, SKU ऑब्जेक्ट के इन्वेंट्री ऐरे को पढ़ता है. साथ ही, हर एक के लिए, एक सूची आइटम के साथ एक सूची रिस्पॉन्स बनाता है:

skus.forEach((sku) => {
  const key = `${sku.skuId.skuType},${sku.skuId.id}`
  list.items[key] = {
    title: sku.title,
    description: `${sku.description} | ${sku.formattedPrice}`,
  };
});

4. खरीदारी पूरी करें

खरीदारी पूरी करने के लिए, उपयोगकर्ता के चुने गए आइटम के साथ COMPLETE_PURCHASE हेल्पर इंटेंट का इस्तेमाल करें.

यहां दिया गया Node.js कोड, सूची के रिस्पॉन्स से उपयोगकर्ता के चुने गए SKU को मैनेज करता है और उस जानकारी के साथ COMPLETE_PURCHASE इंटेंट का अनुरोध करता है:

app.intent('Send Purchase', (conv, params, option) => {
  let [skuType, id] = option.split(',');

  conv.ask(new CompletePurchase({
    skuId: {
      skuType: skuType,
      id: id,
      packageName: <PACKAGE_NAME>,
    },
  }));
});

5. नतीजे मैनेज करें

खरीदारी पूरी होने पर, यह actions_intent_COMPLETE_PURCHASEDialogflow इवेंट (या actions.intent.COMPLETE_PURCHASE Actions SDK इंटेंट) को नतीजे के बारे में बताने वाले COMPLETE_PURCHASE_VALUE तर्क के साथ ट्रिगर करता है. इस इवेंट से ट्रिगर होने वाला एक ऐसा इंटेंट बनाएं जो उपयोगकर्ता को नतीजे के बारे में बताए.

खरीदारी के इन संभावित नतीजों को मैनेज करें:

  • PURCHASE_STATUS_OK: खरीदारी हो गई है. लेन-देन इस समय पूरा हो जाता है, इसलिए लेन-देन के फ़्लो से बाहर निकलें और अपनी बातचीत पर वापस जाएं.
  • PURCHASE_STATUS_ALREADY_OWNED: लेन-देन पूरा नहीं हो सका, क्योंकि उपयोगकर्ता के पास पहले से उस आइटम का मालिकाना हक है. इस गड़बड़ी से बचने के लिए, उपयोगकर्ता की पिछली खरीदारी देखें और उसमें दिखाए गए आइटम को इस तरह बनाएं कि वह पहले से मौजूद आइटम को फिर से खरीद सके.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: लेन-देन नहीं हो सका, क्योंकि अनुरोध किया गया आइटम उपलब्ध नहीं है. इस गड़बड़ी से बचने के लिए, उन SKU को देखें जो खरीदारी के समय से करीब हैं.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: लेन-देन नहीं हो सका, क्योंकि उपयोगकर्ता ने कुछ और खरीदने का फ़ैसला किया. अपने ऑर्डर बिल्डिंग से फिर से सहमति दें, ताकि उपयोगकर्ता तुरंत दूसरा फ़ैसला ले सके.
  • PURCHASE_STATUS_USER_CANCELLED: लेन-देन नहीं हो सका, क्योंकि उपयोगकर्ता ने परचेज़ फ़्लो रद्द कर दिया था. उपयोगकर्ता समय से पहले फ़्लो से बाहर निकल गया, इसलिए उपयोगकर्ता से पूछें कि क्या वे लेन-देन को फिर से कोशिश करना चाहते हैं या लेन-देन से बाहर निकलकर लेन-देन करना चाहते हैं.
  • PURCHASE_STATUS_ERROR: किसी अनजान वजह से लेन-देन नहीं हो सका. उपयोगकर्ता को बताएं कि लेन-देन नहीं हो सका. साथ ही, उनसे पूछें कि उन्हें फिर से कोशिश करनी है या नहीं.
  • PURCHASE_STATUS_UNSPECIFIED: किसी अनजान वजह से लेन-देन नहीं हो सका. इस वजह से, लेन-देन के स्टेटस की जानकारी नहीं है. इस गड़बड़ी की स्थिति को मैनेज करने के लिए, उपयोगकर्ता को लेन-देन की प्रोसेस पूरी न होने की जानकारी दें. साथ ही, उनसे पूछें कि उन्हें फिर से कोशिश करनी है या नहीं.

यहां दिया गया Node.js कोड, COMPLETE_PURCHASE_VALUE आर्ग्युमेंट को पढ़ता है और हर नतीजे को मैनेज करता है:

app.intent('Purchase Result', (conv) => {
  const arg = conv.arguments.get('COMPLETE_PURCHASE_VALUE');
  console.log('User Decision: ' + JSON.stringify(arg));
  if (!arg || !arg.purchaseStatus) {
    conv.close('Purchase failed. Please check logs.');
    return;
  }
  if (arg.purchaseStatus === 'PURCHASE_STATUS_OK') {
    conv.close(`Purchase completed! You're all set!`);
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ALREADY_OWNED') {
    conv.close('Purchase failed. You already own this item.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_UNAVAILABLE') {
    conv.close('Purchase failed. Item is not available.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_CHANGE_REQUESTED') {
    // Reprompt with your item selection dialog
  }  else {
    conv.close('Purchase Failed:' + arg.purchaseStatus);
  }
});

लोगों की खरीदारी देखना

जब कोई उपयोगकर्ता आपकी सेट की गई कार्रवाई के बारे में क्वेरी करता है, तब JSON के user ऑब्जेक्ट में, उस व्यक्ति की खरीदारी की सूची शामिल हो जाती है. उपयोगकर्ता ने किस कॉन्टेंट के लिए पैसे चुकाए हैं, इसके आधार पर इस जानकारी को देखें और अपनी सेट की गई कार्रवाई के जवाब में बदलाव करें.

यह सैंपल कोड, अनुरोध के user ऑब्जेक्ट को दिखाता है. इसमें, com.digitalgoods.application पैकेज के लिए की गई packageEntitlements पिछली इन-ऐप्लिकेशन खरीदारी शामिल होती हैं:

  "user": {
    "userId": "xxxx",
    "locale": "en-US",
    "lastSeen": "2018-02-09T01:49:23Z",
    "packageEntitlements": [
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "non-consumable.1",
            "skuType": "APP"
          }
          {
            "sku": "consumable.2",
            "skuType": "APP"
          }
        ]
      },
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "annual.subscription",
            "skuType": "SUBSCRIPTION",
            "inAppDetails": {
              "inAppPurchaseData": {
                "autoRenewing": true,
                "purchaseState": 0,
                "productId": "annual.subscription",
                "purchaseToken": "12345",
                "developerPayload": "HSUSER_IW82",
                "packageName": "com.digitalgoods.application",
                "orderId": "GPA.233.2.32.3300783",
                "purchaseTime": 1517385876421
              },
              "inAppDataSignature": "V+Q=="
            }
          }
        ]
      }
    ]
  },
  "conversation": {
    "conversationId": "1518141160297",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.MAIN",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "Talk to My Test App"
        }
      ]
    }
  ],
  ...
}