2012-02-25 18 views
2

アプリ内購入を使用するアプリを作成しました。私のテストユーザーアカウントでのテスト中Transtactionsが正常に完了しているが、私はサンドボックス内で領収書を確認するとき、私はエラーを得た:URL:アプリ内購入確認確認エラー

URLデータ:https://sandbox.itunes.apple.com/verifyReceipt

- (void)recordTransaction:(SKPaymentTransaction *)transaction 
{ 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

    if ([transaction.payment.productIdentifier isEqualToString:@"com.udayKalangi.hansiMazak.hindijokes1"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setValue:transaction.transactionReceipt forKey:@"proUpgradeTransactionReceipt" ]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     NSData *receiptData = [NSData dataWithData:transaction.transactionReceipt]; 
     NSString *recieptString = [self base64forData:receiptData]; 
     NSLog(@"JSON Created"); 
     urlData = [[NSMutableData data] retain]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]]; 
     [request setHTTPMethod:@"POST"]; 
     [request setHTTPBody:[recieptString dataUsingEncoding:NSUTF8StringEncoding]]; 
     NSLog(@"will create connection"); 
     [[NSURLConnection alloc] initWithRequest:request delegate:self];  
    } 
} 

は、私が応答を得た{ "のステータスを":21002、" exception ":" java.lang.NullPointerException "}

答えて

0

申し訳ありませんが、あなたはすべて間違っています。

まず、http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.htmlによると、確認用にbase64の領収書データを「領収書データ」に設定し、JSON形式で送信する必要があります。あなたがそれをしているとは思われません。

しかし、ほとんどの場合、デバイス上の領収書を確認することは意味がありませんので、無意味です。あなたはあなたのサーバーにデータを送信し、Appleがあなたのためにデータを検証することを意図しています。デバイスで検証を実行しても、実際に検証は行われません。領収書を検証する目的は、改ざんされていないことです。つまり、誰かがあなたのアプリを妥協し、改ざんされた領収書を提供できる場合、その領収書の検証を迂回することができます。

+0

デバイスの確認はどのように役立ちませんか?アップルとの検証の違いは何ですか?それはまだアプリからやっている。 –

+0

まさにこの理由のためです:http://www.tuaw.com/2012/07/13/russian-hacker-circumvents-ios-in-app-purchases/ この場合、ハッカーはAppleの要求をリダイレクトしましたサーバーをデバイスから独自のものにします。したがって、彼らは偽の領収書を提供することもできます。しかし、あなた自身のサーバーで領収書を確認すると、ハッカーはサーバーの設定をリダイレクトまたは変更できないため、実際にアップルのサーバーを取得しており、領収書の検証を信頼することができます。 –

+0

暗号で署名された「はい」または「いいえ」をアプリにも必ず送ってください。そうでないと、ハッカーはデバイスをサーバーからリダイレクトできます。 –

関連する問題