You read once again In-App Purchase Programming Guide and Technical Note TN2259 completely, yet still can not make the sandbox work. Now may be the time for a break to get something fresh:
- Bundle ID is case-sensitive. If it is com.moke.app in the iTunes Connect but com.moke.App in App-Info.plist — that is default Bundle ID set in your app if you named your Xcode project “App” — IAP will not work.
- “Waiting for Screenshot” is not a good status. At least you should upload a placeholder screenshot and let the product status be “Ready to Submit”.
- No new Development Provisioning Profile is required. Though Technical Note TN2259 tells you to “Create, download, and install a new Development Provisioning Profile that uses your App ID enabled for In-App Purchase as seen in…”, it is not required if you are using a Development Provisioning Profile “Managed by Xcode” — it works for IAP apps even though it has a different App ID. Of course, it works for development installations only and you need setup Distribution Provisioning Profiles to distribute any apps no matter they have IAP or not.
One more thing. It’s not Apple’s One More Thing. In fact, it is one more thing that Apple does not like. If you are using a jailbroken device, make sure you uninstall AppSync from Cydia before testing IAP.