我正在为我们的应用程序的新版本测试应用内购买,应用内购买代码之前已经过测试并且工作正常,但是现在它要求在购买确认警报之前两次登录 iTunes。它仍然可以正常工作并在双重登录后正确购买该项目,但它有点令人不安。最近有人在沙盒服务器上遇到过类似的问题吗?
为了提供更多信息,实际交易验证发生在我们的服务器上,我在客户端使用 RMStore 进行默认虚拟验证,它实际上什么都不做,只是检查应用收据中是否存在 productID,很酷的一面是它会刷新应用收据收据中不存在 nil 或 productID。我们的应用中只有自动续订订阅,我在测试新购买之前从应用商店注销。
这大致是我的代码的样子:
-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction * transaction in transactions) {
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
{
RMStoreAppReceiptVerificator *verificator = [RMStoreAppReceiptVerificator new];
[verificator verifyTransaction:transaction success:^{
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
NSString *receiptStr = [receipt base64EncodedStringWithOptions:kNilOptions];
[self sendReceiptToServer:receiptStr];
}
failure:^(NSError *error) {
...
}];
}
break;
case ... : ...
default: ...
}
};
}