सभी लेख
Playbookपढ़ने में 8 मिनट

अगर आपका ऐप अब भी App Store Server Notifications V1 पर चलता है, तो Apple आपसे सब्सक्रिप्शन रिफ़ंड के बारे में कभी नहीं पूछता

Apple ने जून 2023 में App Store Server Notifications V1 को डिप्रिकेट कर दिया था, और उसमें सब्सक्रिप्शन के लिए CONSUMPTION_REQUEST, REFUND_DECLINED या REFUND_REVERSED कभी नहीं जुड़े। जानिए V1 सर्वर क्या चूक जाता है, इसकी कीमत क्या है, और बिना कोई रिफ़ंड गंवाए V2 पर कैसे जाएं।

एक आधुनिक सर्वर रैक के पास बिना खुले पत्रों से भरा एक पुराना मेलबॉक्स, जो App Store Server Notifications V1 पर खो जाने वाले रिफ़ंड संकेतों को दर्शाता है

मुख्य बातें

  • Apple ने 5 जून 2023 को App Store Server Notifications V1 और verifyReceipt एंडपॉइंट को डिप्रिकेट किया। दोनों अब भी काम करते हैं, उन्हें कोई नई सुविधा नहीं मिलती, और उनकी एंड-ऑफ़-लाइफ़ तारीख घोषित नहीं हुई है।
  • Apple के V1 दस्तावेज़ में CONSUMPTION_REQUEST केवल कंज़्यूमेबल इन-ऐप खरीदारी के लिए सूचीबद्ध है। ऑटो-रिन्यूएबल सब्सक्रिप्शन के लिए consumption request अप्रैल 2024 में App Store Server Notifications V2 में जोड़े गए।
  • REFUND_DECLINED और REFUND_REVERSED केवल App Store Server Notifications V2 में मौजूद हैं, इसलिए V1 सर्वर को कभी पता नहीं चलता कि Apple ने रिफ़ंड ठुकरा दिया या उसे वापस ले लिया।
  • V1 पर, ऑटो-रिन्यूएबल सब्सक्रिप्शन का Apple रिफ़ंड CANCEL के रूप में आता है। V2 पर यह REFUND के रूप में आता है, साथ में साइन किए गए ट्रांज़ैक्शन पर revocationDate और revocationReason होते हैं।
  • विफल V2 नोटिफ़िकेशन को Apple लगभग एक हफ़्ते में पांच बार दोबारा भेजता है, 1, 12, 24, 48 और 72 घंटे पर। विफल V1 नोटिफ़िकेशन को तीन बार दोबारा भेजा जाता है, 6, 24 और 48 घंटे पर, और उसे Get Notification History से वापस नहीं पाया जा सकता।
  • App Store Connect में ऐप के V2 पर स्विच होने के बाद नए नोटिफ़िकेशन तुरंत V2 फ़ॉर्मेट में आने लगते हैं, जबकि पहले से रीट्राई में चल रहे V1 नोटिफ़िकेशन लगभग 78 घंटे तक आते रह सकते हैं।

App Store Server Notifications का Version 1 अब भी रिफ़ंड पहुंचाता है, लेकिन वह वही एक नोटिफ़िकेशन छोड़ देता है जिससे आप सब्सक्रिप्शन रिफ़ंड पर अपनी बात रख सकते हैं। Apple ने 5 जून 2023 को verifyReceipt एंडपॉइंट के साथ V1 को डिप्रिकेट किया, और तब से हर रिफ़ंड सुविधा केवल V2 में जोड़ी है। अगर आपकी App Store Connect सेटिंग्स में अब भी Version 1 लिखा है, तो Apple आपके सर्वर को कभी CONSUMPTION_REQUEST भेजे बिना सब्सक्रिप्शन रिफ़ंड पर फ़ैसला कर सकता है। आप वहां कोई लड़ाई नहीं हारते। आपको उसमें कभी बुलाया ही नहीं जाता।

App Store Server Notifications V1 के डिप्रिकेशन का क्या मतलब है

