2016-03-31 3 views
0

После того, как SSLHandshakeException используя PayPal SOAP API (TransactionSearch), я обновил paypal_base.jar до версии, указанной в PayPal по следующей ссылке:(400) Bad Request в PayPalAPISoapBindingStub.transactionSearch

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

I устранили эту проблему, однако у меня есть следующая:

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 

Любые подсказки об этой проблеме?

UPDATE:

Это запрос:

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); 
    } 
+0

пожалуйста, напишите ваш запрос API и ответ. Исходя из этой ошибки, он выглядит как плохой запрос API. –

+0

Скопирую код. –

+0

основе https://developer.paypal.com/docs/classic/api/merchant/TransactionSearch_API_Operation_NVP/, вам необходимо пройти STARTDATE параметр в запросе API, –

ответ

0

Я был в состоянии решить эту проблему. Я использовал другую PAYPAL библиотеку, которую можно использовать, чтобы сделать то же самое:

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

Код:

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(); 
    }