2012-04-20 8 views
0

IAPに関するAppleドキュメントに記載されているようなアプリ内支払いを実装しましたが、サンドボックスモードで試してみると、 'transactionState'は決してSKPaymentTransactionStatePurchasedに変更されません。 (それは永久にSKPaymentTransactionStatePurchasingにとどまっています。)SKPaymentTransaction transactionStateは購入後SKPaymentTransactionStatePurchasedになりません

何が間違っているのか分かりませんか?

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 
    for (SKPaymentTransaction *transaction in transactions) 
    { 
     NSLog(@"%ld", transaction.transactionState); 
     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]; 
    [self provideContent:transaction.payment.productIdentifier]; 
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
} 

- (void)failedTransaction:(SKPaymentTransaction *)transaction 
{ 
    if (transaction.error.code != SKErrorPaymentCancelled) { 
     [NSAlert alertWithError:transaction.error]; 
    } 
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
} 

- (void)restoreTransaction:(SKPaymentTransaction *)transaction 
{ 
    [self recordTransaction:transaction]; 
    [self provideContent:transaction.originalTransaction.payment.productIdentifier]; 
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
} 

- (void)recordTransaction:(SKPaymentTransaction *)transaction 
{ 
    NSLog(@"Record Transaction..."); 
    // ToDo: Implement 'recordTransaction'. 
} 

- (void)provideContent:(NSString *)productIdentifier 
{ 
    NSLog(@"Provide Content"); 
    // ToDo: Implement 'provideContent'. 
} 
+0

あなたの問題はあなたが投稿したコードではないので、詳細な情報なしで何が間違っているかを知ることは不可能です。 – rdelmar

+0

SKPaymentは既にAppStoreによって処理されているので、他のコードの影響はないはずです。 – miho

答えて

0

異なるマシンで同じコードをテストしました。それは私の開発マシンで期待どおりに動作します。私のコードではないようです。

+0

開発マシンですか?シミュレータで実行していますか?アプリ内購入はシミュレータでは機能せず、実際のデバイスでテストする必要があります。 – SAHM

+0

私は同じ問題を抱えています。アプリケーションは私のiPhoneで正常に動作していましたが、ある日、SKPaymentTransactionStatePurchasedステップで動かず、決して前進しません。私のiPadでテストし、それはうまく動作し、友人の携帯電話でテストし、それは正常に動作します。シームはこの電話だけです。とても好奇心が強い。 – Beleg

関連する問題