डिप्रिकेट होने का मतलब बंद होना नहीं है। एक Apple इंजीनियर ने जून 2023 में डेवलपर फ़ोरम पर लिखा कि verifyReceipt और V1 नोटिफ़िकेशन एंड-ऑफ़-लाइफ़ तारीख घोषित होने तक काम करते रहेंगे, कि वह तारीख तय नहीं हुई थी, और डेवलपर्स को पहले से बताया जाएगा। तीन साल से ज़्यादा बाद भी, सर्वर URL सेट करते समय App Store Connect "Version 1 (deprecated)" को एक विकल्प के रूप में दिखाता है।

डिप्रिकेशन का असली मतलब है ठहराव। जून 2023 से Apple के नोटिफ़िकेशन चेंजलॉग का हर बदलाव V2 का बदलाव है: साइन किए गए ट्रांज़ैक्शन पर नए फ़ील्ड, नए नोटिफ़िकेशन टाइप, अप्रैल 2026 में जोड़ा गया 12 महीने की प्रतिबद्धता का डेटा। V1 सर्वर इनमें से कुछ भी नहीं देखता।

कौन से रिफ़ंड संकेत V1 सर्वर को कभी नहीं मिलते

हर वर्शन के लिए Apple के दस्तावेज़ के अनुसार, यहां बताया गया है कि वही रिफ़ंड इवेंट V1 सर्वर और V2 सर्वर तक कैसे पहुंचते हैं।

रिफ़ंड इवेंटVersion 1Version 2
ग्राहक Apple से किसी कंज़्यूमेबल का रिफ़ंड मांगता हैCONSUMPTION_REQUESTCONSUMPTION_REQUEST
ग्राहक Apple से किसी ऑटो-रिन्यूएबल सब्सक्रिप्शन का रिफ़ंड मांगता हैV1 दस्तावेज़ में सूचीबद्ध नहींCONSUMPTION_REQUEST, अप्रैल 2024 से
Apple किसी ऑटो-रिन्यूएबल सब्सक्रिप्शन का रिफ़ंड करता हैCANCELREFUND
Apple किसी कंज़्यूमेबल, नॉन-कंज़्यूमेबल या नॉन-रिन्यूइंग सब्सक्रिप्शन का रिफ़ंड करता हैREFUNDREFUND
Apple आपके ऐप में ग्राहक द्वारा शुरू किया गया रिफ़ंड ठुकरा देता हैउपलब्ध नहींREFUND_DECLINED
Apple पहले से दिया गया रिफ़ंड वापस ले लेता हैउपलब्ध नहींREFUND_REVERSED
आप आउटेज के दौरान छूटे नोटिफ़िकेशन वापस पाते हैंउपलब्ध नहींGet Notification History

क्या V1 को CONSUMPTION_REQUEST मिलता भी है?

हां, कंज़्यूमेबल के लिए। Apple का V1 रेफ़रेंस CONSUMPTION_REQUEST को वह नोटिफ़िकेशन बताता है जो तब भेजा जाता है जब ग्राहक किसी कंज़्यूमेबल इन-ऐप खरीदारी के लिए रिफ़ंड अनुरोध शुरू करता है। एक Apple इंजीनियर ने 2023 में फ़ोरम पर पुष्टि की कि योग्य रिफ़ंड के लिए V1 consumption request भेजे जाते हैं। कमी सब्सक्रिप्शन में है। Apple का चेंजलॉग सब्सक्रिप्शन consumption request की तारीख 11 अप्रैल 2024 बताता है, V2 में, और Send Consumption Information दस्तावेज़ कहता है कि Apple यह अनुरोध आपके V2 एंडपॉइंट के ज़रिए भेजता है।

V1 पर CANCEL को गलत समझना आसान क्यों है

V1 पर, जब Apple किसी सब्सक्रिप्शन का रिफ़ंड करता है, तो नोटिफ़िकेशन टाइप CANCEL होता है, अक्सर DID_CHANGE_RENEWAL_STATUS के साथ। कई सर्वर हर कैंसल को ऐसे मानते हैं जैसे ग्राहक ने ऑटो-रिन्यू बंद किया हो, जिससे अवधि खत्म होने तक एक्सेस चालू रहता है। V2 यह अस्पष्टता हटा देता है। रिफ़ंड REFUND के रूप में आता है, और रिन्यूअल बंद करने वाला ग्राहक सबटाइप AUTO_RENEW_DISABLED के साथ DID_CHANGE_RENEWAL_STATUS के रूप में आता है।

