sslpaypalpaypal-soap

(400)Bad Request in PayPalAPISoapBindingStub.transactionSearch


After having a SSLHandshakeException using the paypal SOAP API (TransactionSearch), I have updated paypal_base.jar to the version indicated by paypal in the following link:

https://github.com/paypal/TLS-update

I have fixed that problem, however I have the following one:

mar 31, 2016 6:56:26 PM com.paypal.sdk.core.soap.SOAPAPICaller call
INFORMACIÓN: transactionSearch sent
mar 31, 2016 6:56:28 PM com.paypal.sdk.exceptions.TransactionException <init>
GRAVE: (400)Bad Request
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
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 t.main(t.java:42)
Caused by: (400)Bad Request
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.paypal.soap.api.PayPalAPISoapBindingStub.transactionSearch(Unknown Source)
... 8 more

Any clue about this problem?

UPDATE:

This is the request:

TransactionSearchRequestType request = new TransactionSearchRequestType();
    request.setStartDate(new GregorianCalendar());

    CallerServices caller = new CallerServices();
    try {
        APIProfile profile = ProfileFactory.createSignatureAPIProfile();
        profile.setAPIUsername("*********");
        profile.setAPIPassword("*************");
        profile.setSignature("*******************************************");
        profile.setEnvironment("sandbox");
        caller.setAPIProfile(profile);

        TransactionSearchResponseType response = (TransactionSearchResponseType) caller.call("TransactionSearch", request);

    } catch (PayPalException e) {
        System.out.println("PaypalCaller: Error calling Paypal webservice " + e);
    } catch (Exception e) {
        System.out.println(e.getMessage() + e);
    } catch (Throwable e) {
        System.out.println(e.getMessage() + e);
    }

Solution

  • I was able to solve the problem. I have used another paypal library that can be used to do the same:

    https://github.com/paypal/merchant-sdk-java

    Code:

    TransactionSearchReq txnreq = new TransactionSearchReq();
    TransactionSearchRequestType requestType = new TransactionSearchRequestType();
        requestType.setStartDate("2016-03-28T00:00:00.000Z");
        txnreq.setTransactionSearchRequest(requestType);
    
        PayPalAPIInterfaceServiceService service;
    
        try {
            Map<String, String> sdkConfig = new HashMap<String, String>();
    
            sdkConfig.put("mode", "sandbox");
            sdkConfig.put("acct1.UserName", "***********");
            sdkConfig.put("acct1.Password", "***************");
            sdkConfig.put("acct1.Signature","*****************************");
    
            service = new PayPalAPIInterfaceServiceService(sdkConfig);
            TransactionSearchResponseType response = service.transactionSearch(txnreq);
    
        } catch (Exception e) {
            e.printStackTrace();
        }