package com.softwaremill.common.paypal.process.status;
import com.google.common.base.Charsets;
import com.softwaremill.common.paypal.process.RequestParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
/**
* Checks transaction status with PayPal
* @Author: lukasz.zuchowski at gmail dot com
* Date: 05.04.12
* Time: 13:13
*/
public class DefaultPayPalStatusVerifier implements PayPalStatusVerifier {
private static final Logger log = LoggerFactory.getLogger(DefaultPayPalStatusVerifier.class);
public PayPalStatus verify(String url, RequestParameters requestParameters) {
try {
// checks PayPal status with paypal
URLConnection uc = new URL(url).openConnection();
uc.setDoOutput(true);
uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(new OutputStreamWriter(uc.getOutputStream(), Charsets.UTF_8));
String requestString = buildRequestString(requestParameters).toString();
log.debug("PAYPAL REQUEST: "+requestString);
pw.println(requestString);
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), Charsets.UTF_8));
PayPalStatus status = new PayPalStatus(in.readLine());
in.close();
return status;
} catch (IOException e) {
throw new VerificationException(e);
}
}
private static StringBuilder buildRequestString(RequestParameters request) {
StringBuilder str = new StringBuilder("cmd=_notify-validate");
str.append(request.buildRequestParametersForUrl());
return str;
}
}