V1 पर बने रहने की पैसों में कीमत

हर App Store रिफ़ंड का फ़ैसला Apple करता है। CONSUMPTION_REQUEST ही एकमात्र मौका है जहां आपका उपयोग डेटा उस फ़ैसले तक पहुंचता है, और Apple आपसे 12 घंटे के भीतर जवाब देने को कहता है। V1 पर, सब्सक्रिप्शन रिफ़ंड इस कदम को छोड़ देते हैं।

यहां उदाहरण के तौर पर लिए गए आंकड़ों के साथ एक हल किया हुआ उदाहरण है। मान लीजिए आपका ऐप $9.99 का मासिक सब्सक्रिप्शन बेचता है जिसमें AI इमेज जनरेशन शामिल हैं। एक सब्सक्राइबर महीने में 400 जनरेशन चलाता है, और हर एक पर मॉडल इन्फ़रेंस में आपका असली पैसा खर्च होता है। फिर वह Apple से रिफ़ंड मांगता है।

लागत मदV1 सर्वरV2 सर्वर
भुगतान में आपका हिस्साApple मंज़ूरी दे तो लौटा दिया जाता हैApple मंज़ूरी दे तो लौटा दिया जाता है
उस महीने इस्तेमाल हुआ कंप्यूट, API कॉल और स्टोरेजपहले ही चुकाया जा चुका, वापस नहीं मिलतापहले ही चुकाया जा चुका, वापस नहीं मिलता
Apple को 400 जनरेशन दिखाने का मौकाकोई नहींएक CONSUMPTION_REQUEST, 12 घंटे
पता चलना कि Apple ने रिफ़ंड ठुकरा दियाकभी नहींREFUND_DECLINED
पता चलना कि रिफ़ंड वापस लिया गयाकभी नहींREFUND_REVERSED

आप जो भुगतान गंवाते हैं वह आपका हिस्सा है, सूची मूल्य नहीं। Apple सब्सक्राइबर की पेड सेवा के पहले साल में सब्सक्रिप्शन कीमत का 70% देता है, लागू करों को घटाकर, और उसके बाद या App Store Small Business Program के सदस्यों के लिए 85%। कंप्यूट का बिल इसके साथ कम नहीं होता। इन्फ़रेंस, थर्ड-पार्टी API कॉल और फ़ाइल स्टोरेज का भुगतान तभी हो गया था जब ग्राहक ने उनका इस्तेमाल किया।

दो गायब नतीजे वाले नोटिफ़िकेशन भी पैसे का नुकसान कराते हैं। REFUND_REVERSED के बिना, जिस सर्वर ने रिफ़ंड पर एक्सेस रद्द किया था, वह Apple के रिफ़ंड वापस लेने पर उसे कभी बहाल नहीं करता, इसलिए भुगतान करने वाला ग्राहक बाहर ही रह जाता है और सपोर्ट को लिखता है। REFUND_DECLINED के बिना, आप यह नहीं पहचान सकते कि कोई रिफ़ंड अब भी लंबित है या Apple ने उसे ठुकरा दिया।

एक खुले लैपटॉप के पास, एक डेवलपर के हाथ नेटवर्क केबल को पुराने पैच पैनल पोर्ट से नए पोर्ट में लगा रहे हैं

बिना कोई रिफ़ंड गंवाए V1 से V2 पर कैसे जाएं

V2 पर जाना एक सर्वर बदलाव और एक सेटिंग है। दिसंबर 2025 में एक App Store Commerce Engineer द्वारा फ़ोरम पर दिया गया Apple का अपना मार्गदर्शन बताता है कि स्विच करने के दिन क्या होता है।

