अमान्य खरीदारी की एपीआई

Google Play Voided Purchases API, उन ऑर्डर की सूची दिखाता है जो किसी उपयोगकर्ता की रद्द की गई खरीदारी से जुड़े होते हैं. इस सूची में दी गई जानकारी का इस्तेमाल करके, लाइसेंस रद्द करने की ऐसी प्रणाली लागू की जा सकती है जो उपयोगकर्ता को उन ऑर्डर से प्रॉडक्ट ऐक्सेस करने से रोकती है.

यह एपीआई, ऐप्लिकेशन में एक बार किए जाने वाले ऑर्डर और ऐप्लिकेशन की सदस्यताओं पर लागू होता है.

खरीदारी को इन तरीकों से रद्द किया जा सकता है:

  • उपयोगकर्ता अपने ऑर्डर के लिए रिफ़ंड का अनुरोध करता है.
  • उपयोगकर्ता अपना ऑर्डर रद्द कर देता है.
  • किसी ऑर्डर के लिए चार्जबैक किया गया हो.
  • डेवलपर, ऑर्डर रद्द कर देता है या उसका रिफ़ंड दे देता है.

  • Google, ऑर्डर रद्द कर देता है या रिफ़ंड दे देता है.

इस एपीआई का इस्तेमाल करके, अपने ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए बेहतर और निष्पक्ष अनुभव बनाया जा सकता है. खास तौर पर, अगर आपका ऐप्लिकेशन एक गेम है.

ऐक्सेस पाना

Voided Purchases API का इस्तेमाल करने के लिए, आपके पास वित्तीय जानकारी देखने की अनुमति होनी चाहिए. OAuth क्लाइंट या सेवा खाते का इस्तेमाल करके अनुमति दी जाती है. अगर किसी सेवा खाते का इस्तेमाल किया जा रहा है, तो इस खाते में "वित्तीय रिपोर्ट देखें" अनुमति चालू करें.

Google Play Developer API का ऐक्सेस पाने के बारे में ज़्यादा जानने के लिए, यहां दी गई गाइड देखें:

रद्द की गई खरीदारी देखना

रद्द की गई खरीदारी की सूची का अनुरोध करने के लिए, GET तरीके का इस्तेमाल करें. अपने अनुरोध में, अपने ऐप्लिकेशन का पूरा पैकेज नाम शामिल करें. जैसे, com.google.android.apps.maps. साथ ही, वह अनुमति वाला टोकन शामिल करें जो आपको एपीआई का ऐक्सेस पाने के दौरान मिला था.

GET https://www.googleapis.com/androidpublisher/v3/applications/
your_package_name/purchases/voidedpurchases?access_token=your_auth_token

अपने अनुरोध में ये पैरामीटर भी शामिल किए जा सकते हैं. हालांकि, इनमें से किसी को भी शामिल करना ज़रूरी नहीं है:

startTime

यह यूनिक्स इपॉक के बाद से मिलीसेकंड में वह समय है जब रद्द की गई सबसे पुरानी खरीदारी की गई थी. आपको इस खरीदारी की जानकारी जवाब में देखनी है. डिफ़ॉल्ट रूप से, startTime को 30 दिन पहले पर सेट किया जाता है.

एपीआई सिर्फ़ उन रद्द की गई खरीदारी को दिखा सकता है जो पिछले 30 दिनों में हुई हैं. जवाब में, रद्द की गई पुरानी खरीदारी शामिल नहीं की जाती. भले ही, आपने startTime के लिए कोई भी वैल्यू दी हो.

endTime

Unix epoch के बाद से मिलीसेकंड में वह समय जब रद्द की गई सबसे नई खरीदारी की गई थी. यह वह खरीदारी है जिसे आपको जवाब में देखना है. डिफ़ॉल्ट रूप से, endTime को मौजूदा समय पर सेट किया जाता है.

maxResults
हर जवाब में, रद्द की गई खरीदारी की ज़्यादा से ज़्यादा संख्या. डिफ़ॉल्ट रूप से, यह वैल्यू 1000 होती है. ध्यान दें कि इस पैरामीटर की ज़्यादा से ज़्यादा वैल्यू भी 1,000 है.
टोकन
यह पिछले जवाब का कंटीन्यूएशन टोकन है. इससे आपको ज़्यादा नतीजे देखने में मदद मिलती है.
टाइप

