I'm getting 21004 as status value in reply from apple's sandbox server testing auto-renewable subscriptions in ios?

被刻印的时光 ゝ 提交于 2019-12-18 15:05:40

问题


I'm testing In app purchase auto-renewable subscription but apple's sandbox server always returns 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");
}
}

Can someone help me to get proper receipt verification?


回答1:


You must replace this text at the top INSERT HERE YOUR ITUNESCONNECT SHARED SECRECT KEY FOR AUTORENEWABLE SUBCRIPTIONS RECEIPT VALIDATION with the secret key that you get from iTunes Connect. (obviously, don't post the full secret on Stack Overflow, though).

The secret is typically a 32 digit, alpha-numeric string that looks something like this 39fkjc38jd02mg72k9cn29dfkm39fk00 (this one is fake).

In (the new) iTunes Connect go to My Apps > (Then click on your app) > In-App Purchases > View or generate a shared secret




回答2:


go to ituenes connet and then your app and then go to ManageInApp purchases and then here see the left bottom there is an option view or generate a sharedsecret here you can generate an shared secret or you can view the previous shared secret



来源:https://stackoverflow.com/questions/14976453/im-getting-21004-as-status-value-in-reply-from-apples-sandbox-server-testing-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!