2011-09-13 118 views
4

我正在開發一個應用程序,用戶可以在其中購買自動續訂訂閱。購買部分沒有問題,但用戶刪除應用程序並嘗試恢復購買時會出現問題。以下是我寫的處理該問題的代碼。應用內購買自動續訂交易恢復問題

  1. 我給了一個標題爲「已經是訂戶」的按鈕。當用戶點擊我呼叫以下代碼時。

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];   
    
  2. 這就是我如何處理- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions方法恢復。

     case SKPaymentTransactionStateRestored: 
         duration = [strDuration intValue]; 
         if(transaction.transactionReceipt != nil){ 
          receipt = [[NSString alloc] initWithData:[b64 dataByBase64EncodeFromData:transaction.transactionReceipt] encoding:NSASCIIStringEncoding]; 
          [userDefault setObject:transaction.transactionReceipt forKey:@"LastReceipt"]; 
          [queue finishTransaction:transaction]; 
          [self callReceiptInfoImpl]; 
         } 
         break; 
    
  3. 以下是恢復事務完成時的委託方法。

    -(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{ NSLog(@"COMPLETED TRANSACTION RESTORED"); }

問題是,當用戶點擊按鈕「已經訂閱」,則步驟1被調用,但第2步從未被調用。最後,我可以在屏幕上看到消息「已完成的事務已恢復」。

如果有人遇到類似的問題,請指導。

感謝您閱讀.....

+0

http://stackoverflow.com/questions/6149764/do-auto-renewable-subscriptions-send-an-skpaymenttransactionstatepurchased-restor –

+0

有同樣的問題,都在沙箱購買從未恢復? –

+0

嗨,正確的方法是在本地存儲收據(在iPhone或iPAD中)。然後,當你想恢復發送收據到你的服務器(因爲它不能被驗證iPhone或iPAD),該服務器將收據發送到蘋果進行驗證。 Apple會將結果發送回您的服務器,並將其發送到設備。有關詳細信息,請閱讀文檔,因爲它提供了清晰的想法以下可能會有所幫助。 http://stackoverflow.com/a/7244084/919049 – Mohammad

回答

0

在你的類,你必須實現回調 功能paymentQueue:updatedTransactions:

此功能將收到關於交易到什麼時候 更新它是製造的。因爲即使應用程序關閉了 ,您的交易也會發生,因此您應該準備好在您打開該應用程序後立即收到這些通知。所以最好的地方是在 applicationDidFinishLaunching或等價的方法中初始化它。

從這個link

+0

感謝您的回答,但在段落和鏈接中提到的一切都很滿意,但它仍然無法正常工作.... – Mohammad

相關問題