Получение «Запрос был прерван: не удалось создать безопасный канал SSL / TLS» во время проверки продавца (ApplePay JS) - PullRequest
0 голосов
/ 10 октября 2019

Исключение: при отправке запроса произошла ошибка. в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задачи) в System.Runtime.CompilerServices.TaskAwaiter.Validd__1.MoveNext () в xxxx \ HomeController.cs: строка 76 --- Внутреннее исключение --- Запрос был прерван: Не удалось создать безопасный канал SSL / TLS. в System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult, TransportContext & context) в System.Net.Http.HttpClientHandler.GetRequestStreamCallback (IAsyncResult ar)

* *

* * * * 10051006 *

  • Создание идентификатора продавца.
  • Проверка домена.
  • Включена страница, размещенная на HTTPS & TLS1.2 (снимок экрана)
  • Белый список IP-адресов

Ниже перечислены IP-адреса, занесенные в белый список для тестирования в песочнице:

17.171.85.7     apple-pay-gateway-cert.apple.com

101.230.204.235 cn-apple-pay-gateway-cert.apple.com    

Код клиента:

var session = new ApplePaySession(6, paymentRequest);
session.onvalidatemerchant = function (event) {
        event.validationURL;  //posting to our server through AJAX Post i.e https://<validation URL>/paymentSession
    }
using (var httpClient = CreateHttpClient(certificate))
{
    var jsonPayload = JsonConvert.SerializeObject(payload);

    using (HttpContent content = new StringContent(jsonPayload.ToString(), Encoding.UTF8, "application/json"))
    {
        // POST the data to create a valid Apple Pay merchant session.
        using (var response = await httpClient.PostAsync(url, content)) //ExceptionHere
        {
            response.EnsureSuccessStatusCode();
            // Read the opaque merchant session JSON from the response body.
        }
    }
}

enter image description here

Код сервера для создания запроса Http с сертификатом

private HttpClient CreateHttpClient(X509Certificate2 certificate) 
{
    var handler = new WebRequestHandler();
    handler.ClientCertificates.Add(certificate);
    return new HttpClient(handler, disposeHandler: true);
}

...