简体   繁体   English

使用paypal api时无法建立SOAP连接

[英]Unable to establish SOAP connection while using paypal api

I am tryin gto use paypal soap client, and performing setExpressCheckout method with Paypal Express Checkout with Java reference. 我正在尝试使用paypal soap客户端,并使用带有Java引用的Paypal Express Checkout执行setExpressCheckout方法。

So here I am using only paypal-base.jar and paypal-stubs.jar instead of soap client (generated from wsdl). 所以这里我只使用paypal-base.jar和paypal-stubs.jar而不是soap客户端(从wsdl生成)。

    public class SetExpressCheckoutService{

        private static Logger log = Logger.getLogger(SetExpressCheckoutService.class);

        public static void main(String[] args){
            SetExpressCheckoutService setExpressCheckoutService = new SetExpressCheckoutService();

            //the parameters for the service
            Long userId = 5l;
            String amount = "25";
            String returnURL = "http://localhost:8080/integratingstuff-paypal/return_after_payment.xhtml";
            String cancelURL = "http://localhost:8080/integratingstuff-paypal/cancel_payment.xhtml";
            PaymentActionCodeType paymentAction = PaymentActionCodeType.Sale;
            CurrencyCodeType currencyCode = CurrencyCodeType.EUR;

            try {
                //calling the service, setting up the checkoutpage
                String token = setExpressCheckoutService.setExpressCheckout(userId, amount, currencyCode, returnURL,cancelURL,paymentAction);
                log.info("Url to redirect to: https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=" + token);
            } catch (PayPalException e) {
                log.error(e);
            }
        }

        public String setExpressCheckout(Long userId, String paymentAmount,
                CurrencyCodeType currencyCodeType, String returnURL, String cancelURL,
                    PaymentActionCodeType paymentAction) throws PayPalException{



CallerServices caller = new CallerServices();

            //construct and set the profile, these are the credentials we establish as "the shop" with Paypal
            APIProfile profile = ProfileFactory.createSignatureAPIProfile();
            profile.setAPIUsername("sdk-three_api1.sdk.com");
            profile.setAPIPassword("QFZCWN5HZM8VBG7Q");
            profile.setSignature("AVGidzoSQiGWu.lGj3z15HLczXaaAcK6imHawrjefqgclVwBe8imgCHZ");
            profile.setEnvironment("sandbox");
            caller.setAPIProfile(profile);

            //construct the request
            SetExpressCheckoutRequestType pprequest = new SetExpressCheckoutRequestType();
            pprequest.setVersion("63.0");

            //construct the details for the request
            SetExpressCheckoutRequestDetailsType details = new SetExpressCheckoutRequestDetailsType();

            PaymentDetailsType paymentDetails = new PaymentDetailsType();
            paymentDetails.setOrderDescription("Integrating Stuff Test Order");
            paymentDetails.setInvoiceID("INVOICE-" + Math.random());
            BasicAmountType orderTotal = new BasicAmountType(paymentAmount);
            orderTotal.setCurrencyID(currencyCodeType);
            paymentDetails.setOrderTotal(orderTotal);
            paymentDetails.setPaymentAction(paymentAction);
            details.setPaymentDetails(new PaymentDetailsType[]{paymentDetails});

            details.setReturnURL(returnURL);
            details.setCancelURL(cancelURL);
            details.setCustom(userId.toString());

            //set the details on the request
            pprequest.setSetExpressCheckoutRequestDetails(details);

            //call the actual webservice, passing the constructed request
            SetExpressCheckoutResponseType ppresponse = (SetExpressCheckoutResponseType) caller.call("SetExpressCheckout", pprequest);

            //get the token from the response
            return ppresponse.getToken();
        }
    }

I have tried to execute this method, but I am getting exception as 我试图执行此方法,但我得到例外
com.paypal.sdk.exceptions.FatalException: Unable to establish SOAP connection

Caused by: java.lang.NullPointerException at com.paypal.sdk.core.APICallerBase.getEndpointUrl(APICallerBase.java:296) 引起:com.paypal.sdk.core.APICallerBase.getEndpointUrl(APICallerBase.java:296)中的java.lang.NullPointerException

