user5778069
user5778069

Reputation:

Auth.net Create Customer Payment Profile - E00040 - The record cannot be found

I am new to the Authorize.net using Java SDK. I am trying to create the Customer Profile using CreateCustomerPaymentProfile API.

The following error is coming:

06/24/16 21:24:36,362:  INFO [pool-1-thread-1] (net.authorize.util.LogHelper:24) - Use Proxy: 'false'
Failed to create customer payment profile:  ERROR
~~~~ Details Are ~~~~
Message Code  : E00040
Message Text  : The record cannot be found.

The following API:

import java.util.List;

import net.authorize.Environment;
import net.authorize.api.contract.v1.CreateCustomerPaymentProfileRequest;
import net.authorize.api.contract.v1.CreateCustomerPaymentProfileResponse;
import net.authorize.api.contract.v1.CreditCardType;
import net.authorize.api.contract.v1.CustomerAddressType;
import net.authorize.api.contract.v1.CustomerPaymentProfileType;
import net.authorize.api.contract.v1.MerchantAuthenticationType;
import net.authorize.api.contract.v1.MessageTypeEnum;
import net.authorize.api.contract.v1.MessagesType.Message;
import net.authorize.api.contract.v1.PaymentType;
import net.authorize.api.controller.CreateCustomerPaymentProfileController;
import net.authorize.api.controller.base.ApiOperationBase;

public class CreateCustomerPaymentProfile {
    public static final String apiLoginID= "72mNC7gyq";
    public static final String transactionKey= "**";

    private static final String customerProfileId = "36731856";

    public static void main(String[] args) {
        ApiOperationBase.setEnvironment(Environment.SANDBOX);

        MerchantAuthenticationType merchantAuthenticationType  = new MerchantAuthenticationType() ;
        merchantAuthenticationType.setName(apiLoginID);
        merchantAuthenticationType.setTransactionKey(transactionKey);
        ApiOperationBase.setMerchantAuthentication(merchantAuthenticationType);

        //private String getPaymentDetails(MerchantAuthenticationType merchantAuthentication, String customerprofileId, ValidationModeEnum validationMode) {
        CreateCustomerPaymentProfileRequest apiRequest = new CreateCustomerPaymentProfileRequest();
        apiRequest.setMerchantAuthentication(merchantAuthenticationType);
        apiRequest.setCustomerProfileId(customerProfileId); 

        //customer address
        CustomerAddressType customerAddress = new CustomerAddressType();
        customerAddress.setFirstName("test");
        customerAddress.setLastName("scenario");
        customerAddress.setAddress("123 Main Street");
        customerAddress.setCity("Bellevue");
        customerAddress.setState("WA");
        customerAddress.setZip("98004");
        customerAddress.setCountry("USA");
        customerAddress.setPhoneNumber("000-000-0000");

        //credit card details
        CreditCardType creditCard = new CreditCardType();
        creditCard.setCardNumber("4111111111111111");
        creditCard.setExpirationDate("2023-12");
        creditCard.setCardCode("122");

        CustomerPaymentProfileType profile = new CustomerPaymentProfileType();
        profile.setBillTo(customerAddress);

        PaymentType payment = new PaymentType();
        payment.setCreditCard(creditCard);
        profile.setPayment(payment);

        apiRequest.setPaymentProfile(profile);

        CreateCustomerPaymentProfileController controller = new CreateCustomerPaymentProfileController(apiRequest);
        controller.execute();

        CreateCustomerPaymentProfileResponse response = new CreateCustomerPaymentProfileResponse();
        response = controller.getApiResponse();
        if (response != null) {
            if (response.getMessages().getResultCode() == MessageTypeEnum.OK) {

                System.out.println(response.getCustomerPaymentProfileId());
                System.out.println(response.getMessages().getMessage().get(0).getCode());
                System.out.println(response.getMessages().getMessage().get(0).getText());
                if(response.getValidationDirectResponse() != null)
                    System.out.println(response.getValidationDirectResponse());
            }
            else {
                System.out.println("Failed to create customer payment profile:  " + response.getMessages().getResultCode());
                System.out.println("~~~~ Details Are ~~~~");
                List<Message> messages = response.getMessages().getMessage();
                for (Message message : messages) {
                    System.out.println("Message Code  : "+message.getCode());
                    System.out.println("Message Text  : "+message.getText());
                }
            }
        }
    }
}

Upvotes: 1

Views: 3142

Answers (1)

KiKMak
KiKMak

Reputation: 830

You cannot create a customer payment profile without a customer profile.

In the code you have given String customerProfileId = "36731856";, you are getting error E00040 as the Customer profile with id 36731856 doesn't exist.

You are unclear on what you want. If you want to create a customer profile, use CreateCustomerProfile API

Here, is the GitHub sample code for it : https://github.com/AuthorizeNet/sample-code-java/blob/master/src/main/java/net/authorize/sample/CustomerProfiles/CreateCustomerProfile.java

Upvotes: 3

Related Questions