InvoiceService.locateExistingCard

I have been trying to the “cardId” after a successful “InvoiceService.validateCreditCard”.
I know it’s successful because it returns:
Message: Validated 3/27/2018
Valid : true

I attempt to pull it via: “InvoiceService.locateExistingCard”
However it returns 0, perhaps there is something wrong with the request I make,
so as a secondary measure, I’m tyring to pull the data via: “DataService.query”

I keep getting a method signature error ie: No method matching arguments…

I then try to use the https://keys.developer.infusionsoft.com/io-docs to perform
the same things, and also to see the payload it sends, however it gets the same thing:
InvoiceService.validateCreditCard - get the “No method matching…”

I suppose my questions would be:

  • Is there a way to identify what the method signature should be, when calling
    a certin “method” via the API? ie: the JAVA method signatures on the backend (I’m
    guessing you’re using JAVA, perhaps not).
  • Is there a way in the dashboard, to double check that a card has been
    validated against a contact? (ie: It has been successfully validate, and I would
    be able to see if on my sandbox account dashboard). Or perhaps a way to view
    the data records (similar to say a php-mysql-admin area, where you can query databases).

Thanks

Hi @Mathew_Smaling,

Were you trying to validate a card that is already in the system or a new one that you wish to add? There are two XML-RPC methods named the same with different parameters so I was wondering which you were using - validate new card or validate existing card.

As for your other questions, the easiest way to tell what the method signature is would be using the docs that I linked to above for the validate new/existing card. It shows all of the required and optional parameters with their expected types.

You can view credit card validation status on the contact page inside of Infusionsoft. If you scroll down a bit and go to the “Orders” tab, the top section will list all credit cards tied to the contact along with validation status and message.

Thanks for the reply…

I’m using the : “InvoiceService.validateCreditCard” method.

Trying to get the process doing of retrieving the cardId from via validated credit card. Unforuntately, I’m unable to duplicate the process via the https://keys.developer.infusionsoft.com/io-docs page. I get invalid method error, that is using the: “InvoiceService.validateCreditCard” and the “DataService.query” forms. I am able to use the InvoiceService.locateExistingCard and get the same result (0), so perhaps there is somethign wrong with my xml payload.

Is there an equivalent version of these methods on the REST API? That is for:

  • InvoiceService.locateExistingCard
  • DataService.query

Thanks

Apologies for the confusion but there are two XML-RPC methods called InvoiceService.validateCreditCard, one takes an actual credit card number, type, expiration date, etc while the other takes a credit card id for an existing credit card in the system.

Can you post your XML payload omitting all sensitive data?

Unfortunately there currently isn’t a way to access credit cards via the REST API.

Thanks for your help.

The payloads (and responses) consist of:
(0.0122) REQUEST: https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=2zy5m5x9nyp2uw6xeawexrfe
Method: post
Headers : Array
(
[0] => Content-Type: application/xml
)

Body: <?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>InvoiceService.validateCreditCard</methodName><params><param><value><string>w35hFGqCgZ</string></value></param><param><value><struct><member><name>CardType</name><value><string>Visa</string></value></member><member><name>ContactId</name><value><int>2</int></value></member><member><name>CardNumber</name><value><string>XXXXXXXXXXXX5515</string></value></member><member><name>ExpirationMonth</name><value><int>XX</int></value></member><member><name>ExpirationYear</name><value><int>XXXX</int></value></member><member><name>CVV2</name><value><string>XXX</string></value></member></struct></value></param></params></methodCall>
Response:<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><struct><member><name>Message</name><value>Validated 3/29/2018</value></member><member><name>Valid</name><value>true</value></member></struct></value></param></params></methodResponse>
(1.0125) REQUEST: https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=2zy5m5x9nyp2uw6xeawexrfe
Method: post
Headers : Array
(
[0] => Content-Type: application/xml
)

Body: <?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>InvoiceService.locateExistingCard</methodName><params><param><value><string>w35hFGqCgZ</string></value></param><param><value><int>2</int></value></param><param><value><string>5515</string></value></param></params></methodCall>
Response:<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><i4>0</i4></value></param></params></methodResponse>

I am using a sandbox account. The CC info I submit, is from my own personal cards. Not sure if this has any bearing on the backend logic (or not).

The “Body:” is the request payload, and the Response is the response from the infusionsoft api. Thanks.

Thanks again for the help.

The InvoiceService.validateCreditCard method that you are calling doesn’t actually add a credit card to the system, it simply validates whether the provided card info is valid or not. You’ll need to use DataService.add to add a credit card to the system. See the Credit Card section in the table schema documentation for information about which fields are available.