我正在尝试在我的IAP中实现订阅模型,所以我读了苹果文档,
Apple提到了两种方法
a)本地验证
b)使用App store进行验证(我们需要自己的服务器进行通话)
我使用了第二种方法并编写了代码,如苹果文档中所述,但是
我没有自己的服务器,
以下是我解析收据的方式
NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSError *error;
NSDictionary *requestContents = @{
@"receipt-data": [receipt base64EncodedStringWithOptions:0]
};
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents
options:0
error:&error];
if (!requestData) { /* ... Handle error ... */ }
// NSError *error;
NSURL *storeURL = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:storeURL];
[storeRequest setHTTPMethod:@"POST"];
[storeRequest setHTTPBody:requestData];
// Make a connection to the iTunes Store on a background queue.
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:storeRequest queue:queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (connectionError) {
/* ... Handle error ... */
} else {
NSError *error;
NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (!jsonResponse) { /* ... Handle error ...*/ }
/* ... Send a response back to the device ... */
}
}];
我完全得到了回复,我可以看到所有细节。
但是文档中的苹果提到了这个“直接在用户设备和App Store之间建立可信连接是不可能的,因为你不能控制该连接的任何一端。”
所以我不确定,我是否可以将此代码用于我的制作。
其次,苹果提到在本地验证收据的第一种方法,我想知道如何解析收据。他们谈论了一些Payload,它是PKCS#7容器。那么如何解析这个。
此致 兰吉特