सेटिंग बदलने से पहले V2 एंडपॉइंट बनाएं

  • ऐसा POST स्वीकार करें जिसकी बॉडी में signedPayload हो। V2 पेलोड JWS होते हैं, जिन्हें Apple साइन करता है, इसलिए अंदर की किसी भी चीज़ पर भरोसा करने से पहले सिग्नेचर सत्यापित करें। Apple की App Store Server Library यह काम आपके लिए करती है।
  • CANCEL हैंडलिंग को REFUND से मैप करें, और REFUND_DECLINED और REFUND_REVERSED को नए मामलों के रूप में संभालें।
  • सब्सक्रिप्शन के लिए CONSUMPTION_REQUEST का जवाब Send Consumption Information से दें, और केवल तभी जब ग्राहक ने Apple के साथ डेटा साझा करने की सहमति दी हो। Apple कहता है कि सहमति के बिना आपको जवाब नहीं देना चाहिए।
  • सफलता पर HTTP 200 से 206 लौटाएं। कोई भी 40x या 50x होने पर Apple दोबारा भेजता है।

App Store Connect में सेटिंग बदलें

App Store Connect में अपना ऐप खोलें, General के अंतर्गत App Information चुनें, App Store Server Notifications ढूंढें, और Version 2 चुनकर Production Server URL को अपने V2 एंडपॉइंट पर सेट करें। अगर आप टेस्ट करना चाहते हैं तो पहले sandbox URL के लिए भी यही करें, और Request a Test Notification से पुष्टि करें कि आपका सर्वर जवाब देता है।

V1 हैंडलर को लगभग तीन दिन तक चालू रखें

स्विच के बाद नए नोटिफ़िकेशन तुरंत V2 फ़ॉर्मेट में आने लगते हैं, हर सब्सक्रिप्शन के लिए, पुराना हो या नया। पहले से रीट्राई में चल रहे V1 नोटिफ़िकेशन V1 फ़ॉर्मेट में तब तक आते रहते हैं जब तक वे सफल न हो जाएं या उनके प्रयास खत्म न हो जाएं। Apple आख़िरी संभावित V1 रीट्राई लगभग 78 घंटे पर बताता है, जो 6 + 24 + 48 है। पुराने हैंडलर को उससे आगे तक चलने दें, फिर उसे हटा दें।

इसी दौरान verifyReceipt को भी बदल दें

verifyReceipt को भी उसी दिन डिप्रिकेट किया गया था। यह अब भी जवाब देता है, लेकिन Apple सर्वरों को इसके बजाय App Store Server API की ओर भेजता है। Get Transaction Info एक साइन किया हुआ ट्रांज़ैक्शन लौटाता है, Get Transaction History ग्राहक का इतिहास लौटाता है, और Get Refund History किसी ग्राहक की हर रिफ़ंड हुई खरीदारी की सूची देता है। V2 नोटिफ़िकेशन के साथ मिलकर ये वह सब कवर करते हैं जिसके लिए ज़्यादातर सर्वर रसीदों का इस्तेमाल करते थे, जिसमें cancellation_date फ़ील्ड भी शामिल है जो कभी रसीद में रिफ़ंड को चिह्नित करता था।

RefundHalt, App Store Server Notifications V2 से जुड़ता है और आपके ऐप द्वारा पहले से दर्ज उपयोग का इस्तेमाल करके हर CONSUMPTION_REQUEST का जवाब 12 घंटे की समय-सीमा के भीतर देता है। अगर आप अब भी V1 पर हैं, तो स्विच ही वह कदम है जो यह सब संभव बनाता है।

अक्सर पूछे जाने वाले सवाल

