Java Paypal SetExpressCheckout Soap
当我尝试设置ExpressCheckout时,我得到ack=success,但没有返回令牌 贝宝api的版本是87.0 这里是wsdl链接: 下面是我在axis2-1.6.1中用来生成java代码的命令Java Paypal SetExpressCheckout Soap,java,web-services,paypal,Java,Web Services,Paypal,当我尝试设置ExpressCheckout时,我得到ack=success,但没有返回令牌 贝宝api的版本是87.0 这里是wsdl链接: 下面是我在axis2-1.6.1中用来生成java代码的命令 -uri https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsd -p com.paypal.soap 这里是指向使用axis2生成的java代码的链接 下面是SetExpressCheckout的代码 PaymentDetailsType
-uri https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsd -p com.paypal.soap
这里是指向使用axis2生成的java代码的链接
下面是SetExpressCheckout的代码
PaymentDetailsType paymentDetails = new PaymentDetailsType();
BasicAmountType orderTotal = new BasicAmountType();
orderTotal.setCurrencyID(CurrencyCodeType.USD);
orderTotal.setString("10.00");
paymentDetails.setOrderTotal(orderTotal);
paymentDetails.setPaymentAction(PaymentActionCodeType.Sale);
SetExpressCheckoutRequestDetailsType requestDetailsType = new SetExpressCheckoutRequestDetailsType();
requestDetailsType.setCancelURL(buyer.getCancelUrl());
requestDetailsType.setReturnURL(buyer.getReturnUrl());
requestDetailsType.setPaymentDetails(new PaymentDetailsType[]{paymentDetails});
SetExpressCheckoutRequestType requestType = new SetExpressCheckoutRequestType();
requestType.setVersion("87.0");
requestType.setSetExpressCheckoutRequestDetails(requestDetailsType);
SetExpressCheckoutReq req = new SetExpressCheckoutReq();
req.setSetExpressCheckoutRequest(requestType);
RequesterCredentials requesterCredentials = new RequesterCredentials();
CustomSecurityHeaderType customSecurityHeaderType = new CustomSecurityHeaderType();
UserIdPasswordType userIdPasswordType = new UserIdPasswordType();
userIdPasswordType.setUsername("<username>");
userIdPasswordType.setPassword("<pass>");
userIdPasswordType.setSignature("<signature>");
customSecurityHeaderType.setCredentials(userIdPasswordType);
requesterCredentials.setRequesterCredentials(customSecurityHeaderType);
String endPoint = null;
endPoint = "https://api-3t.sandbox.paypal.com/2.0/"; //sandbox API Signature
PayPalAPIInterfaceServiceStub stub = new PayPalAPIInterfaceServiceStub(endPoint);
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);
SetExpressCheckoutResponse setExpressCheckout = stub.setExpressCheckout(req, requesterCredentials);
SetExpressCheckoutResponseType checkoutResponse = setExpressCheckout.getSetExpressCheckoutResponse();
Calendar timestamp = checkoutResponse.getTimestamp();
String strdate = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
if (timestamp != null) {
strdate = sdf.format(timestamp.getTime());
}
System.out.println("Date:" + strdate);
System.out.println("CorrelationID:" + checkoutResponse.getCorrelationID());
System.out.println("ack :" + checkoutResponse.getAck());
if (checkoutResponse.getErrors() != null && checkoutResponse.getErrors().length > 0) {
PayPalAPIInterfaceServiceStub.ErrorType[] errors = checkoutResponse.getErrors();
for (int i = 0; i < errors.length; i++) {
System.out.println(errors[i].getErrorCode());
System.out.println(errors[i].getLongMessage());
}
}
System.out.println("token:" + checkoutResponse.getToken());
我如何获得ack成功但令牌为空?
paypal的联系人说已经为CorrelationID:a7c9fe7283bd生成了一个EC令牌
提前感谢。我必须使用setExpressCheckoutResponse.getExtraElement().getText()来获取令牌。为什么setExpressCheckoutResponse.getToken()返回null?我必须使用setExpressCheckoutResponse.getExtraElement().getText()来获取令牌。为什么setExpressCheckoutResponse.getToken()返回null?如果查看上述wsdl文件,一开始您会注意到以下几点:
这意味着应该使用的API版本是89.0
——不记得它在PayPal API文档中的指定位置,但这里肯定提到了这一点
如果您仍然遇到此问题,请告诉我,因为我最近设法使用Java中的SOAP设置了PayPal Express签出,并且可以提供帮助。如果您查看上述wsdl文件,一开始您会注意到以下几点:
这意味着应该使用的API版本是89.0
——不记得它在PayPal API文档中的指定位置,但这里肯定提到了这一点
如果您仍然遇到这个问题,请告诉我,因为我最近设法使用Java中的SOAP设置了PayPal Express签出,并且可以提供帮助。我刚刚遇到这个问题并找到了答案(这是针对C#,我不确定它是否适用于Java): 查找web服务生成的代码(Reference.cs)并找到AbstractResponseType。最后一个属性是Any()。更改属性以与此匹配(忽略该属性): 接下来,重新编译并再次测试,您现在应该正确地接收令牌属性集 如果您重新生成web服务代码,这一更改当然会被替换,除非PayPal修复此问题,否则您必须重新执行。顺便说一句,我的WSDL版本号现在是98.0
Gary Davis我刚刚遇到这个问题并找到了答案(这是针对C#,我不确定它是否适用于Java): 查找web服务生成的代码(Reference.cs)并找到AbstractResponseType。最后一个属性是Any()。更改属性以与此匹配(忽略该属性): 接下来,重新编译并再次测试,您现在应该正确地接收令牌属性集 如果您重新生成web服务代码,这一更改当然会被替换,除非PayPal修复此问题,否则您必须重新执行。顺便说一句,我的WSDL版本号现在是98.0 加里戴维斯
Date:17/04/2012 12:33:38
CorrelationID:a7c9fe7283bd
ack :Success
token:null
[System.Xml.Serialization.XmlIgnoreAttribute()]
public System.Xml.XmlElement Any {
get {
return this.anyField;
}
set {
this.anyField = value;
}
}