Full stacktrace is : 完整的堆栈跟踪是:

com.paypal.sdk.exceptions.FatalException: Unable to establish SOAP connection
        at com.paypal.sdk.core.soap.SOAPAPICaller.setupConnection(SOAPAPICaller.java:292)
        at com.paypal.sdk.services.CallerServices.setAPIProfile(CallerServices.java:112)
        at com.imedicor.liferay.organizations.util.PaypalService.setExpressCheckout(PaypalService.java:92)
        at com.imedicor.liferay.organizations.util.PaypalService.testing(PaypalService.java:43)
        at org.apache.jsp.organization_005fdetails_jsp._jspService(organization_005fdetails_jsp.java:500)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
        at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:323)
        at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:134)
        at com.imedicor.liferay.organizations.portlet.OrganizationPortlet.doView(OrganizationPortlet.java:83)
        at com.liferay.portal.kernel.portlet.LiferayPortlet.doDispatch(LiferayPortlet.java:218)
        at com.liferay.util.bridges.mvc.MVCPortlet.doDispatch(MVCPortlet.java:319)
        at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
        at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
        at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
        at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:111)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
        at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:534)
        at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:607)
        at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:359)
        at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1207)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:97)
        at com.liferay.portal.servlet.PACLRequestDispatcherWrapper.doDispatch(PACLRequestDispatcherWrapper.java:90)
        at com.liferay.portal.servlet.PACLRequestDispatcherWrapper.include(PACLRequestDispatcherWrapper.java:54)
        at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:5158)
        at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:1569)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:165)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:203)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:190)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:87)
        at com.liferay.portlet.layoutconfiguration.util.velocity.TemplateProcessor.processMax(TemplateProcessor.java:165)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
        at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
        at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:342)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
        at org.apache.velocity.Template.merge(Template.java:328)
        at org.apache.velocity.Template.merge(Template.java:235)
        at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381)
        at com.liferay.portal.velocity.VelocityEngineImpl.mergeTemplate(VelocityEngineImpl.java:264)
        at com.liferay.portal.kernel.velocity.VelocityEngineUtil.mergeTemplate(VelocityEngineUtil.java:73)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.doProcessTemplate(RuntimePortletImpl.java:499)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.doDispatch(RuntimePortletImpl.java:394)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processTemplate(RuntimePortletImpl.java:228)
        at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:125)
        at org.apache.jsp.html.portal.layout.view.control_005fpanel_jsp._jspService(control_005fpanel_jsp.java:676)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
        at com.liferay.portal.action.LayoutAction.includeLayoutContent(LayoutAction.java:468)
        at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:735)
        at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:249)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
        at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:187)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:560)
        at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:537)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:294)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
        at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:138)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:335)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:123)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:294)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:241)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:246)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:80)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:163)
        at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:216)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:57)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
        at com.paypal.sdk.core.APICallerBase.getEndpointUrl(APICallerBase.java:296)
        at com.paypal.sdk.core.soap.SOAPAPICaller.setupConnection(SOAPAPICaller.java:193)

So I am getting this exception due to not set end point url? 因为没有设置终点url,我得到这个例外?

How to set end point url in this case ? 在这种情况下如何设置端点网址?

I have also tried to add config for endpoint in following way at starting of above method . 我也尝试在上面的方法启动时以下列方式添加端点配置。

Map<String, String> sdkConfig = new HashMap<String, String>();
        sdkConfig.put("mode", "sandbox");
        sdkConfig.put("acct1.UserName", "sdk-three_api1.sdk.com");
        sdkConfig.put("acct1.Password", "QFZCWN5HZM8VBG7Q");
        sdkConfig.put("acct1.Signature","AVGidzoSQiGWu.lGj3z15HLczXaaAcK6imHawrjefqgclVwBe8imgCHZ");
        PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(sdkConfig);

but still I am getting same exception. 但我仍然得到同样的例外。

Please guide me in this context. 请在这方面指导我。

Thanks, 谢谢,