रद्द की गई खरीदारी का टाइप, जो हर जवाब में दिखता है. अगर इसे 0 पर सेट किया जाता है, तो सिर्फ़ रद्द की गई इन-ऐप्लिकेशन खरीदारी का डेटा दिखेगा. इस वैल्यू को 1 पर सेट करने पर, रद्द की गई इन-ऐप्लिकेशन खरीदारी और रद्द की गई सदस्यता की खरीदारी, दोनों के लिए रिफ़ंड दिया जाएगा. डिफ़ॉल्ट वैल्यू 0 है.

includeQuantityBasedPartialRefund

क्या मात्रा के आधार पर कुछ हिस्से के रिफ़ंड के लिए, रद्द की गई खरीदारी को शामिल करना है. यह सिर्फ़ एक से ज़्यादा आइटम खरीदने पर लागू होता है. अगर true, तो रद्द की गई अन्य खरीदारी को voidedQuantity के साथ वापस किया जा सकता है. इससे, संख्या के आधार पर दिए गए आंशिक रिफ़ंड की संख्या का पता चलता है. डिफ़ॉल्ट वैल्यू false है.

जवाब एक JSON स्ट्रिंग होती है. इसमें रद्द की गई खरीदारी की सूची होती है. अगर maxResults अनुरोध पैरामीटर में बताई गई संख्या से ज़्यादा नतीजे मिलते हैं, तो जवाब में nextPageToken वैल्यू शामिल होती है. इस वैल्यू को अगले अनुरोध में पास करके, ज़्यादा नतीजे देखे जा सकते हैं. सूची में सबसे पहला नतीजा, रद्द की गई सबसे पुरानी खरीदारी दिखाता है.

{
  "tokenPagination": {
    "nextPageToken": "next_page_token"
  },
  "voidedPurchases": [
    {
      "kind": "androidpublisher#voidedPurchase",
      "purchaseToken": "some_purchase_token",
      "purchaseTimeMillis": "1468825200000",
      "voidedTimeMillis": "1469430000000",
      "orderId": "some_order_id",
      "voidedSource": "0",
      "voidedReason": "4"
    },
    {
      "kind": "androidpublisher#voidedPurchase",
      "purchaseToken": "some_other_purchase_token",
      "purchaseTimeMillis": "1468825100000",
      "voidedTimeMillis": "1470034800000",
      "orderId": "some_other_order_id",
      "voidedSource": "2",
      "voidedReason": "5"
    },
  ]
}

कोटा

रद्द की गई खरीदारी की जानकारी देने वाला API, हर पैकेज के हिसाब से ये कोटा सेट करता है:

  • हर दिन 6,000 क्वेरी. (दिन की शुरुआत और खत्म होने का समय, पैसिफ़िक समय के हिसाब से आधी रात होता है.)
  • किसी भी 30 सेकंड की अवधि में 30 क्वेरी.

शुरुआती अनुरोधों के लिए दिशा-निर्देश

एपीआई के लिए शुरुआती अनुरोध के दौरान, हो सकता है कि आपको अपने ऐप्लिकेशन के लिए उपलब्ध सारा डेटा फ़ेच करना हो. ऐसा होने पर, आपके रोज़ के कोटे का इस्तेमाल हो सकता है. हालांकि, ऐसा होने की संभावना कम होती है. रद्द की गई खरीदारी का डेटा ज़्यादा सुरक्षित और एक जैसा पाने के लिए, इन सबसे सही तरीकों का पालन करें:

  • maxResults पैरामीटर के लिए डिफ़ॉल्ट वैल्यू का इस्तेमाल करें. इस तरह, अगर आपने एक दिन के लिए क्वेरी का पूरा कोटा इस्तेमाल कर लिया है, तो रद्द की गई 60,00,000 खरीदारी की जानकारी वापस पाई जा सकती है.
  • अगर किसी जवाब में nextPageToken के लिए कोई वैल्यू शामिल है, तो अगले अनुरोध के दौरान इस वैल्यू को token पैरामीटर को असाइन करें.

