package naverpay;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class HttpPost {
public static void main(String[] args) {
HttpPost obj = new HttpPost();
obj.getHttpsConnection();
}
public JSONObject getMakeJsonData() {
JSONObject object = new JSONObject();
object.put("modelVersion", "2");
object.put("merchantUserKey", "");
object.put("merchantPayKey", "");
object.put("productName", "테스트상품");
object.put("productCount", 1);
object.put("totalPayAmount", 1000);
object.put("returnUrl", "http://localhost:8080/naverpay/");
object.put("taxScopeAmount", 1000);
object.put("taxExScopeAmount", 0);
object.put("purchaserName", "구매자");
JSONArray list = new JSONArray();
JSONObject productItem = new JSONObject();
productItem.put("categoryType", "INSURANCE");
productItem.put("categoryId", "TRAVELER");
productItem.put("uid", "005");
productItem.put("name", "테스트상품");
productItem.put("payReferrer", "ETC");
productItem.put("count", 1);
list.add(productItem);
object.put("productItems", list);
return object;
}
public String UrlEncodeUTF8(String s) {
try{
return URLEncoder.encode(s, "UTF-8");
} catch(UnsupportedEncodingException ex) {
throw new UnsupportedOperationException(ex);
}
}
public void getHttpsConnection() {
HttpsURLConnection conn = null;
try {
URL url = new URL("https://dev.apis.naver.com/partner-id/naverpay/payments/v2/reserve");
conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("X-Naver-Client-Id", "");
conn.setRequestProperty("X-Naver-Client-Secret", "");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("charset", "UTF-8");
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setConnectTimeout(10000);
conn.setReadTimeout(10000);
conn.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
// SSL setting
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new TrustManager[]{
new javax.net.ssl.X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
}
}, null);
conn.setSSLSocketFactory(context.getSocketFactory());
// Connect to host
conn.connect();
conn.setInstanceFollowRedirects(true);
String param = this.getMakeJsonData().toJSONString();
OutputStream wr1 = conn.getOutputStream();
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr1.write(param.getBytes("UTF-8"));
wr1.flush();
wr1.close();
final int responseCode = conn.getResponseCode();
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
final StringBuffer buffer = new StringBuffer();
String line = null;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
System.out.println("##########");
System.out.println("##########");
System.out.println("##########");
System.out.println("##########");
System.out.println("##########");
System.out.println("result ::: "+buffer.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if(conn != null) {
conn.disconnect();
}
}
}
}