Ok, so I didn't managed to find out why CallerService throws mentioned exception because even after decompiling mentioned paypal_base.jar , the code is quite cumbersome and it's hard to find out what's going on under the hood. 好吧,所以我没有设法找出为什么CallerService抛出提到的异常,因为即使在反编译提到paypal_base.jar ,代码也非常麻烦,而且很难找到引擎盖下的内容。 It looks like it's outdated or something, because I can't find reference to this JAR anywhere on the net except for several places. 看起来它已经过时了,因为除了几个地方,我无法在网上的任何地方找到对这个JAR的引用。

But I really suggest you to stick to original documentation provided by PayPal. 但我真的建议你坚持使用PayPal提供的原始文档。 I tried myself and here's what I've found: 我试过自己,这就是我发现的:

  1. Follow the Paypal API SDK and Downloads link from mentioned article, then click Merchant link under Classic APIs category (if you dig on the net, you'll find that PayPal Merchant API should be used for ExpressCheckout requests). 按照提到的文章中的Paypal API SDK和下载链接,然后单击Classic APIs类别下的Merchant链接(如果您在网上挖掘,您会发现PayPal Merchant API应该用于ExpressCheckout请求)。 Click Java button above and download SDK using either Maven (preferred) or simply using download link on the bottom of the page. 单击上面的Java按钮,使用Maven (首选)或仅使用页面底部的下载链接下载SDK。

  2. Add downloaded JAR(s) to your project and remove other PayPal JARs because downloaded Merchant API jar should contain all necessary classes. 将下载的JAR添加到您的项目并删除其他PayPal JAR,因为下载的Merchant API jar应包含所有必需的类。

  3. Now everything is up to guessing :) So in your code snippet above you have formed instance of SetExpressCheckoutRequestType and you need some invocation code which takes your instance of SetExpressCheckoutRequestType and returns instance of SetExpressCheckoutResponseType . 现在一切都在猜测:)所以在上面的代码片段中你已经形成了SetExpressCheckoutRequestType实例,你需要some invocation code来获取你的SetExpressCheckoutRequestType实例并返回SetExpressCheckoutResponseType实例。
  4. I used feature Search -> References -> Workspace in Eclipse to find where SetExpressCheckoutRequestType is used in Merchant API jar. 我在Eclipse中使用了功能Search -> References -> Workspace来查找在Merchant API jar中使用SetExpressCheckoutRequestType位置。 This search showed that (besides other places) there is class named SetExpressCheckoutReq which has method setSetExpressCheckoutRequest(SetExpressCheckoutRequestType) 这个搜索显示(除了其他地方)有一个名为SetExpressCheckoutReq类,它有方法setSetExpressCheckoutRequest(SetExpressCheckoutRequestType)
  5. Then I again used search feature to search for usages of SetExpressCheckoutReq class and found that there is class PayPalAPIInterfaceServiceService with method setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq) which returns needed SetExpressCheckoutResponseType . 然后我再次使用搜索功能搜索SetExpressCheckoutReq类的用法,发现有类PayPalAPIInterfaceServiceService ,方法为setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq) ,返回所需的SetExpressCheckoutResponseType
  6. Right next to setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq) method, there is method which takes also ICredential parameter and has following signature: setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq, ICredential credential) setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq)方法旁边,有一个方法,它也采用ICredential参数并具有以下签名: setExpressCheckout(SetExpressCheckoutReq setExpressCheckoutReq, ICredential credential)
  7. Again using Eclipse I looked for classes that implement ICredential interface and found that there is class named SignatureCredential with constructor taking 3 parameters: username, password, signature. 再次使用Eclipse我查找了实现ICredential接口的类,发现有一个名为SignatureCredential类,构造函数有3个参数:username,password,signature。 And this seems to me the way to go. 这对我来说似乎还有很长的路要走。

    So, very approximately - code snippet should now look like: 所以,非常近似 - 代码片段现在应该如下所示:

     final SetExpressCheckoutRequestType ppRequest = ...; // here you create your request as in code snippet above final Properties serviceConfigurationProperties = ...; // bookmark #1 final PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(serviceConfigurationProperties); final SetExpressCheckoutReq request = new SetExpressCheckoutReq(); request.setSetExpressCheckoutRequest(ppRequest); final ICredentials credentials = new SignatureCredentials(username, password, signature); final SetExpressCheckoutResponseType response = service.setExpressCheckout(request, credentials); 

