Matty, I don't know so much about the store side but I did some IAP in Squashies World and this was all unlockable content.
InAppPurchaseAddProductID ( szID ) - the string is the product ID in the store
InAppPurchaseSetTitle ( szTitle ) - the string is a title you set in the store which is unique to the IAP
InAppPurchaseSetup ( ) - call this after the previous two to finalise the purchase setup for this IAP
GetInAppPurchaseAvailable( iID ) - the ID is an integer value for each purchase starting at zero in the order you created the IAP's in your code
InAppPurchaseActivate ( iID ) - call this to begin activation (IE. when the user clicks "Purchase" button
GetInAppPurchaseState() - use this to check when the purchase attempt is comlete then call GetInAppPurchaseAvailable( iID ) again to check for success
Example:
rem setup code
InAppPurchaseAddProductID(ProductID$)
InAppPurchaseSetTitle(purchaseTitle$)
InAppPurchaseSetup()
rem then when the button is pressed
InAppPurchaseActivate( 0 )
while GetInAppPurchaseState()=0
stepPhysics( 0 )
sync()
endwhile
if GetInAppPurchaseAvailable( 0 )>0
message("Purchase successful!")
else
message("Purchase failed or cancelled")
endif
EDIT: I use a set of globals or a UDT for the unlockable content and check the state of those purchases when the game loads. Then I set the value of those globals based on the purchase availability. In game I just check what's available from those globals before allowing the user access to it.
this.mess = abs(sin(times#))