2012-04-03 25 views
15

मेरा मतलब है, क्या मेरे कदम होना चाहिए?मुझे इन-एप खरीद लेनदेन रसीद कब वैध करनी चाहिए?

1) जाओ SKPaymentTransactionStatePurchased

2) रसीद [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

3) मान्य द्वारा SKPaymentQueue से निकालें और सामग्री उपलब्ध कराने और फिर, अगर यह अवैध है, ब्लॉक सामग्री मैंने अभी प्रदान की है

या मुझे इसके बजाय दूसरे चरण को 3 में बदलना चाहिए?

1)SKPaymentTransactionStatePurchased

2) मान्य रसीद प्राप्त करें और फिर, अगर यह अवैध है, dont't प्रदान सामग्री

3) वैसे भी SKPaymentQueue से निकालें [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

पहले परिदृश्य उपयोगकर्ता में खरीद के ठीक बाद इंटरनेट बंद कर सकते हैं, इसलिए मैं रसीद को सत्यापित करने में सक्षम नहीं होगा। लेकिन दूसरे में, चरण 1 और 2 के बीच इंटरनेट के साथ कुछ समस्याएं हो सकती हैं, इसलिए मैं लेनदेन खत्म नहीं करूँगा और सामग्री प्रदान नहीं करूंगा, यह एक खराब उपयोगकर्ता अनुभव होगा।

तो आपने अपने ऐप के लिए किस तरह से चुना और क्यों?

मेरे चुनाव

मैं, दूसरे परिदृश्य चुना के बाद से पहली एक को चुनने मेरे ऐप आसानी से आईएपी क्रैकर से फटा जा बनाता है।

+0

मैं भी इस के जवाब में दिलचस्प रहा हूँ। मैं वर्तमान में अपने पहले दृष्टिकोण कर रहा हूँ क्योंकि यह एक बेहतर प्रयोक्ता अनुभव है और यह अभी भी दुरुपयोग (मैं पृष्ठभूमि में रसीद मान्य करने के लिए कोशिश कर रखना) –

+0

मुश्किल है मैं भी मेरे ऐप –

+0

आप यह निर्धारित करें कि के लिए एक का चयन करने का निर्णय लिया एप कोड के भीतर से सामग्री (वैध रसीद) या नहीं (अमान्य रसीद) डाउनलोड करने के लिए? यदि हां, तो 'अगर (वैध)' को 'if (1)' में बदलने की आवश्यकता है। मेरा जवाब देखें –

उत्तर

9

परिदृश्य 2. यदि इंटरनेट उड़ाता है, तो आप -फिनिश ट्रांज़ेक्शन नहीं प्राप्त करेंगे। लेकिन यह अच्छा है, क्योंकि आप पुनः प्रयास कर सकते हैं (एनएसटीमर) और आपके ऐप को स्टार्ट अप पर अधूरा लेनदेन दिया जाएगा। और यह बिल्कुल कैसे स्टोरकिट को काम करने के लिए डिज़ाइन किया गया है (भले ही यह दस्तावेज़ पढ़ने से स्पष्ट नहीं है)।

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

सामग्री प्रदान करने से पहले लेनदेन को कभी खत्म न करें, आपको स्टोरकिट के शीर्ष पर अपनी लेनदेन प्रणाली लागू करनी होगी, और आप ऐसा नहीं करना चाहते हैं, मेरा विश्वास करें (मैंने इसे देखा है , यह एक आपदा थी)।

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

+0

हाँ, मैं कि मेरे ऐप आसानी से आईएपी पटाखा द्वारा फटा जा सकता है इस परिदृश्य के लिए ले जाते हैं, के बाद मैंने देखा। और, हाँ, कॉफ़ कोर्स मैं पर्यवेक्षक को किया गया FinishLaunching) आपके उत्तर के लिए धन्यवाद! –

1

मैं पहले सत्यापित करता हूं। इसमें 2-3 सेकंड लगते हैं। आप इस उद्देश्य के लिए रसीदकिट https://github.com/maciekish/ReceiptKit का उपयोग कर सकते हैं।

+1

कैसे ReceiptKit मदद सत्यापन के बिना अपने रसीद का उपयोग आपकी नियंत्रित सर्वर वातावरण पर मान्य करने के लिए करता है? ऐसा लगता है कि हैक करना बहुत आसान है, है ना? –

3

यह मैं क्या कर रहा है:

  1. अनुप्रयोग संलग्न रसीद के साथ सामग्री के लिए अनुरोध भेजता है।

  2. सर्वर iTunes के साथ रसीद की पुष्टि करता है, और वैध है, मूल अनुरोध के जवाब शरीर के रूप में खरीदा सामग्री देता है।

इस तरह, भले ही एप्लिकेशन द्विआधारी हैक कर लिया है/संशोधित, सामग्री केवल एक वैध रसीद के खिलाफ डाउनलोड किया जाता है।