क्या App Store Server Notifications V1 बंद किया जा रहा है?
अभी नहीं। Apple ने 5 जून 2023 को V1 और verifyReceipt को डिप्रिकेट किया, और दोनों अब भी काम करते हैं। Apple ने कहा है कि अभी कोई एंड-ऑफ़-लाइफ़ तारीख नहीं है और डेवलपर्स को पहले से सूचित किया जाएगा। इस बीच V1 को कोई नई सुविधा नहीं मिलती।
क्या मुझे V1 पर CONSUMPTION_REQUEST नोटिफ़िकेशन मिलते हैं?
Apple के V1 दस्तावेज़ के अनुसार, केवल कंज़्यूमेबल के लिए। ऑटो-रिन्यूएबल सब्सक्रिप्शन के लिए consumption request अप्रैल 2024 में V2 में जोड़े गए, और Apple उन्हें आपके V2 एंडपॉइंट के ज़रिए भेजता है। अगर आप सब्सक्रिप्शन बेचते हैं और V1 पर बने रहते हैं, तो आप उन रिफ़ंड अनुरोधों का जवाब नहीं दे सकते।
V1 और V2 पर सब्सक्रिप्शन रिफ़ंड कैसा दिखता है?
V1 पर यह CANCEL के रूप में आता है, अक्सर DID_CHANGE_RENEWAL_STATUS के साथ। V2 पर यह REFUND के रूप में आता है, साथ में साइन किए गए ट्रांज़ैक्शन पर revocationDate और revocationReason होते हैं। V2 तब REFUND_DECLINED भी भेजता है जब Apple आपके ऐप में शुरू किया गया रिफ़ंड ठुकरा देता है, और REFUND_REVERSED तब जब Apple दिया हुआ रिफ़ंड वापस ले लेता है।
V1 से V2 पर स्विच करने पर नोटिफ़िकेशन का क्या होता है?
स्विच करने के कुछ ही देर बाद नए नोटिफ़िकेशन V2 फ़ॉर्मेट में आने लगते हैं, सभी सब्सक्रिप्शन के लिए। पहले से रीट्राई हो रहे V1 नोटिफ़िकेशन V1 फ़ॉर्मेट में तब तक आते रहते हैं जब तक वे सफल न हो जाएं या उनके रीट्राई खत्म न हो जाएं, जिसे Apple स्विच के लगभग 78 घंटे बाद तक बताता है। उस अवधि में दोनों हैंडलर चालू रखें।
क्या V2 पर स्विच करने के बाद मैं V1 पर वापस जा सकता हूं?
हां, App Store Connect API के Modify an App एंडपॉइंट के ज़रिए, जैसा Apple का टेक्नोट TN3180 बताता है। Apple इसे एक असामान्य मामला कहता है और V1 को अब भी डिप्रिकेटेड मानता है, इसलिए वापस लौटने पर आप सब्सक्रिप्शन consumption request और नए रिफ़ंड नोटिफ़िकेशन छोड़ देते हैं।

स्रोत और आगे की जानकारी

RefundHalt

App Store और Google Play के लिए refund ऑटोपायलट

आगे पढ़ें

Deep diveपढ़ने में 9 मिनट

Apple की 12 महीने की प्रतिबद्धता वाली मासिक सब्सक्रिप्शन पर एक रिफ़ंड पूरा साल खत्म कर सकता है, या सिर्फ़ उसका एक महीना

Apple की 12 महीने की प्रतिबद्धता वाली मासिक सब्सक्रिप्शन में रिफ़ंड दो तरह के होते हैं। पिछले महीने का रिफ़ंड हो तो बिलिंग चलती रहती है। मौजूदा महीने का रिफ़ंड हो तो प्रतिबद्धता उसी पल खत्म हो जाती है। यहाँ जानिए हर स्थिति आपके सर्वर तक कैसे पहुँचती है, उसकी कीमत क्या है, और Apple को क्या भेजना है।

Playbookपढ़ने में 8 मिनट

आपकी ऐप रिफंड नीति Apple या Google के नियमों को नहीं बदल सकती, इसलिए वही नीति लिखें जो असल में होता है

ऐप रिफंड नीति आप पर वहीं लागू होती है जहां आप सच में रिफंड जारी करते हैं। App Store की हर खरीदारी का रिफंड Apple खुद करता है, जबकि Google Play 48 घंटे के बाद रिफंड आपको सौंप देता है। यहां जानिए हर समझौता क्या कहता है, एक लापरवाह वादे की कीमत क्या होती है, और कौन-सी शर्तें लिखने लायक हैं।

अगला refund अनुरोध पहले ही रास्ते में है.

RefundHalt को उतने समय में सेटअप करें, जितने में आप उस refund के बारे में एक और सपोर्ट ईमेल पढ़ते हैं जिस पर आपत्ति नहीं कर पाए.