2012-04-16 75 views
1

當我嘗試setExpressCheckout,我得到ack =成功,但不是令牌返回。PayPal SetExpressCheckout Soap

貝寶API的版本是87.0 這裏的WSDL鏈接:https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl

這裏指揮我在axis2-1.6.1用來生成Java代碼

-uri https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsd -p com.paypal.soap 

這裏鏈接到java使用Axis2 https://docs.google.com/open?id=0B97cB4uxjmztbGgxRER6VjBWcWc

此處的代碼SetExpressCheckout

生成代碼3210

這裏的結果是我得到

Date:17/04/2012 12:33:38 
CorrelationID:a7c9fe7283bd 
ack :Success 
token:null 

我如何獲得成功的ACK標記,但爲空? 貝寶聯繫人表示已經爲CorrelationID生成了一個EC令牌:a7c9fe7283bd。

在此先感謝。

回答

1

我不得不使用setExpressCheckoutResponse.getExtraElement()。getText()來獲取令牌。爲什麼setExpressCheckoutResponse.getToken()返回null?

0

如果你看看提到的WSDL文件,一開始你會發現以下幾點:

<wsdl:definitions 
    ns:version="89.0" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    ... > 

意思是說應該使用的API的版本是89.0 - 不記得它自行指定PayPal API文檔,但在此提及。

讓我知道你是否仍然遇到這個問題,因爲我最近在Java中使用SOAP設置了PayPal Express Checkout,可以幫助解決這個問題。

0

我只是遇到了這個問題,並找到了答案(這是C#,我是否適用於Java的不知道):

https://www.x.com/developers/paypal/forums/soap/paypal-api-aa-and-net-wcf-undeserialized-fields

查找範圍爲Web服務生成的代碼( Reference.cs)並找到AbstractResponseType。最後一個屬性是Any()。改變以匹配該屬性(忽略屬性):

[System.Xml.Serialization.XmlIgnoreAttribute()] 
    public System.Xml.XmlElement Any { 
     get { 
      return this.anyField; 
     } 
     set { 
      this.anyField = value; 
     } 
    } 

在此之後,重新編譯和重新測試,你現在應該收到令牌屬性設置正確。

如果您重新生成Web服務代碼,這個更改當然會被替換掉,除非PayPal修復此問題,否則您將不得不重新執行該更改。順便說一下,我的WSDL版本號目前是98.0。

Gary Davis

相關問題