All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.abyss.acquiring.soap.AbstractAcquiringServlet Maven / Gradle / Ivy

There is a newer version: 1.6
Show newest version
/*
 * Copyright Бездна (c) 2017.
 */
package ru.abyss.acquiring.soap;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ru.paymentgate.engine.webservices.merchant.OrderStatusResponse;

/**
 * @author Minu <[email protected]>
 * @since 18.07.2017 14:29:47
 */
public abstract class AbstractAcquiringServlet extends HttpServlet {

	private static final long serialVersionUID = -2806124344918280705L;

	private static Logger logger = LoggerFactory.getLogger(AbstractAcquiringServlet.class.getName());

	/**
	 * Сформировать ответ
	 * 
	 * @param resp
	 *            - ответ пользователю
	 * @param code
	 *            - код HTTP ответа
	 * @param contentType
	 *            - MIME тип содержимого
	 * @param content
	 *            - содержимое ответа
	 */
	public static void response(HttpServletResponse resp, int code, String contentType, String content) {
		try {
			if ((resp == null) || resp.isCommitted())
				return;
			resp.reset();
			resp.setStatus(code);
			resp.setContentType(contentType);
			resp.setCharacterEncoding("UTF-8");
			resp.setHeader("Pragma", "no-cache");
			resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
			resp.setHeader("Expires", "Sat, 26 Jul 1997 05:00:00 GMT");
			if (content != null) {
				byte[] bytes = content.getBytes("UTF-8");
				resp.setContentLength(bytes.length);
				resp.getOutputStream().write(bytes);
			}
			try {
				resp.flushBuffer();
			} catch (IOException e) {
				logger.warn(e.getClass() + ": " + e.getMessage());
			}
		} catch (Exception e) {
			logger.error("", e);
		}
	}

	/**
	 * Сообщить пользователю о возникшей ошибке
	 * 
	 * @param resp
	 *            - ответ пользователю
	 * @param title
	 *            - заголовок
	 * @param mes
	 *            - текст сообщения об ошибке в формате HTML
	 */
	protected void responseError(HttpServletResponse resp, String title, String mes) {
		response(
				resp, 200, "text/html",
				""
						+ title
						+ "

" + title + "

" + mes + "
"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String orderId = req.getParameter("orderId"); if ((orderId != null) && !orderId.isEmpty()) { OrderStatusResponse status = null; try { status = AcquiringUtil.getOrderStatus(orderId); } catch (Exception e) { logger.error("Возникла ошибка при проведении оплаты", e); onFailure(orderId, e.getMessage(), null, resp); return; } if (status != null) { if (status.getErrorCode() == 0) onSuccess(orderId, status, resp); else onFailure(orderId, status.getActionCodeDescription(), status, resp); } } else AcquiringUtil.main(null); } protected abstract void onSuccess(String orderId, OrderStatusResponse status, HttpServletResponse resp); protected void onFailure(String orderId, String message, OrderStatusResponse status, HttpServletResponse resp) { responseError(resp, "Возникла ошибка при проведении оплаты", message); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy