package restfulclient.main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.MessageDigest;
public class RestClient {
public static void main(String[] args) {
try {
URL url = new URL("http://www.mypaga.com/paga-webservices/merchant-rest/getTransactionDetails");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("principal", "AA6EEB78-BD92-4D0B-A87D-E3DB46C53B70"); //business organization publicId
conn.setRequestProperty("credentials", "password"); //business organization password
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("09012939283"); //referenceNumber param value
sBuilder.append("0123"); //business organization api-key
conn.setRequestProperty("hash", RestClientTest.hashSHA512(sBuilder.toString(), 1000, true).toString());
//input should be the data formatted as a JSON.
String input = "{\"referenceNumber\":\"09012939283\"}";
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.close();
if (conn.getResponseCode() != 201 && conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//hash sha-512 with some iterations
public static Object hashSHA512(String message, int iterations, boolean returnHex) {
try {
MessageDigest mda = MessageDigest.getInstance("SHA-512");
byte [] digest = mda.digest(message.getBytes());
for(int i = 0; i < iterations - 1; i++) {
digest = mda.digest(digest);
}
if(returnHex) {
return new String(Hex.encodeHex(digest));
} else {
return digest;
}
} catch(Exception e) {
return null;
}
}
}