Skip to content

Instantly share code, notes, and snippets.

@IEnoobong
Last active January 23, 2017 17:10
Show Gist options
  • Save IEnoobong/c01b532700911ad9a69da46378c6a365 to your computer and use it in GitHub Desktop.
Save IEnoobong/c01b532700911ad9a69da46378c6a365 to your computer and use it in GitHub Desktop.
Receive token and verify on SP gateway
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();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment