डेवलपर से जुड़ी रीयल-टाइम सूचनाओं के बारे में जानकारी देने वाली गाइड

इस दस्तावेज़ में, Google Play से मिलने वाली डेवलपर से जुड़ी रीयल-टाइम सूचनाओं के बारे में बताया गया है.

एन्कोडिंग

Cloud Pub/Sub के किसी विषय पर पब्लिश किए गए हर मैसेज में, base64-encoded डेटा फ़ील्ड होता है.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

base64 एन्कोड किए गए डेटा फ़ील्ड को डिकोड करने के बाद, DeveloperNotification में ये फ़ील्ड शामिल होते हैं:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

यहां दी गई टेबल में, इन फ़ील्ड के बारे में बताया गया है.

प्रॉपर्टी का नाम वैल्यू ब्यौरा
वर्शन स्ट्रिंग इस सूचना का वर्शन. शुरुआत में, यह "1.0" होता है. यह वर्शन, वर्शन के अन्य फ़ील्ड से अलग होता है.
packageName स्ट्रिंग उस ऐप्लिकेशन के पैकेज का नाम जिससे यह सूचना जुड़ी है. उदाहरण के लिए, `com.some.thing`.
eventTimeMillis लंबा इवेंट होने का टाइमस्टैंप. यह टाइमस्टैंप, Epoch के बाद से मिलीसेकंड में होता है.
subscriptionNotification SubscriptionNotification

अगर यह फ़ील्ड मौजूद है, तो इसका मतलब है कि यह सूचना किसी सदस्यता से जुड़ी है. साथ ही, इस फ़ील्ड में सदस्यता से जुड़ी ज़्यादा जानकारी होती है.

ध्यान दें कि यह फ़ील्ड, pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification, और testNotification के साथ इस्तेमाल नहीं किया जा सकता.

oneTimeProductNotification OneTimeProductNotification

अगर यह फ़ील्ड मौजूद है, तो इसका मतलब है कि यह सूचना एक बार की जाने वाली खरीदारी से जुड़ी है. साथ ही, इस फ़ील्ड में खरीदारी से जुड़ी ज़्यादा जानकारी होती है.

ध्यान दें कि यह फ़ील्ड, pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification, और testNotification के साथ इस्तेमाल नहीं किया जा सकता.

voidedPurchaseNotification VoidedPurchaseNotification

अगर यह फ़ील्ड मौजूद है, तो इसका मतलब है कि यह सूचना रद्द की गई खरीदारी से जुड़ी है. इस फ़ील्ड में, रद्द की गई खरीदारी से जुड़ी अतिरिक्त जानकारी होती है.

ध्यान दें कि यह फ़ील्ड, pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, और testNotification के साथ इस्तेमाल नहीं किया जा सकता.

pendingRefundReviewNotification PendingRefundReviewNotification

अगर यह फ़ील्ड मौजूद है, तो इसका मतलब है कि यह सूचना, चार्जबैक के उस अनुरोध से जुड़ी है जिसके लिए आपको समाधान सुझाने का विकल्प मिलता है. `ReviewRefund` API को कॉल करके, इस सूचना का जवाब दें.

ध्यान दें कि यह फ़ील्ड, subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, और testNotification के साथ इस्तेमाल नहीं किया जा सकता.

testNotification TestNotification

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

ध्यान दें कि यह फ़ील्ड, pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, और voidedPurchaseNotification के साथ इस्तेमाल नहीं किया जा सकता.

SubscriptionNotification

