Песочница Paypal была обновлена для использования TLS 1.2 (https://devblog.paypal.com/upcoming-security-changes-notice/#tls). Без каких-либо изменений в моем конце, я видел ошибку «handshake_failure».Paypal Sandbox Обновление TLS (400) Неверный запрос
Я обновил библиотеку JAVA, которую мы используем, как предложено в https://github.com/paypal/TLS-update#paypal-java-sdk-support. Я использую устаревшую версию 1.x.
Однако PayPal выбрасывает PayPalException.
[com.paypal.sdk.exceptions.TransactionException] (http-localhost/127.0.0.1:8082-7) (400)Bad Request:
В дополнение к обновлению paypal_base.jar (мыло), я также использовать параметр VM "-Dhttps.protocols = TLSv1.1, TLSv1.2", но это не имеет никакого значения.
PayPal конечных точек я использую
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=
Я попытался с помощью конечной точки API Подпись -> SOAP -> Песочница, как это предусмотрено в https://developer.paypal.com/docs/classic/api/endpoints/, но без успеха.
Любые предложения о том, что еще должно произойти?
UPDATE
Я побежал тестовое приложение, предоставленные им (TlsCheck.java/банка) и ниже результат
java "-Dhttps.protocols=TLSv1.1,TLSv1.2" -jar TlsCheck.jar
this client supports TLS 1.2
Failed to connect to TLS 1.2 endpoint
Доступ к конечной точке tlstest.paypal.com в браузере возвращает «400 Bad Request». Изменение конечной точки на https://tlstest.paypal.com возвращает «PayPal_Connection_OK», как ожидалось.
Я также сделал копию TlsCheck.java (используя его по умолчанию конечной точки tlstest.paypal.com) и побежал через мой IDE который возвратил следующее (хотя он был не в состоянии соединить первоначально)
this client supports TLS 1.2
Successfully connected to TLS 1.2 endpoint
Пробовал то же самое с другими конечными точками, как «api-3t.sandbox.paypal.com/2.0/», но он не может подключиться к нему с указанием
Failed to connect to TLS 1.2 endpoint
Обновление
Выключает мой тест с использованием функции TslCheck.jar, потому что конечная точка, используемая в JAR, была «tlscheck.chargify.com» (недействительна ??), но исходный код (из того же места https://github.com/paypal/TLS-update/tree/master/java) использовал другую конечную точку «tlstest». paypal.com "(действительный).
Update
Несмотря на обновление paypal_base.jar я в настоящее время, видя "Нет службы имени PayPalAPIAA не доступен", который в конечном итоге приводит к 404 Bad Request. Также подтверждено, что я использую HTTP/1.0 в качестве HTTPSender в библиотеке осей, которые мы используем по умолчанию для HTTP/1.1. Я не нашел подходящего способа обойти это. Я попробовал следовать за https://www-10.lotus.com/ldd/pfwiki.nsf/dx/10022008035400PMWEBRCB.htm, чтобы переключиться на HTTP/1.1. Это не сработало в моем случае !!!!
Не Java-разработчик, так что это может показаться глупым - вы _explicitly_ заставляете соединение использовать TLS 1.2 (только)? Это было изменение, которое я должен был сделать в .Net (клиент может поддерживать больше протоколов, 1.1 и 1.2, но должен использовать _only_ 1.2 при совершении звонков в Paypal). Hth .... – EdSF
Я все равно получаю тот же результат с их тестовым приложением, когда явным образом устанавливаю протокол на TLSv1.2 (java -Dhttps.protocols = TLSv1.2 -jar TlsCheck.jar). – Andy