Cards that are confirmed by the user (eg. via 3dsecure) require confirmation before the payment can be captured. Other cards don't. Support both
Switch all instances of setAPIKey to use shared function so we ensure that API version and info is always set