Bookmark #1 : one should pass Properties instance with configurations of service. Bookmark #1 :应该通过服务配置传递Properties实例。 To find out what properties should be specified, one should google for it and try to stick to original PayPal docs rather than 3rd party blogs :) If one looks in Javadocs of PayPalAPIInterfaceServiceService class, he/she finds that there is file mentioned "sdk_config.properties". 要找出应该指定哪些属性,应该谷歌为它并尝试坚持原始的PayPal文档而不是第三方博客:)如果在PayPalAPIInterfaceServiceService类的Javadocs中PayPalAPIInterfaceServiceService ,他/她发现有文件提到“sdk_config。属性”。 After googling for it, I've found several examples of that file: Example #1 , Example #2 在谷歌搜索之后,我发现了该文件的几个示例: 示例#1示例#2

Please note that this is not complete solution - it's rather like a collection of hints which I used before to use PayPal SOAP API. 请注意,这不是完整的解决方案 - 它更像是我以前用过PayPal SOAP API的一系列提示。 This API is changing quite often with not concise documentation, so I really suggest to download Merchant API jar with sourcecode and whenever some problem arises - look into code as well - this often clarifies a lot. 这个API经常变化而不是简洁的文档,所以我真的建议使用源代码下载Merchant API jar,并且每当出现问题时 - 查看代码 - 这通常会澄清很多。 Please also stick to original documentation of PayPal: 还请坚持PayPal的原始文档:

  1. PayPal SOAP API Basics PayPal SOAP API基础知识
  2. PayPal Merchant SDK on GitHub GitHub上的PayPal商家SDK

Also, in case if you don't have experience with Web Service clients in Java, I would recommend you to try to implement some simple one using tutorials on the net - this may clarify a lot. 此外,如果您没有使用Java的Web服务客户端的经验,我建议您尝试使用网络上的教程来实现一些简单的 - 这可能会澄清很多。

Sorry again for not posting full and concise code snippet - I haven't worked with PayPal for 2 years from now and at that time I spent work-week to find out all the details and set it up and running. 再次抱歉没有发布完整而简洁的代码片段 - 我从未与PayPal合作2年,当时我花了一周时间查找所有细节并设置并运行。 Please post questions - I will try to answer them when I have time 请发帖问题 - 我会在有空的时候尝试回答

Hope this helps... 希望这可以帮助...

EDIT 编辑

Concerning response.getAck() returning FAILURE - I also experienced such problems in the past. 关于response.getAck()返回FAILURE - 我过去也经历过这样的问题。 I solved that by experimenting with parameters sent in the request - PayPal was very sensitive to those and in case if any parameter was omitted or had not correct value, simply returned FAILURE . 我通过试验请求中发送的参数解决了这个问题 - PayPal对这些参数非常敏感,如果省略任何参数或者没有正确的值,只需返回FAILURE

One can find full list of parameters here: PayPal SetExpressCheckout SOAP API documentation 可以在这里找到完整的参数列表: PayPal SetExpressCheckout SOAP API文档

Please also note, that version 2.5.106 of Merchant SDK uses API of version 106.0 . 另请注意, Merchant SDK 2.5.106版本使用的是版本106.0 API。

Hope this helps... 希望这可以帮助...

You need to set the endpoint url 您需要设置端点URL

    service.EndPoint=https://api-3t.paypal.com/2.0

In addition you probably need a couple more settings: 此外,您可能还需要更多设置:

    service.Binding=SOAP
    service.EndPoint=https://api-3t.paypal.com/2.0
    service.RedirectURL=https://www.paypal.com/webscr&cmd=
    service.DevCentralURL=https://developer.paypal.com
    service.IPNEndpoint=https://www.paypal.com/cgi-bin/webscr

If you are using the sandbox use the following settings: 如果您使用沙箱,请使用以下设置:

   service.Binding=SOAP
   service.EndPoint=https://api-3t.sandbox.paypal.com/2.0
   service.RedirectURL=https://www.sandbox.paypal.com/webscr&cmd=
   service.DevCentralURL=https://developer.paypal.com
   service.IPNEndpoint=https://www.sandbox.paypal.com/cgi-bin/webscr

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM