I've spent a lot of time in the past few weeks exploring the many intricacies of the new IAP system. At first, I spent a lot of time using words like "stupid" and "ridiculous" and various others I cannot type on a family friendly forum. The new system seems stupidly obtuse and prone to failure, and seemed to provide very little valuable feedback.
After taking the time to get my head around it, though, I realised just how valuable this new system is. It provides massive amounts more flexibility than was present before. In fact, whereas before we had two feedback states - purchase succeeded and purchase failed - now we have almost complete control over our buttons.
I've seen various IAP tutorials and templates released and they've provided a ton of really valuable information, but they haven't really got into just how powerful this new system is. At almost no point now should the user not be able to be given accurate and up-to-date information about what's happening with their purchases, from the moment they open the shop to the moment the last item has been purchased.
Apple are becoming increasingly demanding regarding in-app purchase. They will reject your app if you don't have a restore button. (This has been true for a while, but there are app out that don't have one and Apple let them pass... they won't let you pass without one.) They will reject your app if the user presses a button and there isn't an immediate result.
What should happen when the user presses a button? You might be inclined to answer "You request the purchase!" You'd be wrong What should happen is that the button should change to reflect a purchase is being attempted. When the purchase succeeds or fails, the button should change to reflect that. (Or a popup should display - but the beauty of this new system is you can give all the feedback you need to via the button images.) Other buttons should change to reflect the purchase state of a purchase attempt too.
I'm working on a free tutorial template that will walk through all this in excruciating detail, but for now I want to share a "flow chart" type thing with you that looks at the possible states. This is assuming one non-consumable purchase available, via a single button, in addition to a restore button. You'll probably be surprised by how many possible states you need to account for I'm still working on this, so this flow chart may well become even bigger as I identify new possible states!
Click the image to enlarge!
I'll post once the tutorial template is ready, but for now enjoy thinking about all the possible states you need to account for! If the GS team want I'd be happy to do a presentation at one of the meet-ups to walk people through exactly what this image means, and how to implement all of this into their games.