2012-07-02 100 views
0

我試圖將我的網站連接到貝寶沙盒爲了使用快速結賬功能。我用這個link作爲參考,但我一直得到10002錯誤「安全標頭無效」。


從文件這必須是一個無效的憑據問題,但如果我通過soapUI手動提出請求,它返回「成功」,如果我使用捲曲command它也按預期方式工作。

情景:有兩個Web ASP.NET頁面引用一個https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl,另一個https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl,給定的憑據是用戶名,密碼和簽名,你可以在下面的代碼片段,請參閱:PayPal SOAP API - 快速結帳 - 錯誤10002

using CloudShop.com.paypal.sandbox.www; 

namespace CloudShop 
{  

    public static PayPalAPIAASoapBinding BuildPayPalWebservice() 
    { 
     UserIdPasswordType credentials = new UserIdPasswordType() 
     { 
      Username = CloudShopConf.PayPalAPIUsername, 
      Password = CloudShopConf.PayPalAPIPassword, 
      Signature = CloudShopConf.PayPalAPISignature 
     }; 
     PayPalAPIAASoapBinding paypal = new PayPalAPIAASoapBinding(); 

     paypal.RequesterCredentials = new CustomSecurityHeaderType() 
     { 
      Credentials = credentials 
     }; 

     return paypal; 
    } 

眼下我想知道如何進行調試。什麼可能是錯的?

+0

那麼你是如何解決這個問題的? – Wolfram

回答

3

一些想法:

  • 檢查,如果你使用的是直播 -Credentials的沙盒帳戶。

  • 您是否使用https://api-3t.sandbox.paypal.com/2.0/(尤其是-3t部分)作爲終點? You should as you are using Signature authentication。與往常一樣,您應該逐步完成您正在使用的所有設置:協議,API端點,版本,憑證等,並將您的手動SoapUI調用與存儲在您店鋪配置中的信息進行比較。

我還發現可能有助於解決此問題的blog article on this error

+0

對於「POINT 1」,肯定是憑據用於沙箱。對於「POINT 2」,我把'paypal.Url =「https://api-3t.sandbox.paypal.com/2.0/」;' paypal.RequesterCredentials之前,但問題依然存在。說實話,我現在有點迷路了...... – ToinoBiclas

+1

您應該找到一種方法來查看您的應用程序發送的實際的原始SOAP請求(刪除您的憑據並將其添加到您的問題中)。你的SoapUI請求必須有所不同(你也可以在這裏添加)。 SOAP和PayPal API(文檔)都不是那裏最易理解的技術。 – Wolfram

+0

我做了wireshark捕獲來確認遠程端點,它也是正確的。目的IP爲173.0.82.83,與nslookup的答案相匹配「非權威回答: 名稱:api-3t.sandbox.paypal.com 地址:173.0.82.83」。你知道有什麼方法可以打開SOAP信封,因爲連接是SSL保護的嗎? – ToinoBiclas