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

इस दस्तावेज़ में, 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"
  }
}