私はASP.Net 4.5を使用していますが、非常に古いバージョンのPayPal SOAP APIを使用しています。参照は、4.3.1.0の報告されたバージョンを持つpaypal_base.dllです。.Netサーバー上でTLS 1.2をサポートするために新しいPayPal APIが必要ですか?
com.paypal.sdk.services
com.paypal.soap.api:APIを呼び出すコードを参照するステートメントを "使用" しています。この値
System.Net.ServicePointManager.SecurityProtocol
はSSL3とTLS1の両方を含むことが
Iは、PayPalのAPIへの呼び出しが行われた時点で確認しました。 2。
私は「サンドボックス」モードを指しています。
しかし、setExpressCheckout呼び出しが行われると、実行時例外が発生します。 要求が中止されました:SSL/TLSセキュアチャネルを作成できませんでした。
私はPayPal API Samplesプロジェクトをダウンロードし、同じサンドボックスの資格情報を使用して動作します。フィドラーを見ると、サンプルAPI呼び出しはapi-3t.sandbox.paypal.comに行きますが、コードはapi-aa.sandbox.paypal.comになりますが、TLS 1.2の準備についてのドキュメント両方のapisが動作するはずです。いずれのAPIでも、「ライブ」と「サンドボックス」の切り替え以外のエンドポイントを設定する場所はありません。シオマネキ応答に
、両方のショー: 「AのSSLv3互換のServerHelloハンドシェークが見出されたフィドラーは、以下のパラメータを抽出 バージョン:3.3(TLS/1.2)」 と応答が「ランダムを除いて同一でありますパラメータ。
SetExpressCheckoutRequestType request = new SetExpressCheckoutRequestType();
populateRequestObject(request); //populate request data
SetExpressCheckoutReq wrapper = new SetExpressCheckoutReq();
wrapper.SetExpressCheckoutRequest = request;
Dictionary<string, string> configurationMap = Configuration.GetAcctAndConfig(); //set merchant config
PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(configurationMap);
SetExpressCheckoutResponseType setECResponse = service.SetExpressCheckout(wrapper); //make the call
どこに(再び、非常に古いコードは次のようになります):
だから、古いAPIコールは、TLS 1.2私のコードとサンプルAPIコードはわずかに異なっている、サンプルは使用を使用しています
CallerServices caller = new CallerServices();
caller.APIProfile = SetProfile.ApplicationProfile; //set merchant config
SetExpressCheckoutRequestType pp_request = new SetExpressCheckoutRequestType();
// Create the request details object
pp_request.SetExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
pp_request.SetExpressCheckoutRequestDetails.PaymentAction = paymentAction;
pp_request.SetExpressCheckoutRequestDetails.PaymentActionSpecified = true;
pp_request.SetExpressCheckoutRequestDetails.OrderTotal = new BasicAmountType();
pp_request.SetExpressCheckoutRequestDetails.OrderTotal.currencyID = currencyCodeType;
pp_request.SetExpressCheckoutRequestDetails.OrderTotal.Value = paymentAmount;
pp_request.SetExpressCheckoutRequestDetails.CancelURL = cancelURL;
pp_request.SetExpressCheckoutRequestDetails.ReturnURL = returnURL;
return (SetExpressCheckoutResponseType) caller.Call("SetExpressCheckout", pp_request); //do the call
サンプルコードが動作し、私のコードはSSL/TLSエラーをスローします。私は最新のSDKにアップグレードしようとしましたが、多くの変更がありました。すべてのコードを移行するにはかなりの労力を要します。
フィドラーからは、古いAPIでもTLS 1.2が使用されているようですが、SSL/TLS接続に関するランタイム例外が発生します。異なるエンドポイントのためですか?古いAPIはちょうど古すぎるのですか?
ご協力いただきありがとうございます。私は古代のコードをすべて移行することを避けたいと思います。
編集:私はUserName/Password/Signature資格情報を使用していますが、証明書ベース資格情報は使用していません。
Hey Jeff ...まったく同じ懸念を持つ古いWebFormsコードを継承しました。あなたはこれに答えがあるかどうか分かりますか? – user1011627
申し訳ありませんが、私は答えを受け入れるためにここに戻ってくるのを忘れたと思うが、PP_MTS_hzhuは正しい。私は4.5にアセンブリをアップグレードし、静的なコンストラクタへの答えのコード行を追加し、それは働いた。私は新しいPayPal APIを使う必要はありませんでした。 –
応答ありがとう....ありがとう。 – user1011627