0

皆さん、

デジタル商品の PayPal Express Checkout を使用してソフトウェアを販売する Web サイトがあります。5か月間、問題なく動作しています。先週、「リクエストが中止されました: SSL/TLS セキュア チャネルを作成できませんでした。」というエラーが発生し始めました。ライブサイトから. 開発サーバーからサイトを実行すると、問題なく実行され、トランザクションを処理できます. これらはすべて、ライブペイパルサイトに反しています. このフォーラムや他のサイトで多くの質問を見ると、主な問題は使用しているようです.間違ったエンドポイント. 私は .NET SDK と nvp メソッドを使用しています. エンドポイントを確認したところ、それらは nvp トランザクションのためにペイパルによって提供された最新のものです. dll を調べて、古いバージョンがないことを確認しました.私たちはそこで元気です。

次に、ホスティングサーバーがペイパルへの安全なリンクを確立できるのではないかと考えたので、エンドポイントへのクエリ文字列を含む 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 )。

これは機能し、期待されるトランザクション トークンを返しました。したがって、ホスティングサーバーから接続できます。次に、資格情報または資格情報取得コードが問題である可能性があると考えて、データベースから資格情報を取り出し、次のようにテストを実行しました。

サーバー データ コードを使用したテスト クエリ文字列=====================================

これは機能したため、資格情報とエンドポイントはホスティング サーバーで適切です。

   ( 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 dll (paypal_base.dll) を使用してトークン生成をテストしました。以下のコードを参照してください。各行が生成されるたびに、テスト ページに書き出す文字列を追加して、ホスティング サーバーで何が起こっているかを把握できるようにします。デジタル商品のプロセスにはエクスプレス チェックアウトを使用します。https://cms.paypal.com/cms_content/FR/fr_FR/files/developer/nvp_DoAuthorization_cs.txtから基本コードを取得し、オンライン ドキュメントに従って Digital Goods クエリ パラメータを追加しました。これは私の開発サーバーで機能し、トークンを返します。顧客が製品を購入できないという最初の通知を受け取った 1 月 27 日から 1 月 30 日までの約 4 か月間、ホスティング サイトで動作しました。

ホスティング サーバーで実行すると、「リクエストが中止されました: SSL/TLS セキュア チャネルを作成できませんでした」というメッセージが表示されます。以下で強調表示されているコード行のエラー メッセージ。クエリ文字列はエンコーダーによって生成され、エンコーダーが機能するように変数 pStrrequestforNvp に保持されます。

私は途方に暮れています。ホスティング サーバーと開発サーバーでは何が違うのでしょうか? Paypalサーバーへの実際の呼び出しを書き出すために使用できるdllにメソッドはありますか? 開発で使った同じdllファイルをホスティングサイトに置いたのですが、何かが違います。

SDK で生成されたクエリをテストする ===========================

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
4

1 に答える 1

0

私自身の質問に答えます。ウェブホスティングサービスとPayPalを何度も行ったり来たりした後、セキュリティ証明書を承認していないサーバーに問題を絞り込みました。これを見つけて、それが彼らの側にあったことを証明するために、私たちのページにトレースを入れなければなりませんでした。私が疑ったように、それは物事を台無しにしたMSアップデートでした。ある日、サイトは機能していましたが、次の日は機能しませんでした。

このテーマの詳細については、http://forum.arvixe.com/smf/other-programs-promotions-graphics/need-urgent-help!-(paypal-checkout-not-working-any-more)のダイアログを参照してください。 / msg39498 /#msg39498

彼らの名誉のために、Arvixeの人々は問題を追跡し、問題があった問題について何度か行ったり来たりした後、最終的に問題を解決しました。

于 2013-02-08T23:58:36.537 に答える