Testing IAP before releasing to the store

Are there any tutorials or samples for testing IAP before release?

There’s a pretty good doc and sample for implementing IAP, but I haven’t found anything that explains how to test it (specifically, using Corona on iOS).

Does the IAP have to be valid before I can test it with Corona?

What kind of provision do I need to test it?

Why does the transaction get called with a null evt when I test with my development profile?

Is there a doc, tutorial, or sample that might clear some of these things up?

For Apple.  Your app has to be defined on iTunes Connect.  This means you have to have created the App in your Provisioning Portal.  You need an AppID, either a development or AdHoc type profile based on the AppID. You cannot use the Team profile.  Once you download it to the right place and restart Corona SDK you can build your app.

In iTunes Connect you have to define your items and give them unique names.  You also have to create some test accounts which have to have their own Apple IDs.  You log out of the device from your primary iTunes login, run your app and login with your test account.

The biggest gotcha on store.purchase() is to make sure you pass in a table:

store.purchase( { “com.yourname.yourapp.id” } )

instead of:

store.purchase( “com.yourname.yourapp.id” )

For Apple.  Your app has to be defined on iTunes Connect.  This means you have to have created the App in your Provisioning Portal.  You need an AppID, either a development or AdHoc type profile based on the AppID. You cannot use the Team profile.  Once you download it to the right place and restart Corona SDK you can build your app.

In iTunes Connect you have to define your items and give them unique names.  You also have to create some test accounts which have to have their own Apple IDs.  You log out of the device from your primary iTunes login, run your app and login with your test account.

The biggest gotcha on store.purchase() is to make sure you pass in a table:

store.purchase( { “com.yourname.yourapp.id” } )

instead of:

store.purchase( “com.yourname.yourapp.id” )