इस्तेमाल करने लायक डिजिटल लेन-देन बनाएं

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

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

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

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

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

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

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

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

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

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

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

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

  • 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. ए. डिजिटल खरीदारी की ज़रूरी शर्तों की पुष्टि करना

खरीदारी का विकल्प देने से पहले, यह पक्का कर लें कि उपयोगकर्ता का खाता लेन-देन करने के लिए सेट अप किया गया है. आपको DigitalPurchaseCheck सीन पर जाना होगा. इससे यह पता चलता है कि उपयोगकर्ता की पुष्टि हुई है या नहीं, वे ऐसे प्लैटफ़ॉर्म (स्मार्ट डिसप्ले, स्मार्ट स्पीकर या Android) पर लेन-देन कर रहे हैं या नहीं जहां डिजिटल लेन-देन काम करते हैं.

डिजिटल खरीदारी की जांच वाला सीन बनाने के लिए, यह तरीका अपनाएं:

  1. सीन टैब से, DigitalPurchaseCheck नाम वाला एक नया सीन जोड़ें.
  2. स्लॉट भरना में जाकर, नया स्लॉट जोड़ने के लिए + पर क्लिक करें.
  3. टाइप चुनें में जाकर, स्लॉट टाइप के तौर पर actions.type.DigitalPurchaseCheckResult को चुनें.
  4. स्लॉट के नाम वाले फ़ील्ड में, स्लॉट को DigitalPurchaseCheck नाम दें.
  5. पसंद के मुताबिक स्लॉट वैल्यू में बदलाव करें चेकबॉक्स को चालू करें. यह डिफ़ॉल्ट रूप से चालू होता है.
  6. सेव करें पर क्लिक करें.

डिजिटल खरीदारी की जांच करने पर, इनमें से कोई एक नतीजा मिलेगा:

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

डिजिटल खरीदारी से जुड़ी जांच के नतीजे मैनेज करने के लिए, यह तरीका अपनाएं:

  1. सीन टैब में जाकर, DigitalPurchaseCheck का नया सीन चुनें.
  2. स्थिति में, नई शर्त जोड़ने के लिए + पर क्लिक करें.
  3. सफलता की स्थिति की जांच करने के लिए, टेक्स्ट फ़ील्ड में यह कंडिशन सिंटैक्स डालें:

    scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
    
  4. अभी-अभी जोड़ी गई शर्त पर अपना कर्सर घुमाएं और उसे if scene.slots.status == "FINAL" से पहले रखने के लिए, अप ऐरो पर क्लिक करें.

  5. अनुरोध भेजें को चालू करें और एक आसान सूचना देकर, लोगों को यह बताएं कि वे लेन-देन करने के लिए तैयार हैं:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                You are ready to purchase digital goods.
    
  6. ट्रांज़िशन में, कोई दूसरा सीन चुनें. ऐसा करने पर, व्यक्ति बातचीत जारी रख सकेगा और लेन-देन कर सकेगा.

  7. शर्त else if scene.slots.status == "FINAL" चुनें.

  8. अनुरोध भेजें को चालू करें और एक आसान सूचना देकर, लोगों को बताएं कि वे लेन-देन नहीं कर सकते:

    candidates:
      - first_simple:
          variants:
            - speech: Sorry you cannot perform a digital purchase.
    
  9. ट्रांज़िशन में जाकर, बातचीत खत्म करने के लिए, बातचीत खत्म करें को चुनें.

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

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

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