SubscriptionNotification में ये फ़ील्ड शामिल होते हैं:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
प्रॉपर्टी का नाम वैल्यू ब्यौरा
वर्शन स्ट्रिंग इस सूचना का वर्शन. शुरुआत में, यह "1.0" होता है. यह वर्शन, वर्शन के अन्य फ़ील्ड से अलग होता है.
notificationType आईएनटी किसी सदस्यता के लिए notificationType की ये वैल्यू हो सकती हैं:
  • (1) SUBSCRIPTION_RECOVERED - किसी सदस्यता को खाते पर रोक लगने के बाद वापस चालू किया गया है या उसे रोके जाने के बाद फिर से शुरू किया गया है.
  • (2) SUBSCRIPTION_RENEWED - चालू सदस्यता रिन्यू की गई.
  • (3) SUBSCRIPTION_CANCELED - सदस्यता को जान-बूझकर या अनजाने में रद्द कर दिया गया है. अपनी इच्छा से सदस्यता रद्द करने पर, यह ईमेल तब भेजा जाता है, जब उपयोगकर्ता सदस्यता रद्द करता है.
  • (4) SUBSCRIPTION_PURCHASED - नई सदस्यता खरीदी गई.
  • (5) SUBSCRIPTION_ON_HOLD - सदस्यता को खाते में रोक दिया गया है (अगर यह सुविधा चालू है).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD - सदस्यता ग्रेस पीरियड में है (अगर चालू है).
  • (7) SUBSCRIPTION_RESTARTED - User has restored their subscription from Play > Account > Subscriptions. सदस्यता रद्द कर दी गई थी, लेकिन उपयोगकर्ता के सदस्यता वापस लाने के समय तक उसकी समयसीमा खत्म नहीं हुई थी. ज़्यादा जानकारी के लिए, एक्सपायर होने से पहले वापस लाना लेख पढ़ें.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (DEPRECATED) - A subscription price change has successfully been confirmed by the user.
  • (9) SUBSCRIPTION_DEFERRED - सदस्यता के नवीनीकरण का समय बढ़ा दिया गया है.
  • (10) SUBSCRIPTION_PAUSED - सदस्यता को कुछ समय के लिए रोक दिया गया है.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - सदस्यता को कुछ समय के लिए रोकने के शेड्यूल में बदलाव किया गया है.
  • (12) SUBSCRIPTION_REVOKED - A subscription has been revoked from the user before the expiration time.
  • (13) SUBSCRIPTION_EXPIRED - सदस्यता खत्म हो गई है.
  • (17) SUBSCRIPTION_ITEMS_CHANGED - सदस्यता बंडल में मौजूद किसी आइटम में बदलाव किया गया है.
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED - किस्त वाली सदस्यता को रद्द करने का अनुरोध किया गया है. यह अनुरोध, तय की गई अवधि के खत्म होने पर लागू होगा.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - सदस्यता वाले किसी आइटम की कीमत में बदलाव की जानकारी अपडेट की गई है.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - किसी सदस्यता के लिए, ऐसा लेन-देन जिसे मंज़ूरी नहीं मिली है, रद्द कर दिया गया है.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - किसी सदस्यता के लिए, कीमत में बढ़ोतरी के लिए सहमति देने की अवधि शुरू हो गई है या उपयोगकर्ता ने कीमत में बढ़ोतरी के लिए सहमति दे दी है. यह आरटीडीएन सिर्फ़ उन देशों/इलाकों में सदस्यता के लिए भेजा जाता है जहां कीमत बढ़ाने की ज़रूरत होती है.
purchaseToken स्ट्रिंग यह टोकन, उपयोगकर्ता के डिवाइस को तब दिया जाता है, जब सदस्यता खरीदी जाती है.

उदाहरण

यहां नई सदस्यता खरीदने की सूचना का एक उदाहरण दिया गया है:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification

OneTimeProductNotification में ये फ़ील्ड शामिल होते हैं:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
प्रॉपर्टी का नाम वैल्यू ब्यौरा
वर्शन स्ट्रिंग इस सूचना का वर्शन. शुरुआत में, यह "1.0" होगा. यह वर्शन, वर्शन के अन्य फ़ील्ड से अलग होता है.
notificationType आईएनटी सूचना का टाइप. इसकी ये वैल्यू हो सकती हैं:
  • (1) ONE_TIME_PRODUCT_PURCHASED - किसी उपयोगकर्ता ने वन-टाइम प्रॉडक्ट खरीदा.
  • (2) ONE_TIME_PRODUCT_CANCELED - उपयोगकर्ता ने वन-टाइम प्रॉडक्ट की पेंडिंग खरीदारी रद्द कर दी है.
purchaseToken स्ट्रिंग खरीदारी के समय, उपयोगकर्ता के डिवाइस को दिया गया टोकन.
sku स्ट्रिंग खरीदे गए वन-टाइम प्रॉडक्ट का आईडी (उदाहरण के लिए, "sword_001")

उदाहरण

यहां एक बार की जाने वाली नई खरीदारी की सूचना का उदाहरण दिया गया है:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

VoidedPurchaseNotification में ये फ़ील्ड शामिल होते हैं:

प्रॉपर्टी का नाम वैल्यू ब्यौरा

purchaseToken

string

रद्द की गई खरीदारी से जुड़ा टोकन. यह जानकारी, डेवलपर को तब दी जाती है, जब कोई नई खरीदारी होती है.

orderId

string

उस लेन-देन से जुड़ा यूनीक ऑर्डर आईडी जिसे रद्द कर दिया गया है. एक बार की जाने वाली खरीदारी के लिए, यह खरीदारी के लिए जनरेट किया गया ऑर्डर आईडी होता है. अपने-आप रिन्यू होने वाली सदस्यताओं के लिए, हर रिन्यूअल ट्रांज़ैक्शन के लिए नया ऑर्डर आईडी जनरेट होता है.

productType

int

रद्द की गई खरीदारी के लिए productType में ये वैल्यू हो सकती हैं:

  • (1) PRODUCT_TYPE_SUBSCRIPTION - सदस्यता की खरीदारी रद्द कर दी गई है.
  • (2) PRODUCT_TYPE_ONE_TIME - एक बार की गई खरीदारी रद्द कर दी गई है.

