I have been trying to create a customer update in my CIM code. I just need to allow the customer to update their payment billing information and not the stored credit card information. Basically, if there billing address would change they need to be able to update that information.
My problem is that in CIM you cannot retrieve an unmasked number and also the expiration date is not returned or not return correctly. So in posting just the billing information without a credit card the transaction fails with either of two errors.
Credit Card Number is invalid.
Credit Card has expired. (Date defaults to 12/31/1969)
So my question is, can you post without ever having to re-enter the credit card information in CIM. If I populate and set the creditCard in Java CIM everything works fine. But, I don't want teh customer to have to re-enter the card information if they don't have to.
Which document and page did you see this in. This is the XML, Soap Documentation and I have looked through that I am using the Java API classes.
If you check the board there are responses in regard to this from the moderator. Which indicates that it is not possible., I am looking for a definitive anwer or athe correct process.
The PaymentProfile class when submitted to the gateway expects both the billing info and credit card fields.
Page 63, 64 on the Soap and page 79 on the XML.
Do a get PaymentProfile first and then use the info for the update.
Not sure what do you mean it not possible. Maybe they find have bug in the SDK? Download the source and fix it or use the sample code.
I know that doesn't work as the information in the CreditCard Object is masked string. That is the obvious choice to query the Payment Profile and then store and update the customer payment infromation. When resubmitting the same object you will get either one of the errors above. The only way I can get this to work is ask to resubmit the CC number and expiration date.
In regard to the Soap and XML pdf there is noreference to what you are saying.
I just try in based on the C# CIM sample code. Updating a fax# on a existing user.
Do GetCustomerPaymentProfile WS
Copy the data over to a New PaymentProfile. Both MaskCC and billTo.
Update the fax#
Do UpdateCustomerPaymentProfile. Result: Successful.
Check the CIM data on the my test merchant account. And it did get changed.
When you said resubmitting the same object. You did create a new CreditCardType for UpdateCustomerPaymentProfile and not using the CreditCardMaskedType from the GetCustomerPaymentProfile?
Nope, just following how the Unit Test code is written in java. Since the test code does both query and updates to payment profiles I assume I could follow what that process is.
I will try creating a new Credit Card and Card Type object adding in the billingInfo change as you suggest. Then post it to the gateway and see what happens.
It appears from the SDK that when passing a masked expiration date. The SDK will convert that to a date Date(0) which is being posted to the gateway. The Date(0) in most cases returns 12/1969 which causes the test gateway to reject any update with an error indicating expired date. Technical support hasn't been able to help so does anyone know what the XML date should be that is posted to the gateway. I need Authorize to ignore the credit card as I just want to update the address info only.