सबसे सही तरीके

अपने ऐप्लिकेशन में इस एपीआई का इस्तेमाल करते समय, ध्यान रखें कि खरीदारी रद्द करने की कई वजहें हो सकती हैं. साथ ही, ऐसा कोई एक समाधान नहीं है जो सभी मामलों में काम करे. आपको लाइसेंस रद्द करने की नीतियां और रणनीतियां बनाते समय, अपने उपयोगकर्ताओं का ध्यान रखना चाहिए. इसके लिए, यहां दिए गए सुझावों को लागू करें:

  • इस एपीआई का इस्तेमाल, अवांछित व्यवहार को रोकने के लिए बनाई गई रणनीति के कई एलिमेंट में से एक के तौर पर करें. ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट का ऐक्सेस रद्द करने की सुविधा, आम तौर पर तब ज़्यादा असरदार होती है, जब इसे इन चीज़ों के साथ इस्तेमाल किया जाता है: ऐप्लिकेशन में खरीदारी के लिए उपलब्ध प्रॉडक्ट की उचित कीमत, ऐप्लिकेशन का ऐसा डिज़ाइन जो गलत व्यवहार को बढ़ावा न दे, उपयोगकर्ताओं का ऐसा बड़ा ग्रुप जो इस तरह के व्यवहार को स्वीकार नहीं करता, और उपयोगकर्ताओं की मदद के लिए उपलब्ध ऐसे चैनल जो तुरंत जवाब देते हैं और असरदार तरीके से मदद करते हैं.
  • रद्द करने की नीति को सभी उपयोगकर्ताओं के लिए एक जैसा लागू करें, ताकि सभी के साथ निष्पक्षता बनी रहे.
  • अगर आपको किसी अवांछित व्यवहार को ठीक करना है, तो चरणबद्ध तरीके से लागू होने वाली नीति बनाएं. उदाहरण के लिए, शुरुआती उल्लंघनों के लिए ऐप्लिकेशन में चेतावनी दिखाएं. इसके बाद, अगर उपयोगकर्ता का आपत्तिजनक व्यवहार जारी रहता है, तो अपनी प्रतिक्रियाओं को और ज़्यादा गंभीर बनाएं. अगर कोई विकल्प न बचा हो, तो किसी उपयोगकर्ता को आपके ऐप्लिकेशन का इस्तेमाल करने से रोका जा सकता है.
  • नीति रद्द करने की सुविधा लागू करने पर और हर बार इसे अपडेट करने पर, अपने ऐप्लिकेशन के आउटरीच चैनलों का इस्तेमाल करके उपयोगकर्ताओं को बदलावों के बारे में बताएं. अपने उपयोगकर्ताओं को इन बदलावों के बारे में बताएं, ताकि वे इन्हें अच्छी तरह से समझ सकें. ऐसा तब करें, जब ये बदलाव आपके ऐप्लिकेशन में लागू होने वाले हों.
  • अपने उपयोगकर्ताओं को साफ़ तौर पर बताएं कि आपने उनके ख़िलाफ़ क्या कार्रवाई की है. जैसे, ऐप्लिकेशन में खरीदे जा सकने वाले किसी प्रॉडक्ट का ऐक्सेस रद्द करना. आदर्श रूप से, उपयोगकर्ताओं के पास आपके फ़ैसलों के ख़िलाफ़ शिकायत करने का विकल्प होना चाहिए. साथ ही, ऐसी शिकायतों पर निष्पक्ष तरीके से कार्रवाई की जानी चाहिए.
  • सुझाव/राय देने या शिकायत करने वाले फ़ॉर्म और कम्यूनिटी फ़ोरम पर नज़र रखें. इससे आपको यह समझने में मदद मिलेगी कि उपयोगकर्ताओं को गलत तरीके से व्यवहार करने के लिए क्या प्रेरित करता है और वे ऐसा कैसे करते हैं. सुरक्षा के लिए, इन जानकारी के मुताबिक कार्रवाई करें.