refundType

int

रद्द की गई खरीदारी के लिए refundType में ये वैल्यू हो सकती हैं:

  • (1) REFUND_TYPE_FULL_REFUND - खरीदारी पूरी तरह से रद्द कर दी गई है.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - इस खरीदारी को आंशिक रूप से रद्द कर दिया गया है. ऐसा, संख्या के हिसाब से कुछ हिस्से का रिफ़ंड देने की वजह से हुआ है. यह सिर्फ़ एक से ज़्यादा प्रॉडक्ट खरीदने पर लागू होता है. किसी खरीदारी को कई बार आंशिक तौर पर रद्द किया जा सकता है.

ध्यान दें कि एक से ज़्यादा आइटम खरीदने पर, जब बाकी सभी आइटम का रिफ़ंड दिया जाता है, तब refundType REFUND_TYPE_FULL_REFUND हो जाएगा.

उदाहरण

रद्द की गई नई खरीदारी की सूचना का एक उदाहरण यहां दिया गया है:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Consuming VoidedPurchaseNotification

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

  • packageName: इससे ऐप्लिकेशन की पहचान होती है.
  • eventTimeMillis: इससे आपको यह पता चलता है कि स्टेटस में बदलाव कब हुआ.
  • purchaseToken: यह टोकन, उपयोगकर्ता के डिवाइस को तब दिया जाता है, जब प्रॉडक्ट खरीदा जाता है.
  • orderId: इससे रद्द किए गए ट्रांजै़क्शन से जुड़े ऑर्डर की पहचान होती है.
  • productType: इससे पता चलता है कि रद्द की गई खरीदारी, इन-ऐप्लिकेशन खरीदारी थी या सदस्यता.
  • refundType: इससे उस रिफ़ंड के टाइप के बारे में पता चलता है जिसकी वजह से खरीदारी रद्द हुई.

PendingRefundReviewNotification

जब कोई उपयोगकर्ता किसी खरीदारी के लिए चार्जबैक का अनुरोध करता है और उस अनुरोध की समीक्षा डेवलपर को करनी होती है, तब PendingRefundReviewNotification भेजा जाता है. यह सूचना मिलने पर, आपको अनुरोध का आकलन करना चाहिए. साथ ही, ReviewRefund एपीआई को कॉल करके, 24 घंटे के अंदर रिफ़ंड का सुझाव देना चाहिए और खरीदारी के इस्तेमाल का सबूत देना चाहिए.

PendingRefundReviewNotification में ये फ़ील्ड शामिल होते हैं:

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
प्रॉपर्टी का नाम वैल्यू ब्यौरा
वर्शन स्ट्रिंग इस सूचना का वर्शन. शुरुआत में, यह "1.0" होता है. यह वर्शन, वर्शन के अन्य फ़ील्ड से अलग होता है.
pendingRefundToken स्ट्रिंग यह एक यूनीक टोकन है. इससे समीक्षा के लिए सबमिट किए गए रिफ़ंड के अनुरोध की पहचान की जाती है. ReviewRefund API को कॉल करते समय, इस टोकन को पास करें.
orderId स्ट्रिंग उस खरीदारी का ऑर्डर आईडी जिसके रिफ़ंड की समीक्षा होनी है.
refundReason आईएनटी रिफ़ंड के अनुरोध की वजह. समीक्षा के लिए लंबित मामलों में, रिफ़ंड की वजह के तौर पर सिर्फ़ CHARGEBACK (7) को चुना जा सकता है. आपका कोड, नई वजहें उपलब्ध होने पर उन्हें मैनेज कर सके.
obfuscatedAccountId स्ट्रिंग (अगर लागू हो) डेवलपर का तय किया गया, धुंधला किया गया यूज़र आईडी. यह आईडी, खरीदारी के समय दिया गया था.
obfuscatedProfileId स्ट्रिंग (अगर लागू हो) डेवलपर का तय किया गया वह प्रोफ़ाइल आईडी जिसे धुंधला कर दिया गया है. यह आईडी, खरीदारी के समय दिया गया था.

उदाहरण

यहां रिफ़ंड की समीक्षा के लिए लंबित सूचना का उदाहरण दिया गया है:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

TestNotification में ये फ़ील्ड शामिल होते हैं:

{
  "version": string
}
प्रॉपर्टी का नाम वैल्यू ब्यौरा
वर्शन स्ट्रिंग इस सूचना का वर्शन. शुरुआत में, यह "1.0" होता है. यह वर्शन, वर्शन के अन्य फ़ील्ड से अलग होता है.

उदाहरण

यहां जांच से जुड़ी सूचना का एक उदाहरण दिया गया है:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}