d-man
d-man

Reputation: 58073

Java paypal call never returns result

Java I am using paypal website pro sdk SOAP calls problem is following line of code returns exception after long time

response = (CreateRecurringPaymentsProfileResponseType) caller.call("CreateRecurringPaymentsProfile", request);

Exception is as follows.

java.net.SocketException: Connection reset
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.paypal.sdk.core.soap.SOAPAPICaller.callSOAP(SOAPAPICaller.java:462)
    at com.paypal.sdk.core.soap.SOAPAPICaller.call(SOAPAPICaller.java:382)
    at com.paypal.sdk.services.CallerServices.call(CallerServices.java:125)
    at CreateRecurringPaymentsProfile.callCreateRecurringPaymentsProfileAPI(CreateRecurringPaymentsProfile.java:85)
    at CreateRecurringPaymentsProfile.run(CreateRecurringPaymentsProfile.java:50)
    at CreateRecurringPaymentsProfile.main(CreateRecurringPaymentsProfile.java:22)
Caused by: java.net.SocketException: Connection reset

Do i need any certificate or some thing else currently i am using proxy in classes folder as follows

# This file contains the properties that needs to be set to make the API call via Proxy.


# To make use of proxy, change PROXY_SET to true, uncomment 
# PROXY_HOST and PROXY_PORT properties and set values as illustrated below.
# Note: Just remove the # symbol to uncomment. 
# Both  PROXY_HOST and PROXY_PORT needs to be set. PROXY_PORT should be a number.
# If any one of these properties are not set or invalid, proxy settings will be ignored
# and this information will be logged.

# PROXY_HOST : IP Address or Host Name of the proxy server
# PROXY_PORT: Port number of the proxy server

 PROXY_SET = true 

 PROXY_HOST=128.1.100.13
# eg: PROXY_HOST = 127.0.0.1

 PROXY_PORT=8080
# eg: PROXY_PORT = 808

# The following properties are optional.
# If your proxy need username and password to authenticate, 
# just uncomment the following two properties and set values as illustrated below.
# Note: Just remove the # symbol to uncomment. 

# PROXY_USERNAME=<your proxy username>
# eg: PROXY_USERNAME =test

# PROXY_PASSWORD=<your proxy password>
# eg: PROXY_PASSWORD =test

My Code as follows

public class CreateRecurringPaymentsProfile {
    CallerServices caller;

    public static void main(String[] args) {
        try {
            CreateRecurringPaymentsProfile sample = new CreateRecurringPaymentsProfile();
            sample.run();
        }
        catch (Exception e) {
            System.out.println("ERROR: " + e.getMessage());
        }
    }

    public CreateRecurringPaymentsProfile() throws PayPalException {
        caller = new CallerServices();

        /*
         WARNING: Do not embed plaintext credentials in your application code.
         Doing so is insecure and against best practices.
         Your API credentials must be handled securely. Please consider
         encrypting them for use in any production environment, and ensure
         that only authorized individuals may view or modify them.
         */

        APIProfile profile = ProfileFactory.createSignatureAPIProfile();
        profile.setAPIUsername("f_1299578055_biz_api1.gmail.com");
        profile.setAPIPassword("152578076");
        profile.setSignature("A.SG-Qkp9mcSwx0zh23u89eyCcWGA9MwmCgRlo2193..VNw06q1WbLTx");
        profile.setEnvironment("sandbox");
        caller.setAPIProfile(profile);
    }

    public void run() throws PayPalException {

        callCreateRecurringPaymentsProfileAPI();
        System.out.println("\nDone...");
    }



    public void callCreateRecurringPaymentsProfileAPI() throws PayPalException {
        System.out.println("\n########## Starting CreateRecurringPaymentsProfile ##########\n");

        //Replace the token value by actual value returned vy SetCustomerBillingAgreementAPI call
        String token="RP-8P463231B6009345R";
        String amount ="5.00";
        int BF=1;
        BillingPeriodType BP = BillingPeriodType.Day;

        CreateRecurringPaymentsProfileRequestType request=new CreateRecurringPaymentsProfileRequestType();
        CreateRecurringPaymentsProfileResponseType response=new CreateRecurringPaymentsProfileResponseType();
        request.setVersion("51.0");
        request.setCreateRecurringPaymentsProfileRequestDetails(new CreateRecurringPaymentsProfileRequestDetailsType())  ;
        request.getCreateRecurringPaymentsProfileRequestDetails().setToken(token);
        request.getCreateRecurringPaymentsProfileRequestDetails().setRecurringPaymentsProfileDetails(new RecurringPaymentsProfileDetailsType());

        Calendar start_date = Calendar.getInstance();
        start_date.set(2008,5,30);

        request.getCreateRecurringPaymentsProfileRequestDetails().getRecurringPaymentsProfileDetails().setBillingStartDate(start_date);
        request.getCreateRecurringPaymentsProfileRequestDetails().setScheduleDetails(new ScheduleDetailsType());
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().setPaymentPeriod(new BillingPeriodDetailsType());
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().setDescription("RP-Test- Java SOAP SDK");
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().getPaymentPeriod().setAmount(new BasicAmountType());
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().getPaymentPeriod().getAmount().set_value(amount) ;
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().getPaymentPeriod().getAmount().setCurrencyID(CurrencyCodeType.USD);
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().getPaymentPeriod().setBillingFrequency(BF);
        request.getCreateRecurringPaymentsProfileRequestDetails().getScheduleDetails().getPaymentPeriod().setBillingPeriod(BP);

        response = (CreateRecurringPaymentsProfileResponseType) caller.call("CreateRecurringPaymentsProfile", request);

        if (!response.getAck().equals(AckCodeType.Success) && !response.getAck().equals(AckCodeType.SuccessWithWarning)) {
            // do error processing
            System.out.println("\n########## CreateRecurringPaymentsProfile call failed ##########\n");
        } else {
            //success
            System.out.println("\n########## CreateRecurringPaymentsProfile call passed ##########\n");
        }


    }


}

In developer.paypal.com website i have created the following account.

EDIT Deleted for security reasons. enter image description here

Upvotes: 1

Views: 1651

Answers (2)

d-man
d-man

Reputation: 58073

It was a HTTP proxy problem. It was fixed when I removed the HTTP proxy from the network

Upvotes: 0

user617597
user617597

Reputation: 786

Can you check your java.policy file to check for any restrictions or otherwise, perhaps you need to add SocketPermission there to allow the application to connect

Upvotes: 2

Related Questions