I noticed strange bug in latest version of SDKBOX IAP:
1) open sdkbox-sample-iap app and try to buy something
2) close app by pressing "Home" before purchase dialog will appear
3) press "Cancel" when purchase dialog will appear
4) open multitasking screen and unload app from memory
5) relaunch app
After registering IAPListener, onCanceled(const Product& p) will be called. But all fields of Product will be empty, so you will never know which one purchase was cancelled.