# Google Play सब्सक्रिप्शन ट्रैकिंग

<Aside type="caution" icon="setting" title="डेवलपर सहायता की आवश्यकता है">
इस इंटीग्रेशन को सेट अप करने के लिए आपको अपनी डेवलपमेंट टीम की मदद की आवश्यकता होगी। कृपया यह गाइड उनके साथ साझा करें।
</Aside>

## इंटीग्रेशन का अवलोकन

[रियल-टाइम डेवलपर नोटिफिकेशन (RTDN)](https://developer.android.com/google/play/billing/rtdn-reference) Google Play की सर्वर-टू-सर्वर सेवा है जो जब भी किसी सब्सक्रिप्शन की स्थिति बदलती है तो एक रियल-टाइम संदेश भेजती है।

Google Play RTDN को Pushwoosh से कनेक्ट करके, आप खरीद, नवीनीकरण, रद्दीकरण, बिलिंग समस्याओं, समाप्ति और रिफंड सहित पूरे सब्सक्रिप्शन जीवनचक्र पर प्रतिक्रिया दे सकते हैं — बिना अपना खुद का बैकएंड इंफ्रास्ट्रक्चर बनाए। जब भी किसी उपयोगकर्ता के Google Play खाते में सब्सक्रिप्शन की स्थिति बदलती है, तो Google Pushwoosh को सूचित करता है, और Pushwoosh उपयोगकर्ता प्रोफ़ाइल पर मेल खाने वाला [`PW_Subscription*`](#tracked-events) इवेंट फायर करता है।

<Aside type="note">
यह इंटीग्रेशन **एंड्रॉइड सब्सक्रिप्शन** (Google Play RTDN) का समर्थन करता है। iOS सब्सक्रिप्शन को ट्रैक करने के लिए, [ऐप स्टोर सब्सक्रिप्शन ट्रैकिंग](/hi/product/integrations/app-store-subscription-tracking/) देखें।
</Aside>

### इंटीग्रेशन का प्रकार

**स्रोत:** रियल-टाइम डेवलपर नोटिफिकेशन Google Play से Pushwoosh को भेजे जाते हैं।

### ट्रैक किए गए इवेंट्स

Pushwoosh हर समर्थित Google Play नोटिफिकेशन को एक एकीकृत `PW_Subscription*` इवेंट सेट पर मैप करता है, ताकि आप सब्सक्रिप्शन जीवनचक्र के किसी भी चरण पर अभियान शुरू कर सकें।

| इवेंट | कब फायर होता है |
| ----- | ---------- |
| `PW_SubscriptionStart` | एक उपयोगकर्ता पहली बार सब्सक्रिप्शन खरीदता है। |
| `PW_SubscriptionRenew` | सब्सक्रिप्शन एक नई बिलिंग अवधि के लिए स्वतः नवीनीकृत हो जाता है। |
| `PW_SubscriptionCancel` | एक उपयोगकर्ता स्वतः-नवीनीकरण बंद कर देता है। सब्सक्रिप्शन समाप्त होने तक सक्रिय रहता है। |
| `PW_SubscriptionResume` | एक उपयोगकर्ता सब्सक्रिप्शन के समाप्त होने से पहले उसे फिर से शुरू करता है। |
| `PW_SubscriptionBillingIssue` | एक नवीनीकरण भुगतान विफल हो जाता है और सब्सक्रिप्शन अपनी ग्रेस अवधि में प्रवेश करता है। |
| `PW_SubscriptionRecovered` | पहले विफल हुआ नवीनीकरण सफल हो जाता है और सब्सक्रिप्शन फिर से सक्रिय हो जाता है। |
| `PW_SubscriptionExpired` | सब्सक्रिप्शन पूरी तरह से समाप्त हो गया है और अब सक्रिय नहीं है। |
| `PW_SubscriptionRefund` | Google Play सब्सक्रिप्शन को रद्द कर देता है (उदाहरण के लिए, रिफंड के बाद)। |

हर इवेंट में समान एट्रिब्यूट्स होते हैं:

- **productID:** सब्सक्रिप्शन का Google Play प्रोडक्ट आइडेंटिफायर।
- **expiresAt:** जब वर्तमान भुगतान अवधि समाप्त होती है, सेकंड में यूनिक्स टाइमस्टैम्प के रूप में। जब Google इसे प्रदान करता है तो शामिल किया जाता है।

<details>

<summary>इवेंट्स रियल-टाइम डेवलपर नोटिफिकेशन से कैसे मैप होते हैं</summary>

इंटीग्रेशन को सत्यापित करने वाले डेवलपर्स के लिए, प्रत्येक Pushwoosh इवेंट इन RTDN `notificationType` मानों के अनुरूप है:

| Pushwoosh इवेंट | RTDN `notificationType` |
| --------------- | ----------------------- |
| `PW_SubscriptionStart` | `SUBSCRIPTION_PURCHASED` (4) |
| `PW_SubscriptionRenew` | `SUBSCRIPTION_RENEWED` (2) |
| `PW_SubscriptionCancel` | `SUBSCRIPTION_CANCELED` (3) |
| `PW_SubscriptionResume` | `SUBSCRIPTION_RESTARTED` (7) |
| `PW_SubscriptionBillingIssue` | `SUBSCRIPTION_IN_GRACE_PERIOD` (6) |
| `PW_SubscriptionRecovered` | `SUBSCRIPTION_RECOVERED` (1) |
| `PW_SubscriptionExpired` | `SUBSCRIPTION_EXPIRED` (13) |
| `PW_SubscriptionRefund` | `SUBSCRIPTION_REVOKED` (12) |

अन्य नोटिफिकेशन प्रकार, जैसे ऑन-होल्ड, मूल्य परिवर्तन, स्थगन, और पॉज़, को स्वीकार किया जाता है लेकिन वे कोई इवेंट पोस्ट नहीं करते हैं।

</details>

### यह कैसे काम करता है

एक Google Play नोटिफिकेशन में कोई Pushwoosh आइडेंटिफायर नहीं होता है। इसमें केवल एक खरीद टोकन और ऐप का `packageName` शामिल होता है। इसलिए आपका ऐप प्रत्येक खरीद को उस आइडेंटिफायर के साथ टैग करता है जिसकी Pushwoosh को आवश्यकता होती है, और जब भी कोई नोटिफिकेशन आता है तो Pushwoosh उसे खरीद से वापस पढ़ता है।

1. एक उपयोगकर्ता के Google Play खाते में सब्सक्रिप्शन की स्थिति बदलती है (एक खरीद, नवीनीकरण, रद्दीकरण, आदि)।
2. Google Play Pushwoosh के साझा विषय पर एक RTDN संदेश प्रकाशित करता है।
3. Pushwoosh खरीद का `obfuscatedAccountId` पढ़ता है, जिसे आपके ऐप ने खरीद के समय `<AppCode>:<hwid>` पर सेट किया था।
4. Pushwoosh उस डिवाइस को हल करता है जिसका HWID मेल खाता है, उससे बंधे उपयोगकर्ता को ढूंढता है, और उस उपयोगकर्ता के लिए मेल खाने वाला `PW_Subscription*` इवेंट पोस्ट करता है।

<Aside type="caution" title="महत्वपूर्ण">
Google Play खरीद और Pushwoosh उपयोगकर्ता के बीच मिलान `obfuscatedAccountId` पर निर्भर करता है। यदि आपका ऐप खरीद के समय यह मान सेट नहीं करता है, तो Pushwoosh को नोटिफिकेशन तो मिलता है लेकिन **कोई इवेंट पोस्ट नहीं होता है**। यह खरीद के समय सेट किया जाता है और मौजूदा सब्सक्रिप्शन के लिए **बैकफिल नहीं किया जा सकता है**। [अकाउंट आइडेंटिफायर कैसे सेट करें](#set-the-account-identifier-at-purchase) देखें।
</Aside>

### उपयोग के मामले

**मंथन करने वाले सब्सक्राइबर्स को वापस जीतें:** स्वतः-नवीनीकरण को अक्षम करने से पहुंच तुरंत समाप्त नहीं होती है। सब्सक्रिप्शन भुगतान अवधि समाप्त होने तक सक्रिय रहता है, और यह आपके लिए उपयोगकर्ता को वापस जीतने का अवसर है। `PW_SubscriptionCancel` पर, एक रिटेंशन पुश के साथ एक [Customer Journey](/hi/product/customer-journey/pushwoosh-journey-overview/) लॉन्च करें, उन सुविधाओं के बारे में एक [ईमेल](/hi/product/messaging-channels/emails/) भेजें जिन्हें वे खो देंगे, या पहुंच समाप्त होने से पहले नवीनीकरण छूट के साथ एक [इन-ऐप संदेश](/hi/product/messaging-channels/in-apps/) भेजें।

**नए सब्सक्राइबर्स को ऑनबोर्ड करें:** उपयोगकर्ताओं को उनकी योजना से जल्दी मूल्य प्राप्त करने में मदद करने और नवीनीकरण के लिए मंच तैयार करने के लिए `PW_SubscriptionStart` पर एक स्वागत श्रृंखला शुरू करें।

**विफल भुगतानों को बचाएं:** जब `PW_SubscriptionBillingIssue` फायर होता है, तो एक नवीनीकरण भुगतान सफल नहीं हुआ और सब्सक्रिप्शन अपनी ग्रेस अवधि में है। उपयोगकर्ता को अपनी भुगतान विधि अपडेट करने के लिए प्रेरित करें इससे पहले कि वे पहुंच खो दें, और जब यह हल हो जाए तो पुष्टि करने के लिए `PW_SubscriptionRecovered` के साथ फॉलो-अप करें।

**चूक गए उपयोगकर्ताओं को फिर से संलग्न करें:** उन सब्सक्राइबर्स के लिए जो पूरी तरह से मंथन कर चुके हैं, एक वापसी-ग्राहक प्रस्ताव के साथ `PW_SubscriptionExpired` पर एक पुनर्सक्रियन अभियान शुरू करें।

## इंटीग्रेशन सेट अप करना

शुरू करने से पहले, सुनिश्चित करें कि आपके पास [FCM कॉन्फ़िगर किया हुआ](/hi/developer/pushwoosh-sdk/android-sdk/firebase-integration/integrate-pushwoosh-android-sdk/) Pushwoosh ऐप (पुश के लिए पहले से ही आवश्यक), सब्सक्रिप्शन वाला Google Play ऐप और Play Console एडमिन एक्सेस है।

### खरीद पर अकाउंट आइडेंटिफायर सेट करें

Pushwoosh डिवाइस के **HWID** से सही उपयोगकर्ता की पहचान करता है, जिसे आपके **एप्लिकेशन कोड** के साथ जोड़ा जाता है। Pushwoosh Android SDK एक हेल्पर, `getSubscriptionAccountId()`, प्रदान करता है, जो इस मान को पहले से ही `<AppCode>:<hwid>` के रूप में स्वरूपित करके लौटाता है। जब आप Google Play बिलिंग प्रवाह शुरू करते हैं तो इसे `BillingFlowParams.setObfuscatedAccountId()` पर पास करें।

<Tabs>
<TabItem label="Kotlin">
```kotlin
val billingParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(productDetailsParamsList)
    // Tag the purchase with the Pushwoosh account identifier "<AppCode>:<hwid>"
    .setObfuscatedAccountId(Pushwoosh.getInstance().subscriptionAccountId)
    .build()

billingClient.launchBillingFlow(activity, billingParams)
```
</TabItem>
<TabItem label="Java">
```java
BillingFlowParams billingParams = BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(productDetailsParamsList)
        // Tag the purchase with the Pushwoosh account identifier "<AppCode>:<hwid>"
        .setObfuscatedAccountId(Pushwoosh.getInstance().getSubscriptionAccountId())
        .build();

billingClient.launchBillingFlow(activity, billingParams);
```
</TabItem>
</Tabs>

<Aside type="note">
`getSubscriptionAccountId()` को SDK के इनिशियलाइज़ होने के बाद कॉल करें। यदि एप्लिकेशन कोड या HWID अभी तक उपलब्ध नहीं है तो यह एक खाली स्ट्रिंग लौटाता है। Google ऑब्फस्केटेड अकाउंट आईडी को 64 वर्णों तक सीमित करता है। Pushwoosh `<AppCode>:<hwid>` मान उस सीमा के भीतर रहता है।
</Aside>

<Aside type="caution">
यदि आपका ऐप Pushwoosh HWID को एक कस्टम मान के साथ ओवरराइड करता है, तो `getSubscriptionAccountId()` इसे स्वचालित रूप से दर्शाता है। आइडेंटिफायर को हाथ से न बनाएं। हमेशा हेल्पर का उपयोग करें ताकि मान Pushwoosh में डिवाइस के HWID से मेल खाए, अन्यथा इवेंट को एट्रिब्यूट नहीं किया जा सकता है।
</Aside>

### रियल-टाइम डेवलपर नोटिफिकेशन को Pushwoosh पर इंगित करें

1. [Google Play Console](https://play.google.com/console/) में, **Monetize → Monetization setup** पर जाएं।
2. **Real-time developer notifications** ढूंढें और **Topic name** को इस पर सेट करें:

```
projects/pw-playstore-subscriptions/topics/play-rtdn
```

3. **Save** पर क्लिक करें। Google की नोटिफिकेशन सेवा को प्रकाशन की अनुमति पहले से ही दी गई है, इसलिए यहां कॉन्फ़िगर करने के लिए और कुछ नहीं है।

### Pushwoosh के सेवा खाते को अनुदान दें

1. Google Play Console में, **Users and permissions → Invite new user** पर जाएं।
2. Pushwoosh सेवा खाता ईमेल दर्ज करें:

```
play-api@pw-playstore-subscriptions.iam.gserviceaccount.com
```

3. **App permissions** के तहत, अपना ऐप जोड़ें और **वित्तीय डेटा, ऑर्डर और रद्दीकरण सर्वेक्षण प्रतिक्रियाएं देखें** (साथ ही केवल-पढ़ने के लिए ऐप जानकारी की अनुमति) प्रदान करें।
4. **Save** पर क्लिक करें। एक सेवा खाते को आमंत्रण स्वीकार करने की आवश्यकता नहीं है। एक्सेस तुरंत सक्रिय हो जाता है।

### Pushwoosh में इवेंट्स की पुष्टि करें

Pushwoosh आपके प्रोजेक्ट में प्रत्येक `PW_Subscription*` इवेंट को पहली बार होने पर `productID` और `expiresAt` एट्रिब्यूट्स के साथ पंजीकृत करता है। एक परीक्षण के बाद, इवेंट्स के प्रकट होने की पुष्टि करने के लिए **Audience → Events** खोलें। वे फिर सेगमेंटेशन, सांख्यिकी और Customer Journeys के लिए तैयार हैं।

### अपना अभियान बनाएं

किसी भी `PW_Subscription*` इवेंट पर, उदाहरण के लिए विन-बैक के लिए `PW_SubscriptionCancel` या ऑनबोर्डिंग के लिए `PW_SubscriptionStart` पर, एक [ट्रिगर-आधारित एंट्री](/hi/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) के साथ एक [Customer Journey](/hi/product/customer-journey/pushwoosh-journey-overview/) बनाएं, और जो संदेश आप भेजना चाहते हैं उन्हें जोड़ें।

## परीक्षण

इंटीग्रेशन को एंड-टू-एंड सत्यापित करने के लिए:

1. Google Play Console में, **Monetization setup** खोलें और **Send test notification** पर क्लिक करें। इसे सफलता की रिपोर्ट करनी चाहिए, यह पुष्टि करते हुए कि विषय सही ढंग से जुड़ा हुआ है।
2. ऊपर वर्णित अनुसार अकाउंट आइडेंटिफायर सेट के साथ एक सब्सक्रिप्शन खरीद करें (यह `PW_SubscriptionStart` फायर करता है), फिर इसे **Play Store → Subscriptions → Cancel** से रद्द करें (यह `PW_SubscriptionCancel` फायर करता है)।
3. Pushwoosh कंट्रोल पैनल में, उपयोगकर्ता प्रोफ़ाइल खोलें और [Events history](/hi/product/audience-data-and-segmentation/user-explorer/#events-history-tab) पर जाएं।
4. पुष्टि करें कि इवेंट्स कुछ ही क्षणों में दिखाई देते हैं।