body = {
  skus: [
    skuId: {
      skuType: one of "SKU_TYPE_IN_APP" or "SKU_TYPE_SUBSCRIPTION"
      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': conv.session.id,
        'skuType': 'SKU_TYPE_IN_APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['consumable.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 ऑब्जेक्ट के इन्वेंट्री ऐरे को पढ़ता है. साथ ही, हर एक के लिए, एक सूची आइटम के साथ एक सूची रिस्पॉन्स बनाता है:

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

conv.session.typeOverrides = [{
   name: 'type_name',
   mode: 'TYPE_REPLACE',
   synonym: {
       entries: entries
   }
}];

conv.add(new List({
   title: 'List title',
   subtitle: 'List subtitle',
   items: items,
}));

उपयोगकर्ता के चुने गए विकल्प से खरीदारी का डेटा सेट करें

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

conv.session.params.purchase = {
  "@type": "type.googleapis.com/google.actions.transactions.v3.CompletePurchaseValueSpec",
  "skuId": {
    "skuType": "<SKU_TYPE_IN_APP>",
    "id": "<SKU_ID>",
    "packageName": "<PACKAGE_NAME>"
  },
  "developerPayload": ""
};

Actions Builder में, इसके बजाय JSON एडिटर का इस्तेमाल करके, स्लॉट को ऊपर दिए गए ऑर्डर ऑब्जेक्ट के साथ कॉन्फ़िगर किया जा सकता है. दोनों इंप्लीमेंटेशन, CompletePurchaseValueSpec के लिए एक ही फ़ॉर्मैट का इस्तेमाल करते हैं. आपको यह फ़ॉर्मैट JSON वेबहुक पेलोड रेफ़रंस में मिलेगा.

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

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

खरीदारी का पूरा सीन बनाएं

  1. सीन टैब से, CompletePurchase नाम के साथ नया सीन जोड़ें.
  2. स्लॉट भरना में जाकर, नया स्लॉट जोड़ने के लिए + पर क्लिक करें.
  3. टाइप चुनें में, स्लॉट टाइप के तौर पर actions.type.CompletePurchaseValue चुनें.
  4. स्लॉट के नाम वाले फ़ील्ड में, स्लॉट को CompletePurchase नाम दें.
  5. पसंद के मुताबिक स्लॉट वैल्यू में बदलाव करें चेकबॉक्स को चालू करें. यह डिफ़ॉल्ट रूप से चालू होता है.
  6. स्लॉट कॉन्फ़िगर करें में जाकर, ड्रॉपडाउन मेन्यू से Use session parameter चुनें.
  7. स्लॉट कॉन्फ़िगर करें में जाकर, ऑर्डर को स्टोर करने के लिए इस्तेमाल किए जाने वाले सेशन पैरामीटर का नाम टेक्स्ट फ़ील्ड (जैसे, $session.params.purchase) में डालें.
  8. सेव करें पर क्लिक करें.

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

actions.type.CompletePurchaseValue टाइप वाले स्लॉट के ये नतीजे हो सकते हैं:

  • 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: किसी अनजान वजह से लेन-देन नहीं हो सका. इस वजह से, लेन-देन की स्थिति का पता नहीं चल पाया. इस गड़बड़ी की स्थिति को ठीक करने के लिए, उपयोगकर्ता को लेन-देन की प्रोसेस न होने की जानकारी दें. साथ ही, उनसे पूछें कि उन्हें फिर से कोशिश करनी है या नहीं.

आपको CompletePurchase सीन से, इनमें से हर नतीजे को मैनेज करना चाहिए.

  1. सीन टैब में जाकर, CompletePurchase का नया सीन चुनें.
  2. स्थिति में, नई शर्त जोड़ने के लिए + पर क्लिक करें.
  3. सफलता की स्थिति की जांच करने के लिए, टेक्स्ट फ़ील्ड में यह कंडिशन सिंटैक्स डालें:

    scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
    
  4. अभी-अभी जोड़ी गई शर्त पर अपना कर्सर घुमाएं और उसे if scene.slots.status == "FINAL" से पहले रखने के लिए, अप ऐरो पर क्लिक करें.

  5. अनुरोध भेजें को चालू करें और एक आसान सूचना देकर, लोगों को यह बताएं कि वे लेन-देन करने के लिए तैयार हैं:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Your purchase was successful.
    
  6. ट्रांज़िशन में जाकर, बातचीत खत्म करने के लिए, बातचीत खत्म करें को चुनें.

आपको खरीदारी के जिस तरह के नतीजे देखने हैं उनके लिए ऊपर दिया गया तरीका दोहराएं.

6. खरीदारी को बार-बार देखने लायक बनाना

लेन-देन के पूरा होने के बाद, आइटम का इस्तेमाल करने के लिए डिजिटल खरीदारी एपीआई को पोस्ट अनुरोध भेजें, ताकि उपयोगकर्ता उसे फिर से खरीद सके. session.id में मिले सेशन आईडी के साथ, https://actions.googleapis.com/v3/conversations/{sessionId}/entitlement:consume एंडपॉइंट पर अपना अनुरोध भेजें.

आपके पोस्ट अनुरोध में, उपयोगकर्ता की खरीदारी से जुड़ा खरीदारी टोकन ऑब्जेक्ट भी शामिल होना चाहिए. यह ऑब्जेक्ट, packageEntitlements.entitlements.inAppDetails.inAppPurchaseData.purchaseToken में उपयोगकर्ता के अनुरोध JSON में मिलता है.

यह कोड, डिजिटल खरीदारी एपीआई को consume अनुरोध भेजता है. साथ ही, यह बताता है कि वह अनुरोध पूरा हुआ या नहीं:

request.post(`https://actions.googleapis.com/v3/conversations/${conv.session.id}/entitlement:consume`, {
  'auth': {
    'bearer': tokens.access_token,
  },
  'json': true,
  'body': {
  // This purchase token is in both the purchase event and the user's entitlements
  // in their request JSON
    "purchaseToken": entitlement.purchaseToken
  },
  }, (err, httpResponse, body) => {
    if (err) {
     throw new Error(`API request error: ${err}`);
    }
  console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
  console.log(JSON.stringify(httpResponse));
  console.log(JSON.stringify(body));
  resolve(body);
});

// Make sure the consume request was successful. In production, don't notify the user; handle failures on the back end
return consumePromise.then(body => {
  const consumed = Object.keys(body).length === 0;
  if (consumed) {
    conv.add(`You successfully consumed ${id}`);
  } else {
    conv.add(`Failed to consume: ${id}`);
  }
});

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

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

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

{
  "handler": {
    "name": "handler_name"
  },
  "intent": {
    "name": "actions.intent.MAIN",
    "params": {},
    "query": ""
  },
  "scene": {
    "name": "SceneName",
    "slotFillingStatus": "UNSPECIFIED",
    "slots": {}
  },
  "session": {
    "id": "example_session_id",
    "params": {},
    "typeOverrides": []
  },
  "user": {
    "locale": "en-US",
    "params": {
      "verificationStatus": "VERIFIED"
      "packageEntitlements": [
        {
          "packageName": "com.digitalgoods.application",
          "entitlements": [
            {
              "sku": "non-consumable.1",
              "skuType": "SKU_TYPE_IN_APP"
            }
            {
              "sku": "consumable.2",
              "skuType": "SKU_TYPE_IN_APP"
            }
          ]
        },
        {
          "packageName": "com.digitalgoods.application",
          "entitlements": [
            {
              "sku": "annual.subscription",
              "skuType": "SKU_TYPE_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=="
              }
            }
          ]
        }
      ]
     }
   },
  "homeStructure": {
    "params": {}
  },
  "device": {
    "capabilities": [
      "SPEECH",
      "RICH_RESPONSE",
      "LONG_FORM_AUDIO"
    ]
  }
}

अपने प्रोजेक्ट की जांच करना

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

  1. Actions कंसोल में, नेविगेशन में मौजूद जांच करें पर क्लिक करें.
  2. सेटिंग पर क्लिक करें.
  3. डेवलपमेंट सैंडबॉक्स विकल्प को चालू करें.