'लेन-देन एपीआई' को 13 जून, 2023 को बंद होने से पहले, 3 मई, 2023 को बंद कर दिया जाएगा. ज़्यादा जानकारी के लिए, बातचीत की कार्रवाइयों का बंद होना देखें.

ऐसे डिजिटल लेन-देन तैयार करना जिनका इस्तेमाल न किया जा सकता हो

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

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

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

लेन-देन

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

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

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

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

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

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

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

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

  • Google Play Console में अपने डिजिटल प्रॉडक्ट को मैनेज करने के लिए, Google Play पर मौजूद डेवलपर खाता और व्यापारी खाता.

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

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

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

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

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

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

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

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

  1. Android Studio या अपनी पसंद के Android आईडीई का इस्तेमाल करके, एक नया प्रोजेक्ट बनाएं. एक बहुत ही बुनियादी ऐप्लिकेशन बनाने के लिए, प्रोजेक्ट सेटअप करने के निर्देशों में से कोई विकल्प चुनें.
  2. प्रोजेक्ट को कोई पैकेज नाम दें, जैसे com.mycompany.myapp. com.example को Play Console में शामिल करने वाले पैकेज अपलोड नहीं किए जा सकते. इसलिए, इस नाम को डिफ़ॉल्ट के तौर पर न छोड़ें.
  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 हस्ताक्षर) चुनें.
    8. पूरा करें पर क्लिक करें.
    9. कुछ सेकंड बाद, Android Studio app-release.apk फ़ाइल जनरेट करेगा. बाद में इस्तेमाल करने के लिए, इस फ़ाइल का पता लगाएं.
  6. Google Play Console में, एक नया ऐप्लिकेशन बनाएं.

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

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

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

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

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

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

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

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

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

Google Play Console में ऐसे प्रॉडक्ट के उदाहरण जो खाने लायक नहीं हैं.

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

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

सेटअप

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

  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. सेवा खाते को डिजिटल लेन-देन जैसा नाम दें.
  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 से जुड़ी खरीदारी की जानकारी ऐक्सेस करना चालू करें.

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

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

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

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

खरीदारी करने का विकल्प देने से पहले, यह पक्का कर लें कि उपयोगकर्ता का खाता लेन-देन करने के लिए सेट अप किया गया है. आपको 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. बी. उपलब्ध इन्वेंट्री इकट्ठा करें

अपनी मौजूदा 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 ऑब्जेक्ट के कलेक्शन में फ़ॉर्मैट करें.

नतीजे के तौर पर मिलने वाली श्रेणी में कुछ खास डिजिटल प्रॉडक्ट ही वापस पाने के लिए, डिजिटल प्रॉडक्ट के प्रॉडक्ट आईडी (जैसा कि Google Play में हर इन-ऐप्लिकेशन प्रॉडक्ट में दिखाया गया है) को सूची में जोड़ें. इस कोड को body.ids में खरीदने के लिए उपलब्ध कराना होगा.

यहां दिए गए 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': ['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 ऑब्जेक्ट की इन्वेंट्री ऐरे पढ़ता है और हर सूची के लिए एक लिस्ट आइटम वाला सूची के तौर पर जवाब देता है:

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. Select type में जाकर, 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. बातचीत खत्म करने के लिए, ट्रांज़िशन में जाकर बातचीत खत्म करें चुनें.

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

उपयोगकर्ता की खरीदारी के बारे में बताता है

जब कोई उपयोगकर्ता आपकी कार्रवाई के लिए क्वेरी करता है, तब 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. डेवलपमेंट सैंडबॉक्स विकल्प को चालू करें.