add a bunch of security checks into iOS payment backend

* Prevent null pointer access if `manager` or `manager->delegate` is not set
* A few new log messages to keep the developer informed
* **IMPORTANT**: Do not call `finishTransaction` if we were unable to process the transaction in `completeTransaction`