Create card implemented with integration test for Authorize.net CIM
Abstract out common method for CIM requests
Implement all transactions in CIM Gateway
Add unit tests using mocks. CIM response also checks and parses ErrorResponse
Clean up logging used during development
Use Developer mode rather than test mode for setting the dev context before making the authorize net requests.
Use customer shipping  address id only if present while making a transaction
If create card fails due to duplicate profile error, then create a payment profile for a give customer profile. If that call also results in duplicate, then get the customer profile containing all its payment profiles. Then get the payment profile id matching the last4 in our original request. Once this is done, use the customer profile id, payment profile id, and update the card details. (It is possible that last4 matches but the expiry dates change). After updation of the payment profile, return the response.
Unit test using mocks for get profile, update payment profile
Add forceCardUpdate parameter  to createCard.
Create card will always return customer profile as response. Card reference will contain customer profile id and customer payment profile id, as these are enough for making a transaction
Create card always returns response of a perticular payment profile
Response is always an array. Create card response is augmented with fingerprint and brand
Add expiry month and expiry year to the CIM create card response.