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

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

एन्कोडिंग

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

{
  "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` एपीआई को कॉल करके, इस सूचना का जवाब दें.

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

testNotification TestNotification

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

ध्यान दें कि यह फ़ील्ड, 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 - उपयोगकर्ता ने अपनी सदस्यता को Play > खाता > सदस्यताएं में जाकर वापस पाया है. सदस्यता रद्द कर दी गई थी, लेकिन उपयोगकर्ता के सदस्यता वापस पाने तक, उसकी समयसीमा खत्म नहीं हुई थी. ज़्यादा जानकारी के लिए, सदस्यता वापस पाने की सुविधा देखें.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (अब इस्तेमाल में नहीं है) - उपयोगकर्ता ने सदस्यता की कीमत में बदलाव की पुष्टि कर दी है.
  • (9) SUBSCRIPTION_DEFERRED - सदस्यता के रिन्यू होने का समय बढ़ा दिया गया है.
  • (10) SUBSCRIPTION_PAUSED - सदस्यता को कुछ समय के लिए रोका गया है.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - सदस्यता को कुछ समय के लिए रोकने का शेड्यूल बदल दिया गया है.
  • (12) SUBSCRIPTION_REVOKED - सदस्यता की समयसीमा खत्म होने से पहले, उसे उपयोगकर्ता से वापस ले लिया गया है.
  • (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
  }
}

VoidedPurchaseNotification का इस्तेमाल करना

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

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

PendingRefundReviewNotification

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

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"
  }
}