package it.agilis.mens.azzeroCO2.server.services; import it.agilis.mens.azzeroCO2.client.services.AzzerroCO2UtilsClientHelper; import it.agilis.mens.azzeroCO2.core.criteria.SellaRicevutaDiPagamentoCriteria; import it.agilis.mens.azzeroCO2.core.entity.Esito; import it.agilis.mens.azzeroCO2.core.entity.SellaRicevutaDiPagamento; import it.agilis.mens.azzeroCO2.core.register.impl.AzzeroCO2Register; import it.agilis.mens.azzeroCO2.shared.model.pagamento.PagamentoModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * Created by IntelliJ IDEA. * User: Giovanni La Torre * Date: 22/09/11 * Time: 15.02 * To change this template use File | Settings | File Templates. */ public class RispostaBancaServiceKO extends HttpServlet { @Autowired @Qualifier("azzeroCO2Register") private AzzeroCO2Register azzeroCO2Register; @Override public void init(ServletConfig config) throws ServletException { super.init(config); WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(config.getServletContext()); AutowireCapableBeanFactory beanFactory = ctx .getAutowireCapableBeanFactory(); beanFactory.autowireBean(this); } private static final String PAGE_TOP = "" + "<html>" + "<head>" + "<title>AzzeroCO2</title>" + "</head>" + "<body>" + "<h3>AzzeroCO2</h3>" + "<table>"; private static final String PAGE_BOTTOM = "" + "</table>" + "<a href=\"javascript:window.opener='x';window.close();\">Close< /a>" + "</body>" + "</html>"; public AzzeroCO2Register getAzzeroCO2Register() { return azzeroCO2Register; } public void setAzzeroCO2Register(AzzeroCO2Register azzeroCO2Register) { this.azzeroCO2Register = azzeroCO2Register; } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String TRANSACTION_ID = request.getParameter("TRANSACTION_ID");//(id della transazione fornito dalla banca) String MERCHANT_ID = request.getParameter("MERCHANT_ID"); //(id del merchant, dove il merchant AzzeroCO2 e l'id sempre 396870600001 String ORDER_ID = request.getParameter("ORDER_ID"); //(id dell'ordine) String COD_AUT = request.getParameter("COD_AUT"); //(codice di autorizzazione fornito dalla banca) String IMPORTO = request.getParameter("IMPORTO"); // String DIVISA = request.getParameter("DIVISA"); //(nel nostro caso "EUR") String MAC = request.getParameter("MAC"); //(codice di controllo da usare tra poco) // String PROG_ID = request.getParameter("PROG_ID"); //(il codice dell'oggetto, nel nostro esempio mi pare "pagamentoCalcolatore" SellaRicevutaDiPagamentoCriteria criteria = new SellaRicevutaDiPagamentoCriteria(); criteria.setOrderId(ORDER_ID); PrintWriter out = response.getWriter(); SellaRicevutaDiPagamento ricevuta = azzeroCO2Register.getSellaRicevutaDiPagamento(criteria); if (ricevuta != null) { ricevuta.setTRANSACTION_ID(TRANSACTION_ID); ricevuta.setCOD_AUT(COD_AUT); try { MessageDigest algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); String theMd5 = AzzerroCO2UtilsClientHelper.getMAC_MD5((TRANSACTION_ID + MERCHANT_ID + ORDER_ID + COD_AUT + IMPORTO + DIVISA + PagamentoModel.key).toUpperCase()); if (theMd5.equalsIgnoreCase(MAC)) { ricevuta.setEsito(Esito.PAGAMENTO_NON_AVVENUTO); azzeroCO2Register.saveRicevuta(ricevuta); } else { out.println(PAGE_TOP + "<tr><td>MD5 non corrispondente.+3</td></tr>" + PAGE_BOTTOM); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); out.println(PAGE_TOP + "<tr><td>Errore nella ricezione dei dati. -0</td></tr>" + PAGE_BOTTOM); } catch (Exception e) { e.printStackTrace(); out.println(PAGE_TOP + "<tr><td>Errore nella ricezione dei dati. -1</td></tr>" + PAGE_BOTTOM); } } else { out.println(PAGE_TOP + "<tr><td>Fine</td></tr>" + PAGE_BOTTOM); } } }