我在使用Expresscheckout
方法的沙箱帐户setExpressCheckout
期间收到以下错误消息。我正在使用SOAP
库paypal_base.jar
,paypal_stubs.jar
PM com.paypal.sdk.exceptions.TransactionException <init>
SEVERE: (403)Forbidden
有人帮我解决这个问题吗?
答案 0 :(得分:1)
请参阅https://www.paypal-notify.com/eventnotification/event_details?eventId=4283。 您可以尝试在轴上使用“org.apache.axis.transport.http.CommonsHTTPSender”来支持http1.1。您必须使用轴1.3或更多,因为1.2有https连接错误
答案 1 :(得分:1)
将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>
答案 2 :(得分:1)
这就像上面所有答案的总结以及其他参考资料。
如user3405529所述,请点击链接并了解您的问题。
使用HTTP 1.0协议的商家。
这对于使用带有轴1.4的旧PayPal API的所有人来说都很常见
这是我项目中的问题。
我引用此链接了解更多细节以了解和解决问题
http://marc.info/?l=axis-user&m=119144869612056
有四种方法可以解决这个问题
1)修改轴源代码以使用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;
//}
OR 将消息上下文msgContext.setStrProp(..)设置为HTTPConstants.HEADER_PROTOCOL_V11
然后重建轴并维护自己的源代码以供参考
2)根据user3405529在classpath中使用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。这对将来会很有帮助。
我希望它有用