最近、アプリの購入で消耗品が二重に請求されるというユーザーからの苦情をメールで受け取りました。どうすればこれが可能になるのかわかりません。さらに、この種の問題を経験しているユーザーはごくわずかのようです。しかし、もしそうなら、それは複数回起こります。私は何かが恋しいですか?数量はデフォルトで 1 ですよね。二重請求の問題を経験したことがありますか? 多くのユーザーが、さまざまなアプリで二重請求されていることに不満を持っているのを見つけました. これは Apple/iTunes の問題ですか、それとも多くの開発者が何か間違ったことをしているのですか?
トランザクションに関連するコードは次のとおりです。一度に許可するトランザクションは 1 つだけです。メンバー変数transactionRunningを使用し、SKPaymentQueue でキュー内のトランザクション数を確認します。
コメントや経験をいただければ幸いです。これを修正するための助けをいただければ幸いです。
- (void)purchaseProduct:(NSString*)productIdentifier
{
NSArray * array = [SKPaymentQueue defaultQueue].transactions;
if (transactionRunning == false && [array count] == 0)
{
transactionRunning = true;
SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
}
- (void)finishTransaction:(SKPaymentTransaction *)transaction wasSuccessful:(BOOL)wasSuccessful
{
transactionRunning = false;
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
[self provideContent:transaction.originalTransaction.payment.productIdentifier];
[self finishTransaction:transaction wasSuccessful:YES];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}