cancel
Showing results for 
Search instead for 
Did you mean: 

getCustomerPaymentProfileList() in Java SDK

Thought I'd post this so perhaps someone else doesn't have to suffer thru it. If you're using the Java SDK (anet_java_sdk-1.4.6) and attempting to get the payment profiles associated with a customer profile you'll only get the Credit Card ones currently. Here's some partial code for the request:

 

net.authorize.cim.Transaction transaction = merchant.createCIMTransaction(TransactionType.GET_CUSTOMER_PROFILE);
transaction.setCustomerProfileId(customerProfileId);

Result<Transaction> result = (Result<Transaction>)merchant.postTransaction(transaction);
Iterator itr = result.getCustomerPaymentProfileList().iterator();

 

To get the Bank Account profiles you'll need to fix the source code. In net.authorize.cim.Result.java it's missing the line in bold below:
 
	private void importPaymentInfo(Element root_el, PaymentProfile paymentProfile) {
		NodeList payment_list = root_el.getElementsByTagName(AuthNetField.ELEMENT_PAYMENT.getFieldName());

		if(payment_list.getLength() == 0) {
			return;
		}

		Element payment_el = (Element)payment_list.item(0);
		NodeList credit_card_list = payment_el.getElementsByTagName(AuthNetField.ELEMENT_CREDIT_CARD.getFieldName());
		if(credit_card_list.getLength() != 0) {
			Element credit_card_el = (Element)credit_card_list.item(0);
			CreditCard creditCard = CreditCard.createCreditCard();
			creditCard.setMaskedCreditCardNumber(getElementText(credit_card_el, AuthNetField.ELEMENT_CREDIT_CARD_NUMBER.getFieldName()));
			creditCard.setExpirationDate(getElementText(credit_card_el, AuthNetField.ELEMENT_CREDIT_CARD_EXPIRY.getFieldName()));

			paymentProfile.addPayment(Payment.createPayment(creditCard));
		}

		NodeList bank_account_list = payment_el.getElementsByTagName(AuthNetField.ELEMENT_BANK_ACCOUNT.getFieldName());
		if(bank_account_list.getLength() != 0) {
			Element bank_account_el = (Element)bank_account_list.item(0);
			BankAccount bankAccount = BankAccount.createBankAccount();
			bankAccount.setBankAccountType(BankAccountType.findByValue(
					getElementText(bank_account_el, AuthNetField.ELEMENT_ACCOUNT_TYPE.getFieldName())));
			bankAccount.setRoutingNumber(getElementText(bank_account_el, AuthNetField.ELEMENT_ROUTING_NUMBER.getFieldName()));
			bankAccount.setBankAccountNumber(getElementText(bank_account_el, AuthNetField.ELEMENT_ACCOUNT_NUMBER.getFieldName()));
			bankAccount.setBankAccountName(getElementText(bank_account_el, AuthNetField.ELEMENT_NAME_ON_ACCOUNT.getFieldName()));
			bankAccount.setBankName(getElementText(bank_account_el, AuthNetField.ELEMENT_BANK_NAME.getFieldName()));

			paymentProfile.addPayment(Payment.createPayment(bankAccount));
		}
	}

 

It may not show up that well in the code but I added the last line 

 

paymentProfile.addPayment(Payment.createPayment(bankAccount));

gregberger
Member
1 REPLY 1

Hi regberger,

 

Thank you for posting this. We will make sure to pass this to our developers for further review.

 

Thanks,

Joy

Joy
Administrator Administrator
Administrator