アプリの新しいバージョンのアプリ内購入をテストしています。アプリ内購入コードは以前にテストされ、正常に機能していましたが、購入確認アラートの前に iTunes サインインが 2 回要求されます。ダブルサインイン後も問題なく動作し、アイテムを正しく購入できますが、少し気になります. 最近、サンドボックス サーバーで同様の問題が発生した人はいますか?
サーバーで実際のトランザクションの検証が行われることをさらに詳しく説明するために、クライアント側のデフォルトのダミー検証に 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: ...
}
};
}