SporoPayInformation.java
package sk.iway.iwcm.ebanking.epayments;
import javax.servlet.http.HttpServletRequest;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.ebanking.Payment;
/**
* SporoPayInformation.java
*
*@Title webjet4
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2009
*@author $Author: jraska $
*@version $Revision: 1.6 $
*@created Date: 26.8.2009 14:13:15
*@modified $Date: 2009/12/11 14:51:53 $
*/
public class SporoPayInformation extends PaymentInformation
{
private String accountPrefix;
private String accountId;
private StringBuilder form;
public SporoPayInformation()
{
//nacitaj konfiguracne hodnoty do fieldov
accountId = Constants.getString("basketPaymentSporoPayAccount");
accountPrefix = Constants.getString("basketPaymentSporoPayAccountPrefix");
key = getDecrypredKey(Constants.getString("basketPaymentSporoPayKey"));
constantSymbol = Constants.getInt("basketPaymentSporoPayConstantSymbol");
}
@Override
public String getUrlString()
{
String confUrl = Constants.getString("basketPaymentSporoPayUrl");
if(Tools.isNotEmpty(confUrl))
return confUrl;
else
return "https://ib.slsp.sk/epayment/epayment/epayment.xml";
//return "http://epaymentsimulator.monogram.sk/SLSP_SporoPay.aspx";
}
@Override
public boolean hasOwnForm()
{
return true;
}
@Override
public String generateForm(Payment payment, HttpServletRequest request)
{
if (request.getAttribute("RURL") == null)
throw new IllegalStateException("Supply return URL, please: request.setAttribute('RURL',...)."+
"RURL is an URL address of a page to which a user will be redirected after the payment is finished");
String returnUrl = request.getAttribute("RURL").toString();
form = new StringBuilder("<form method='get' action='"+getUrlString()+"' name='payForm'/>").
append("<INPUT NAME='pu_predcislo' TYPE='hidden' VALUE='"+prependLeadingZeros(accountPrefix, 6)+"' />").
append("<INPUT NAME='pu_cislo' TYPE='hidden' VALUE='"+prependLeadingZeros(accountId, 10)+"' />").
append("<INPUT NAME='pu_kbanky' TYPE='hidden' VALUE='0900' />").
append("<INPUT NAME='suma' TYPE='hidden' VALUE='"+payment.getAmountString()+"' />").
append("<INPUT NAME='mena' TYPE='hidden' VALUE='EUR' />").
append("<INPUT NAME='vs' TYPE='hidden' VALUE='"+prependLeadingZeros(payment.getVariableSymbol(), 10)+"' />").
append("<INPUT NAME='ss' TYPE='hidden' VALUE='"+prependLeadingZeros(payment.getSpecificSymbol(), 10)+"' />").
append("<INPUT NAME='url' TYPE='hidden' VALUE='"+returnUrl+"' />").
append("<INPUT NAME='param' TYPE='hidden' VALUE='id="+payment.getVariableSymbol()+"' />").
append("<INPUT NAME='sign1' TYPE='hidden' VALUE='"+generateOutcomingSign(payment, request)+"' />").
append("</form>");
return form.toString();
}
private String prependLeadingZeros(String symbolToPrepend, int totalLength)
{
for (int i = symbolToPrepend.length(); i < totalLength ;i++)
symbolToPrepend = "0" + symbolToPrepend;
return symbolToPrepend;
}
private String generateOutcomingSign(Payment payment, HttpServletRequest request)
{
StringBuilder toHash = new StringBuilder().
append(prependLeadingZeros(accountPrefix, 6)).
append(';').append(prependLeadingZeros(accountId, 10)).
append(";0900").
append(';').append(payment.getAmountString()).
append(";EUR").
append(';').append(prependLeadingZeros(payment.getVariableSymbol(), 10)).
append(';').append(prependLeadingZeros(payment.getSpecificSymbol(), 10)).
append(';').append(request.getAttribute("RURL")).
append(';').append("id="+payment.getVariableSymbol());
return TripleDesHashCalculator.calculateHash(toHash.toString(), key);
}
@Override
public boolean validateBankResponce(HttpServletRequest request) throws Exception
{
return new SporoPayReponseValidator(request).validate();
}
}