12

アプリ内購入の自動更新サブスクリプションをテストしていますが、Apple のサンドボックス サーバーは常に status=21004 を返します

 #define SHARED_SECRET @"INSERT HERE YOUR ITUNESCONNECT SHARED SECRECT KEY FOR AUTORENEWABLE SUBCRIPTIONS RECEIPT VALIDATION"

-(void)checkReceipt {
// verifies receipt with Apple
NSError *jsonError = nil;
NSString *receiptBase64 = [NSString base64StringFromData:receiptData length:[receiptData length]];
NSLog(@"Receipt Base64: %@",receiptBase64);

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[NSDictionary dictionaryWithObjectsAndKeys:
                                                            receiptBase64,@"receipt-data",
                                                            SHARED_SECRET,@"password",
                                                            nil]
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&jsonError
                    ];
NSLog(@"%@",jsonData);
NSError * error=nil;
NSDictionary * parsedData = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
NSLog(@"%@",parsedData);
NSLog(@"JSON: %@",[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
// URL for sandbox receipt validation; replace "sandbox" with "buy" in production or you will receive
// error codes 21006 or 21007
NSURL *requestURL = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];

NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:requestURL];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:jsonData];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if(conn) {
    receivedData = [[NSMutableData alloc] init];
} else {
    completionBlock(NO,@"Cannot create connection");
}
}

誰かが適切な領収書の確認を得るのを手伝ってくれますか?

4

2 に答える 2

23

上部のこのテキストを、INSERT HERE YOUR ITUNESCONNECT SHARED SECRECT KEY FOR AUTORENEWABLE SUBCRIPTIONS RECEIPT VALIDATIONiTunes Connect から取得した秘密鍵に置き換える必要があります。(もちろん、完全なシークレットを Stack Overflow に投稿しないでください)。

シークレットは通常、次のような 32 桁の英数字の文字列です39fkjc38jd02mg72k9cn29dfkm39fk00(これは偽物です)。

(新しい) iTunes Connect で[マイ アプリ] > (アプリをクリック) > [アプリ内購入] > [共有シークレットの表示または生成] に移動します。

于 2013-03-06T09:28:54.547 に答える
1

ituenes connet に移動してからアプリに移動し、ManageInApp の購入に移動します。次に、左下にオプション ビューがあるか、共有シークレットを生成します。ここで、共有シークレットを生成するか、以前の共有シークレットを表示できます。

于 2013-03-06T13:39:01.157 に答える