package crmdna.payment;
import crmdna.common.Utils;
import crmdna.common.api.APIResponse;
import crmdna.common.api.APIUtils;
import crmdna.common.api.RequestInfo;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.logging.Logger;
@SuppressWarnings("serial")
public class PaypalDoExpressCheckoutServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String token = req.getParameter("token");
String payerId = req.getParameter("PayerID");
String rootUrl = req.getServerName();
TokenProp tokenProp = Token.safeGet(token);
// TODO: handle exception in token prop
try {
String redirectUrl = Payment.doExpressCheckout(token, payerId, rootUrl);
// Payment.doExpressCheckout should not throw any exception
resp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
Utils.ensureValidUrl(redirectUrl);
resp.setHeader("Location", redirectUrl);
} catch (Exception ex) {
// just in case
APIResponse apiResponse =
APIUtils.toAPIResponse(ex, true, new RequestInfo().client("Not available").req(req));
String errMessage =
"Error in Paypal DoExpressCheckout. Error code: " + apiResponse.statusCode
+ "\nMessage: " + apiResponse.userFriendlyMessage + "\n\nStack trace: "
+ apiResponse.object;
Logger logger = Logger.getLogger(PaypalDoExpressCheckoutServlet.class.getName());
logger.severe(errMessage);
Utils.sendAlertEmailToDevTeam(tokenProp.client, ex, req, null);
resp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
resp.setHeader("Location", tokenProp.errorCallback);
}
}
}