2012-09-10 39 views
1

我正在測試我在沙盒環境中的應用程序購買過程。當我開始「restoreCompletedTransactions」的過程時,我得到了要求我輸入測試用戶密碼的對話框。如果在那個階段,我只是按取消,我沒有得到任何反饋,該進程已被取消。取消在iOS中的應用程序購買

任何建議

回答

7

如果您取消購買恢復方法paymentQueue:restoreCompletedTransactionsFailedWithError:應該得到所謂的在你的支付交易的觀察者。

+0

這似乎工作,謝謝。我期待着回覆到**「paymentQueue:updatedTransactions:」**,但事實並非如此。 – reza23

+0

@ reza23,從docs看起來像「正常」交易和「恢復」交易有自己不同的委託方法集合 – Vladimir

+0

謝謝。這工作。 – GeneCode

0

如果用戶點擊取消按鈕,然後請求將失敗 - 使用店內的觀察者是這樣的...

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer]; 

和處理這樣的....

- (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; 
     } 
    } 
} 
+0

對不起,看起來我並沒有仔細閱讀你要找的東西。 – miho

0

當用戶按取消按鈕這個方法被調用,所以放置適當的消息。

- (void)failedTransaction:(SKPaymentTransaction *)transaction { 
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
     } 
    if (transaction.error.code != SKErrorPaymentCancelled) 
    { 
    NSLog(@"Transaction error: %@", transaction.error.localizedDescription); 
     } 


- (void)paymentQueue:(SKPaymentQueue *)queuerestoreCompletedTransactionsFailedWithError:(NSError *)error { 
     NSLog(@"%s","User Cancel."); 
     }