package co.enoobong.rotimiphotography.backend; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Map; import java.util.logging.Logger; import javax.annotation.Nonnull; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.bind.DatatypeConverter; import static com.google.api.client.http.HttpMethods.POST; import static org.apache.http.HttpHeaders.AUTHORIZATION; import static org.apache.http.HttpHeaders.CONTENT_TYPE; public class VerifyToken extends HttpServlet { private static final String API_KEY = "test_pr_d6c3cb5a5b7944e1ad5bc1164f853449" + ":"; private static final Logger log = Logger.getLogger(VerifyToken.class.getName()); @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); String token = req.getParameter("token"); String price = req.getParameter("price"); String currency = req.getParameter("currency"); try{ //Build name data request params JSONObject jsonRequest = new JSONObject(); jsonRequest.put("token", token); jsonRequest.put("amount", Integer.parseInt(price)); jsonRequest.put("amount_currency", currency); log.info(jsonRequest.toString()); //Prepare and Execute HTTP Post URL url = new URL("https://api.simplepay.ng/v1/payments/verify"); String basicAuth = "Basic " + DatatypeConverter.printBase64Binary(API_KEY.getBytes()); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod(POST); httpURLConnection.setRequestProperty(AUTHORIZATION, basicAuth); httpURLConnection.setRequestProperty(CONTENT_TYPE, "application/json"); httpURLConnection.setUseCaches(false); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); OutputStream outputStream = httpURLConnection.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); writer.write(jsonRequest.toString()); writer.flush(); writer.close(); outputStream.close(); httpURLConnection.connect(); //Read response int statusCode =httpURLConnection.getResponseCode(); BufferedReader reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); JSONObject jsonResponse = readJsonFromReader(reader); log.info(jsonResponse.toString()); int responseCode = jsonResponse.getInt("response_code"); //Verify transaction if (statusCode == HttpURLConnection.HTTP_OK) { if(responseCode == 20000){ //Transaction successful do something resp.getWriter().println("Transaction Successful"); } else { //transaction failed resp.getWriter().println("Transaction unsuccessful " + responseCode); } } else { //transaction failed resp.getWriter().println("Transaction unsuccessful " + responseCode); } } catch (Exception e) { resp.getWriter().println(e.getMessage()); System.err.println(e.getMessage()); } } private JSONObject readJsonFromReader(Reader reader) throws IOException, JSONException { try{ StringBuilder sb = new StringBuilder(); int cp; while ((cp = reader.read()) != -1) { sb.append((char) cp); } String jsonText = sb.toString(); return new JSONObject(jsonText); } finally { reader.close(); } } }