Well, it could be a smoking gun -
In accordance with the official flow of data from the Store Kit apps, you must obtain information about available purchases (SKProductsRequest) before attempting to make a purchase (SKPaymentQueue).
I added code to do this, although no localized data was used. I made a call, confirmed that the item was present, and simply reset the NSLOG about it.
The purchase went without errors!
Then I deleted the code that SKProductsRequest called, and re-run it, and received the error message "Payment requests ...".
It looks like the repository structure has been changed in such a way as to DEMAND you to call SKProductsRequest so that purchases can behave correctly when tags are added to SKPaymentQueue.
In computer science they say that they seem to have introduced a tough relationship between two logically connected, but separate modules. This is REALLY bad practice.
Try adding this code to your application and call dumpProductInfo at some point before making "real" SKPaymentQueue calls and see if it starts to work - be sure to update the built-in string literal using your actual product identifier (s).
-(void) dumpProductInfo { SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.company.domain.app.purchase"]]; request.delegate = self; [request start]; } - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSArray *myProduct = response.products;
Follow-up observation: as mentioned below, Apple Technical Note QA1691 confirms that what I thought was correct - two weeks after we found out: p
source share