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

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

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

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

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

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

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

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

ट्रांज़ैक्शन फ़्लो

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

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

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

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

  • ऐप्लिकेशन डेवलपर खाता और एक कारोबारी खाता आपके डिजिटल प्रॉडक्ट को मैनेज करने के लिए, Google Play Console.

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

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

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

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

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

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

Android ऐप्लिकेशन असोसिएट करें

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

  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 हस्ताक्षर) को चुनें.
    8. पूरा करें पर क्लिक करें.
    9. कुछ सेकंड के बाद, Android Studio एक app-release.apk फ़ाइल जनरेट करता है. बाद में इस्तेमाल करने के लिए, इस फ़ाइल को ढूंढें.
  6. इस Google Play Console, नया ऐप्लिकेशन बनाएं.

  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. कार्रवाइयां कंसोल में, अपना प्रोजेक्ट खोलें या कोई नया प्रोजेक्ट बनाएं.
  2. डिप्लॉय करें पर जाएं, फिर डायरेक्ट्री की जानकारी पर जाएं.
  3. ज़्यादा जानकारी और लेन-देन सेक्शन में जाकर, हां वाले बॉक्स पर सही का निशान लगाएं क्या आपकी कार्रवाइयां, लेन-देन करने के लिए Digital Purchase API का इस्तेमाल करती हैं साथ ही, डिजिटल प्रॉडक्ट के मामले में भी ऐसा ही किया जा सकता है.
  4. सेव करें पर क्लिक करें.

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

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

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

  1. कार्रवाइयां कंसोल में, सबसे ऊपर दाएं कोने में तीन बिंदु वाले आइकॉन पर क्लिक करें, इसके बाद, प्रोजेक्ट सेटिंग पर क्लिक करें.
  2. अपने Action का प्रोजेक्ट आईडी ढूंढें.
  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 इन्वेंट्री से कनेक्ट करना

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

नीचे दिया गया 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. बी. उपलब्ध इन्वेंट्री इकट्ठा करें

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

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_PURCHASE ट्रिगर हो जाता है डायलॉग बॉक्स इवेंट (या 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);
  }
});

6. खरीदारी को दोहराने लायक बनाएं

'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 में {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': conversationId,
        'skuType': '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));
    });
  });
});

उपयोगकर्ता की खरीदारी दिखाना

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

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

  "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"
        }
      ]
    }
  ],
  ...
}