アプリにアプリ内購入を実装しようとしています。タイプは非消耗品です。製品のリクエストは、正しいタイトル、説明、価格で問題なく返されます。しかし、クリックして購入すると、alertViewを開いて「confirm .... Environment:Sandbox」と表示し、confirmをクリックすると、ユーザーテストからのパスワードを要求するアップルボックスが表示されます。しかし、表示されず、トランザクションが失敗しました。メッセージエラーなし...私のアプリはまだAppStoreにありませんが、ItunesConnectのアプリ内購入製品のステータスは[送信準備完了]です。正しいですか?
これが私のコードです:(長いコードで申し訳ありませんが、私の質問にとって関連性があり重要であることを意味します)
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *products = response.products;
proUpgradeProduct = [products count] == 1 ? [[products firstObject] retain] : nil;
if (proUpgradeProduct)
{
NSLog(@"Product title: %@" , proUpgradeProduct.localizedTitle);
NSLog(@"Product description: %@" , proUpgradeProduct.localizedDescription);
NSLog(@"Product price: %@" , proUpgradeProduct.price);
NSLog(@"Product id: %@" , proUpgradeProduct.productIdentifier);
// lblTitulo.text = proUpgradeProduct.productIdentifier;
// lblDescricao.text = proUpgradeProduct.localizedDescription;
}
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
// finally release the reqest we alloc/init’ed in requestProUpgradeProductData
[productsRequest release];
[[NSNotificationCenter defaultCenter] postNotificationName:kInAppPurchaseManagerProductsFetchedNotification object:self userInfo:nil];
}
- (void)requestProUpgradeProductData
{
NSSet *productIdentifiers = [NSSet setWithObject:@"versaopro" ];
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
productsRequest.delegate = self;
[productsRequest start];
// we will release the request object in the delegate callback
}
- (void)loadStore
{
// restarts any purchases if they were interrupted last time the app was open
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
// get the product description (defined in early sections)
[self requestProUpgradeProductData];
}
- (void)purchaseProUpgrade
{
SKPayment *payment = [SKPayment paymentWithProduct:proUpgradeProduct];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
-(IBAction) buyClick: (id) sender {
[self purchaseProUpgrade];
}