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 모두 포함
내가 페이팔 API에 대한 호출이되는 지점에서 확인했습니다. 2.
"샌드 박스"모드를 가리키고 있습니다.
하지만 setExpressCheckout 호출이 실행되면 다음과 같은 런타임 예외가 발생합니다. 요청이 중단되었습니다. SSL/TLS 보안 채널을 만들지 못했습니다.
PayPal API 샘플 프로젝트를 다운로드하고 동일한 샌드 박스 자격 증명을 사용하여 작동합니다. 피들러를 살펴보면 샘플 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가 너무 오래 되었습니까?
사전 도움을 요청 해 주셔서 감사합니다. 모든 고대 코드를 마이그레이션하는 것을 피하는 것이 좋습니다.
편집 : 사용자 이름/암호/서명 자격 증명, 인증서 기반 자격 증명을 사용하고 있음을 언급해야합니다.
안녕하세요 Jeff ... 전 똑같은 문제가있는 이전 WebForms 코드를 상속했습니다. 당신이 이것에 대한 답변을 얻었다면 궁금해할까요? – user1011627
죄송합니다. 답을 수락하기 위해 여기로 돌아 오는 것을 잊어 버렸습니다.하지만 PP_MTS_hzhu가 맞습니다. 어셈블리를 4.5로 업그레이드 한 다음 정적 생성자에 대한 응답으로 코드 줄을 추가하여 작동했습니다. 나는 새로운 PayPal API를 사용할 필요가 없었다. –
응답 해 주셔서 감사합니다 .... 감사합니다. – user1011627