2013-02-20 8 views
9

sto testando In App Purchase abbonamento auto-rinnovabile ma il server sandbox di Apple restituisce sempre stato = 21004Sto ricevendo 21004 come valore di stato in risposta dal server sandbox di Apple che prova gli abbonamenti auto-rinnovabili in iOS?

#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"); 
} 
} 

Qualcuno mi può aiutare a ottenere una corretta verifica della ricevuta?

risposta

16

È necessario sostituire questo testo nella parte superiore INSERT HERE YOUR ITUNESCONNECT SHARED SECRECT KEY FOR AUTORENEWABLE SUBCRIPTIONS RECEIPT VALIDATION con la chiave segreta che si ottiene da iTunes Connect. (ovviamente, non pubblicare il segreto completo su Stack Overflow, però).

Il segreto è in genere una stringa alfanumerica di 32 cifre che assomiglia a questo 39fkjc38jd02mg72k9cn29dfkm39fk00 (questo è falso).

In (nuovo) iTunes Connect andare a mie applicazioni> (Quindi fare clic sul vostro app)>acquisti in-app>Visualizza o generare un segreto condiviso

+0

come ottenere la chiave segreta da iTunes Collegare? – Ravindhiran

+0

Ho modificato la mia risposta per spiegarti come trovarla. – Andrew

+0

come ottenere la chiave segreta da iTunes? – Ravindhiran

1

andare a ituenes Connet e poi la tua app e poi vai a ManageInApp acquisti e poi qui vedi in basso a sinistra c'è un'opzione vista o generare un sharedsecret qui è possibile generare un segreto condiviso o è possibile visualizzare il precedente segreto condiviso

Problemi correlati