Showing results for 
Search instead for 
Did you mean: 

Using CIM with Gateway

Good mornign everyone,


I am new to Authorize.Net and trying to do some initial research on the set of products and services that Authorize.Net has to offer.  I read throught the AIM Developer Guide and the CIM Developer Guide and have a question about using CIM and AIM together.


I know that i need to make api calls to CIM to store credit card info and billing address info there and to retrieve that information from there.


My ultimate goal is to allow users to shop on the site without having to re-enter their CC info for every transaction.  I want them to be able to pull up a saved CC that was used before and use that for every subsequent transaction.


Once I have retrieved the stored CC info and billing address info from the CIM api call, how do i use that in a transaction when using AIM?  I don't see some sort of token in the response package where i could use that token that is associated with a specific CC that's saved in the CIM, to submit it in a transaction request to the gateway.  And based on the AIM documentation, there isn't a field in the request to store a token value.


Thank you very much for your help on this matter.


Much appreciate it.


Check createCustomerProfileTransactionRequest in the CIM documentation.


Based on my reading, AIM is strictly for one time payments.  You don't save information in the servers.


If you use CIM, you can setup the customer profile and payment profile.  When you're ready to pay, you can use the customerPaymentProfileId and call the createCustomerProfileTransactionRequest.  


There's a one-to-one relationship between a Payment and Credit Card.

A customer payment profile has a one to many relationship with Payment.

The problem is that if you setup multiple credit cards with the same Customer Payment Profile, how will Authorize.Net know which one to select?


Here's the sample code from the tests in the SDK.



testCreateCustomerProfileTransactionRequest_AuthOnly() {
net.authorize.cim.Transaction transaction =
transaction.setCustomerPaymentProfileId(customerPaymentProfileId); // Which credit card is it using?





Is one customer profile to many customer payment profiles.


and each customer payment profiles can have only 1 CC# or only 1 bank account.

I guess I forgot to read the xsd schema constraint.  I wonder why they made those objects lists.


Thanks bud.