首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >paypal nvp .net sdk错误

paypal nvp .net sdk错误
EN

Stack Overflow用户
提问于 2013-02-07 06:14:21
回答 1查看 623关注 0票数 0

各位朋友:

我们有一个网站,使用数字商品的PayPal快速结账来进行软件销售。它已经正常工作了5个月。上周,我们开始收到错误消息“请求已中止:无法创建SSL/TLS安全通道”。离开现场。当我在我的开发服务器上运行站点时,它运行得很好,我们可以处理事务。所有这些都是对在线paypal网站的反对。在这个论坛和其他论坛上查看许多问题时,主要问题似乎是使用了错误的端点。我使用的是nvp SDK和.NET方法。我检查了端点,它们是paypal为nvp事务提供的当前端点。甚至查看了dll,以确保我们没有较旧的版本。我们在这方面做得很好。

然后我想也许托管服务器可以建立到paypal的安全链接,所以创建了一个带有url的测试页面,该url带有查询字符串到端点,如(https://api-3t.paypal.com/nvp?USER=XXXX_api1.XXX.com&PWD=XXX&SIGNATURE=XXXXXX&VERSION=60.0&PAYMENTACTION=Authorization&AMT=1.95&RETURNURL=https://www.paypal.com&CANCELURL=https://www.paypal.com&METHOD=SetExpressCheckout)。

这是可行的,并返回了预期的事务令牌。这样我们就可以从主机服务器连接了。然后,考虑到我们的凭据或凭据检索代码可能是问题所在,我将凭据从数据库中提取出来,并按如下方式运行测试。

使用服务器数据code======================================测试查询字符串

这是有效的,所以凭证和端点在托管服务器上是好的。

代码语言:javascript
复制
   ( Dim sCEnvironment As String =   System.Configuration.ConfigurationManager.AppSettings("Environment")
    Dim dtsettings As DataTable
    dtsettings = Dac.ExecuteDataTable("GetCredentials", Dac.Parameter("@Environment", sCEnvironment))

    '// Set up your API credentials, PayPal end point, API operation and version.
    Dim sAPIUsername As String = dtsettings.Rows(0).Item("UserName").ToString
    Dim sAPISignature As String = dtsettings.Rows(0).Item("Signature").ToString
    Dim sAPIPassword As String = dtsettings.Rows(0).Item("Password").ToString
    Dim sEnvironment As String = dtsettings.Rows(0).Item("Environment").ToString

    Dim QS As String = "https://api-3t.paypal.com/nvp?USER=" & sAPIUsername & "&PWD=" & sAPIPassword & "&SIGNATURE=" & sAPISignature & "&VERSION=60.0&PAYMENTACTION=Authorization&AMT=1.95&RETURNURL=https://www.paypal.com&CANCELURL=https://www.paypal.com&METHOD=SetExpressCheckout"
    Response.Redirect(QS)

然后,我继续使用sdk (paypal_base.dll)测试令牌生成。请参阅下面的代码。在生成每一行时,我向它添加了一个字符串,该字符串写出到测试页面,这样我就可以了解我们的托管服务器上发生了什么。我们使用数字商品的快速结账流程。我从https://cms.paypal.com/cms_content/FR/fr_FR/files/developer/nvp_DoAuthorization_cs.txt获得了基本代码,并根据在线文档添加了Digital Goods查询参数。这在我的开发服务器上工作,并返回令牌。它在托管网站上工作了大约四个月,直到1月27日到1月30日之间的某个时候,我收到了第一个客户不能购买产品的通知。

当在我们的托管服务器上运行时,我们得到“请求已中止:无法创建SSL/TLS安全通道”。下面突出显示的代码行上的错误消息。查询字符串由编码器生成,并保存在变量pStrrequestforNvp中,因此编码器可以正常工作。

我不知所措。托管服务器和我们的开发服务器有什么不同?在dll中有没有一个方法可以用来写出对paypal服务器的实际调用?我将我们在开发中使用的相同的dll文件放在托管站点上,但有些不同。

测试sdk生成的查询===========================

代码语言:javascript
复制
Dim caller As NVPCallerServices = New NVPCallerServices
    Dim profile As IAPIProfile = ProfileFactory.createSignatureAPIProfile
    Dim sCEnvironment As String = System.Configuration.ConfigurationManager.AppSettings("Environment")
    Dim dtsettings As DataTable
    Dim sMsg As String
    dtsettings = Dac.ExecuteDataTable("GetCredentials", Dac.Parameter("@Environment", sCEnvironment))

    profile.APIUsername = dtsettings.Rows(0).Item("UserName").ToString
    sMsg = "APIUserName = " & dtsettings.Rows(0).Item("UserName").ToString & "<br/>"

    profile.APISignature = dtsettings.Rows(0).Item("Signature").ToString
    sMsg = sMsg & "APISignature = " & dtsettings.Rows(0).Item("Signature").ToString & "<br/>"

    profile.APIPassword = dtsettings.Rows(0).Item("Password").ToString
    sMsg = sMsg & "APIPassword = " & dtsettings.Rows(0).Item("Password").ToString & "<br/>"

    profile.Environment = dtsettings.Rows(0).Item("Environment").ToString
    sMsg = sMsg & "Environment = " & dtsettings.Rows(0).Item("Environment").ToString & "<br/>"

    caller.APIProfile = profile
    Dim encoder As NVPCodec = New NVPCodec
    encoder("VERSION") = "65.1"
    encoder("METHOD") = "SetExpressCheckout"
    encoder("RETURNURL") = "http://www.multiware.biz/return.aspx"
    encoder("CANCELURL") = "http://www.multiware.biz/cancel.aspx"

    encoder("PAYMENTREQUEST_0_CURRENCYCODE") = "USD"
    encoder("PAYMENTREQUEST_0_PAYMENTACTION") = "Sale"
    encoder("PAYMENTREQUEST_0_AMT") = "1.95"
    encoder("PAYMENTREQUEST_0_ITEMAMT") = "1.95"
    encoder("PAYMENTREQUEST_0_DESC") = "Software"
    encoder("L_PAYMENTREQUEST_0_ITEMCATEGORY0") = "Digital"
    encoder("L_PAYMENTREQUEST_0_NAME0") = "Test"
    encoder("L_PAYMENTREQUEST_0_NUMBER0") = "123"
    encoder("L_PAYMENTREQUEST_0_QTY0") = "1"
    encoder("L_PAYMENTREQUEST_0_AMT0") = "1.95"
    encoder("L_PAYMENTREQUEST_0_DESC0") = "Download"
    encoder("REQCONFIRMSHIPPING") = "0"
    encoder("NOSHIPPING") = "1"
    encoder("SOLUTIONTYPE") = "Sole"
    Try

        Dim pStrrequestforNvp As String = encoder.Encode
        sMsg = sMsg & "pStrrequestforNvp = " & pStrrequestforNvp & "<br/>"

        Dim pStresponsenvp As String = caller.Call(pStrrequestforNvp)     ***Error occurs here***
        sMsg = sMsg & "pStresponsenvp = " & pStresponsenvp & "<br/>"

        Dim decoder As NVPCodec = New NVPCodec
        decoder.Decode(pStresponsenvp)
        Dim Token As String = decoder("TOKEN")
        sMsg = sMsg & "Token = " & Token & "<br/>"
        Me.lblResponse.Text = sMsg.ToString
    Catch ex As Exception
        sMsg = sMsg & "<br/>" & ex.Message.ToString & "<br/>" _
            & ex.StackTrace.ToString
        Me.lblResponse.Text = sMsg.ToString
    End Try
EN

回答 1

Stack Overflow用户

发布于 2013-02-09 07:58:37

我会回答我自己的问题。经过多次来回与虚拟主机服务和PayPal,我们缩小了问题,服务器没有授权的安全证书。必须在我们的页面上进行追踪才能找到这一点并证明它是站在他们这边的。因为我怀疑是微软的更新把事情搞砸了。前一天这个网站还在运行,下一天就不是了。

有关该主题的进一步阅读,请参阅http://forum.arvixe.com/smf/other-programs-promotions-graphics/need-urgent-help!-(paypal-checkout-not-working-any-more)/msg39498/#msg39498上的对话框

值得称赞的是,Arvixe团队追踪到了这个问题,并在我们反复讨论了几次谁的问题后最终解决了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14739908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档