IOS receipt validation error 21002

前端 未结 5 523
旧巷少年郎
旧巷少年郎 2021-01-01 03:01

I\'m trying to use receipt validation with my server side. Everything is ok, but sometimes I see strange: 10 times validation is OK, but on 11 i get 21002 error. I dont know

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-01 03:20

    Try removing from receipt the characters '\n' and '\r' and replacing '+' with'%2B' before sending it to the server. Something like this:

     NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
     NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
     NSString *receiptDataString = [receipt base64EncodedStringWithOptions:0];
     receiptDataString=[receiptDataString stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
     receiptDataString=[receiptDataString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
     receiptDataString=[receiptDataString stringByReplacingOccurrencesOfString:@"\r" withString:@""];
     NSString *postDataString = [NSString stringWithFormat:@"receipt-data=%@", receiptDataString];
     NSString *length = [NSString stringWithFormat:@"%lu", (unsigned long)[postDataString length]];
     [request setValue:length forHTTPHeaderField:@"Content-Length"];
     [request setHTTPBody:[postDataString dataUsingEncoding:NSASCIIStringEncoding]];
    

提交回复
热议问题