【问题标题】:403 Forbidden during setExpressCheckout403 在 setExpressCheckout 期间被禁止
【发布时间】:2014-04-13 07:24:00
【问题描述】:

我在使用setExpressCheckout 方法在沙盒帐户中的Expresscheckout 期间收到以下错误。我正在使用SOAPpaypal_base.jarpaypal_stubs.jar

PM com.paypal.sdk.exceptions.TransactionException <init>
SEVERE: (403)Forbidden

有人帮我解决这个问题吗?

【问题讨论】:

    标签: paypal paypal-sandbox


    【解决方案1】:

    请参考https://www.paypal-notify.com/eventnotification/event_details?eventId=4283。 您可以尝试在axis中使用“org.apache.axis.transport.http.CommonsHTTPSender”来支持http1.1。您必须使用轴 1.3 或更多轴,因为 1.2 存在 https 连接错误

    【讨论】:

    • 已经在使用axis1.4,但我遇到了同样的错误,还尝试使用axis 1.3 谁能帮我解决这个问题?
    【解决方案2】:

    将 client-config.wsdd 添加到您的类路径以使用 http1.1。您可以将 log4j 设置为调试级别,以查看您现在是否使用 http 1.0。如果没有,这对您没有帮助。 文件内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <deployment name="defaultClientConfig"
                xmlns="http://xml.apache.org/axis/wsdd/"
                xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
        <transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender">
            <parameter name="PROTOCOL">HTTP/1.1</parameter>
        </transport>
        <transport name="local" pivot="java:org.apache.axis.transport.local.LocalSender"/>
        <transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender"/>
    </deployment>
    

    【讨论】:

    • 我在 com.senthil.SetExpressCheckoutService.main(SetExpressCheckoutService.java:35) 收到以下错误 原因:(403)Forbidden at org.apache.axis.transport.http.HTTPSender.readFromSocket( HTTPSender.java:744) 在 org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) 在 org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    • 我想这样做,但有人能解释一下如何“将它包含在类路径中”吗?
    【解决方案3】:

    这就像上面所有答案的摘要以及其他参考。

    正如 user3405529 所说,点击链接了解您的问题。

    使用 HTTP 1.0 协议的商家。

    这对于所有使用轴 1.4 的旧 PayPal API 的人来说都很常见

    这是我项目中的问题。

    我参考了这个链接以获得更多细节来理解和解决问题

    http://marc.info/?l=axis-user&m=119144869612056

    有四种方法可以解决这个问题

    1)修改axis源代码使用HTTP 1.1协议

        String httpver = msgContext.getStrProp(MessageContext.HTTP_TRANSPORT_VERSION);
        if (null == httpver) {
             httpver = HTTPConstants.HEADER_PROTOCOL_V11;
        }
        //httpver = httpver.trim();
        //if (httpver.equals(HTTPConstants.HEADER_PROTOCOL_V11)) {
        //   http10 = false;
        //}
    

    或 将消息上下文 msgContext.setStrProp(..) 设置为 HTTPConstants.HEADER_PROTOCOL_V11

    然后重建axis并维护自己的源代码以供参考

    2)根据 user3405529 在类路径中使用 client-config.wsdd 传输中的 java:org.apache.axis.transport.http.CommonsHTTPSender 标记

    我对此更改进行了测试,它按预期工作。

    但这两种方法都默认使用 HTTP 1.1。在我们的项目中,我们还没有为 HTTP 协议版本的这种变化做好准备。

    http://www2.research.att.com/~bala/papers/h0vh1.html查看更多详情

    3)更新 PayPal 存根并重建它以供使用 - 我不尝试。

    4)将 PayPal SDK 更新到最新版本...

    我们使用更新的 PayPal SDK。将来会有所帮助。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多