2012-07-02 579 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