我有一个支持订阅和付费功能的应用程序。我在服务器端遇到了收据验证问题。 如果
我无法理解何时应将共享密钥传递给Apple服务器。由于我们只有一张包含消耗品和订阅收据信息的苹果收据。
任何帮助?
答案 0 :(得分:1)
Code 21002
表示您发送给拥有共享密码的Apple的JSON
和您的收据数据"错误的" 或不是格式苹果想要它。
另请尝试从收到字符'\n'
和'\r'
后删除,并将'+'
替换为'%2B'
,然后再将其发送到服务器。像这样:
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]];
Code 21004
这意味着你的代码中存在逻辑错误,在某种程度上你没有传递密钥