开发者

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开发者_如何学Python.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.

Java paypal call never returns result


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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