package com.demo.hub.demo; import javax.net.ssl.SSLServerSocketFactory; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) throws MalformedURLException { String requestJSONBodyStr = "{\n" + " \"merchantIdentifier\": \"replace your code\",\n" + " \"displayName\": \"replace your code\",\n" + " \"initiative\": \"web\",\n" + " \"initiativeContext\": \"replace your code\"\n" + "}"; String urlStr = "https://apple-pay-gateway.apple.com/paymentservices/startSession"; System.out.println("Request url: " + urlStr); System.out.println("Request body: " + requestJSONBodyStr); System.setProperty("https.protocols", "TLSv1.2"); String httpsProtocols = System.getProperty("https.protocols"); System.out.println("httpsProtocols " + httpsProtocols); printCiphers(); URL url = new URL(urlStr); try { HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setConnectTimeout(1000); connection.setReadTimeout(3000); connection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); connection.connect(); final BufferedWriter requestOut = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8)); requestOut.write(requestJSONBodyStr); requestOut.flush(); final BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); StringBuilder responseBody = new StringBuilder(); String line = ""; while ((line = responseReader.readLine()) != null) { responseBody.append(line); } int httpStatusCode = connection.getResponseCode(); if (httpStatusCode == 200) { System.out.println("Response body: " + responseBody); } else { System.err.println("Response error: " + httpStatusCode + ", body: " + responseBody); } } catch (IOException e) { e.printStackTrace(); } } private static void printCiphers() { SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); String supportedCipherSuites = String.join(",", ssf.getSupportedCipherSuites()); String defaultCipherSuites = String.join(",", ssf.getDefaultCipherSuites()); System.out.println("defaultCipherSuites: " + defaultCipherSuites); System.out.println("supportedCipherSuites: " + supportedCipherSuites); } }