2011-09-03 11 views
10

आईओएस इन-ऐप खरीद: SKPaymentTransactionStateRestored लेनदेन की स्थिति के रूप में वापस कब भेजा जाता है?आईओएस इनएप खरीद: एसकेपेमेंट ट्रान्सएक्शनस्टेट रीस्टर्ड को लेनदेन की स्थिति के रूप में वापस भेज दिया जाता है?

क्या यह आवर्ती सदस्यता योजना से संबंधित है?

उत्तर

2

आप SKPaymentTransactionStatePurchased लेनदेन जब आप SKPaymentQueue करने के लिए एक restoreCompletedTransactions संदेश भेज कर उपयोगकर्ता की खरीद पुनर्स्थापित कर रहे हैं के बजाय SKPaymentTransactionStateRestored लेनदेन मिलता है।

+0

बेहतर यह पर भरोसा नहीं करते ... –

+0

तो ... 'Restored' लेनदेन पहले से' Purchased' और उसके बाद 'Finished' थे? मुझे लगता है कि उन्हें फिर से 'समाप्त' नहीं किया जाना चाहिए? –

1

सामान्य नियम दोनों कॉलबैक को संसाधित करना है: खरीद और पुनर्स्थापित करने के लिए।

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 
for (SKPaymentTransaction *transaction in transactions) 
    { 
    switch (transaction.transactionState) 
     { 
     case SKPaymentTransactionStatePurchased: 
      [self completeTransaction:transaction]; 
      break; 

     case SKPaymentTransactionStateFailed: 
      [self failedTransaction:transaction]; 
      break; 

     case SKPaymentTransactionStateRestored: 
      [self restoreTransaction:transaction]; 

     default: 
      break; 
     } 
    } 
} 

- (void) completeTransaction: (SKPaymentTransaction *)transaction 
{ 
[self recordTransaction: transaction content:transaction.payment.productIdentifier]; 

[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
} 

- (void) restoreTransaction: (SKPaymentTransaction *)transaction 
{ 
[self recordTransaction: transaction content:transaction.originalTransaction.payment.productIdentifier]; 

[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
} 
+3

अच्छा कोड ... लेकिन सवाल का जवाब नहीं देता है। –