Skip to content

Instantly share code, notes, and snippets.

@zenlor
Created October 17, 2012 17:01
Show Gist options
  • Select an option

  • Save zenlor/3906729 to your computer and use it in GitHub Desktop.

Select an option

Save zenlor/3906729 to your computer and use it in GitHub Desktop.
GestPay (just cause I hate them)
import java.io.*;
import java.awt.*;
import java.util.*;
import java.net.*;
/**
* Crypt-Decrypt Hi security object.
// Author: Sellanet.
// Version 2.0 Hi Security (HTTPS Server to Server comunications)
* IMPORTANT
* Installation Notes:
* Required JSSE 1.0.2, download http://java.sun.com
*
*
* JSSE 1.0.2 is supplied as an extension to the Java 2 platform. JSSE is
implemented via a Java Cryptography Architecture (JCA) security
provider class called "SunJSSE."
- Registration of SunJSSE provider.
Add the "SunJSSE" provider to your list of approved providers.
This is done statically by editing the security properties file:
<java-home>\lib\security\java.security [Win32]
<java-home>/lib/security/java.security [Solaris]
One of the types of properties contained in the java.security
file is of the following form:
security.provider.n=providerClassName
This declares a provider, and specifies its preference order "n".
The preference order is the order in which providers are
searched for requested algorithms (when no specific provider is
requested). The order is 1-based; 1 is the most preferred,
followed by 2, and so on.
Add the above line to java.security, replacing
providerClassName with com.sun.net.ssl.internal.ssl.Provider,
and substituting n with the priority that you would like to
assign to the "SunJSSE" provider. For example, to add the Sun
internal SSL provider to the standard provider shipped with the
JRE, your entries would look like: <br>
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.net.ssl.internal.ssl.Provider
"SunJSSE" would now be the second preferred provider
*
*
*
*
*/
public class GestPayCryptHS{
private String ShopLogin;
private String Currency;
private String Amount;
private String ShopTransactionID;
private String CardNumber;
private String ExpMonth;
private String ExpYear;
private String BuyerName;
private String BuyerEmail;
private String Language;
private String CustomInfo;
private String AuthorizationCode;
private String ErrorCode;
private String ErrorDescription;
private String BankTransactionID;
private String AlertCode;
private String AlertDescription;
private String EncryptedString;
private String ToBeEncript;
private String Decripted;
private String TransactionResult;
private String ProtocolAuthServer="";
private String DomainName="";
private String separator ;
private String errDescription;
private String errNumber;
private String Version="3.0"; // variazione Versione Giugno 2007
private String Min="";
private String CVV="";
private String country="";
private String vbvrisp="";
private String vbv="";
private String trans = ""; // comparazione di stringhe
private String ThreeDLevel = "";
public GestPayCryptHS () {
/*init value*/
ShopLogin = "";
Currency = "";
Amount = "";
ShopTransactionID = "";
CardNumber = "";
ExpMonth = "";
ExpYear = "";
BuyerName = "";
BuyerEmail = "";
Language = "";
CustomInfo = "";
AuthorizationCode = "";
ErrorCode = "";
ErrorDescription = "";
BankTransactionID = "";
AlertCode = "";
AlertDescription = "";
EncryptedString = "";
ToBeEncript = "";
Decripted = "";
ProtocolAuthServer="";
DomainName="";
separator ="*P1*";
errDescription ="";
errNumber="0";
Min="";
CVV="";
country="";
vbvrisp="";
vbv="";
Version = "3.0"; // giugno '07
trans = ""; // comparazione di stringhe
}
public void SetShopLogin(String xstr)
{
ShopLogin = xstr;
}
public void SetCurrency(String xstr)
{
Currency = xstr;
}
public void SetAmount(String xstr)
{
Amount = xstr;
}
public void SetShopTransactionID(String xstr)
{
ShopTransactionID = URLEncoder.encode(xstr.trim());
}
public void SetMIN(String xstr)
{
Min = xstr;
}
public void SetCVV(String xstr)
{
CVV = xstr;
}
public void SetCardNumber(String xstr)
{
CardNumber = xstr;
}
public void SetExpMonth(String xstr)
{
ExpMonth = xstr;
}
public void SetExpYear(String xstr)
{
ExpYear = xstr;
}
public void SetBuyerName(String xstr)
{
BuyerName = URLEncoder.encode(xstr.trim());
}
public void SetBuyerEmail(String xstr)
{
BuyerEmail = xstr.trim();
}
public void SetLanguage(String xstr)
{
Language = xstr.trim();
}
public void SetCustomInfo(String xstr)
{
CustomInfo = URLEncoder.encode(xstr.trim());
}
public void SetEncryptedString(String xstr)
{
EncryptedString = xstr;
}
//
// giugno '07
public void setProtocolServer(String xstr)
{
ProtocolAuthServer = xstr;
}
// giugno '07
public void setDomainName(String xstr)
{
DomainName = xstr;
}
//
public String GetShopLogin()
{
return ShopLogin;
}
public String GetCurrency()
{
return Currency;
}
public String GetAmount()
{
return Amount;
}
public String GetShopTransactionID()
{
String app = "";
try
{app = URLDecode(ShopTransactionID);
}
catch (Exception ex) {}
return app;
}
public String GetBuyerName()
{
String appBuyername = "";
try
{appBuyername = URLDecode(BuyerName);
}
catch (Exception ex) {appBuyername="errore";}
return appBuyername;
}
public String GetBuyerEmail()
{
return BuyerEmail;
}
public String GetCustomInfo()
{
String appCustom = "";
try
{appCustom = URLDecode(CustomInfo);
}
catch (Exception ex) {}
return appCustom;
}
public String GetAuthorizationCode()
{
return AuthorizationCode;
}
public String GetErrorCode()
{
return ErrorCode;
}
public String GetCountry()
{
return country;
}
public String GetVBV()
{
return vbv;
}
public String GetVBVrisp()
{
return vbvrisp;
}
public String GetErrorDescription()
{
return ErrorDescription;
}
public String GetBankTransactionID()
{
return BankTransactionID;
}
public String GetTransactionResult()
{
return TransactionResult;
}
public String GetAlertCode()
{
return AlertCode;
}
public String GetAlertDescription()
{
return AlertDescription;
}
public String GetEncryptedString()
{
return EncryptedString;
}
//
// giungo '07
public String getProtocolServer()
{
return ProtocolAuthServer;
}
// giungo '07
public String getDomainName()
{
return DomainName;
}
public String Get3DLevel()
{
return ThreeDLevel;
}
//
public boolean Encrypt(){
String sErr = "";
ErrorCode = "0";
ErrorDescription = "";
try{/*contact Encryption Server*/
if (ShopLogin.length()<=0){
ErrorCode="546";ErrorDescription="IDshop not valid";return false;
}
// Giugno 2007
// se il protocollo e il dominio non sono stati modificati dall'esercente questi puntano di default a
// https://testecomm.sella.it--> per i codici di test oppure a
// https://ecomms2s.sella.it --> per i codici di produzione
if (controlValues(ProtocolAuthServer)){
ProtocolAuthServer="https://";
}
trans = ShopLogin.substring (0, 6);
trans = trans.toLowerCase();
if (controlValues(DomainName)) {
if (trans.equals("gespay")){
DomainName="testecomm.sella.it/CryptHTTP"; // codici di test
}else {
DomainName="ecomms2s.sella.it/CryptHTTP"; // codici di produzione
}
}
// ************
if (Currency.length()<=0){
ErrorCode="552";ErrorDescription="Currency not valid";return false;
}
if (Amount.length()<=0){
ErrorCode="553";ErrorDescription="Amount not valid";return false;
}
if (ShopTransactionID.length()<=0){
ErrorCode="551";ErrorDescription="Shop Transaction ID not valid";return false;
}
ToBeEncript = "";
if (CVV.length()>0){ToBeEncript = ToBeEncript+separator+"PAY1_CVV=" + CVV;}
if (Min.length()>0){ToBeEncript = ToBeEncript+separator+"PAY1_MIN=" + Min;}
if (Currency.length()>0){ToBeEncript = ToBeEncript+separator+"PAY1_UICCODE=" + Currency;}
if (Amount.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_AMOUNT="+Amount;}
if (ShopTransactionID.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_SHOPTRANSACTIONID="+ShopTransactionID;}
if (CardNumber.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_CARDNUMBER="+CardNumber;}
if (ExpMonth.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_EXPMONTH="+ExpMonth;}
if (ExpYear.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_EXPYEAR="+ExpYear;}
if (BuyerName.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_CHNAME="+BuyerName;}
if (BuyerEmail.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_CHEMAIL="+BuyerEmail;}
if (Language.length()>0){ToBeEncript=ToBeEncript+separator+"PAY1_IDLANGUAGE="+Language;}
if (CustomInfo.length()>0){ToBeEncript=ToBeEncript+separator + CustomInfo;}
//specifies the URL Handler for the "https" URL Protocol type
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
String urlString = ProtocolAuthServer + DomainName + "/Encrypt.asp?a="+ShopLogin+"&b="+ToBeEncript.substring(4,ToBeEncript.length())+"&c="+Version;
URL url = new URL(urlString);
URLConnection connection=url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
int nStart = 0;
int nEnd = 0;
String line = "";
while (line != null)
{line = in.readLine();
if (line != null)
{nStart = line.indexOf("#cryptstring#");
nEnd = line.lastIndexOf("#/cryptstring#");
if (nStart != -1 & nEnd > nStart + 14)
{EncryptedString=line.substring(nStart+13,nEnd);}
nStart = line.indexOf("#error#");
nEnd = line.lastIndexOf("#/error#");
if (nStart != -1 & nEnd > nStart+8)
{ sErr = line.substring(nStart+7,nEnd);
int intsep =sErr.indexOf("-");
ErrorCode = sErr.substring(0,intsep);
ErrorDescription = sErr.substring(intsep+1,sErr.length());
return false;
}
}
}
in.close();
return true;
}
catch (MalformedURLException ex){ErrorCode="9999";ErrorDescription ="Bad URL";return false;}
catch (UnknownServiceException ex){ErrorCode="9999";ErrorDescription ="ServiceException occurred."; return false;}
catch (IOException ex){ErrorCode="9999";ErrorDescription ="Bad URL Request";return false;}
}
public boolean Decrypt()
{
String sErr;
ErrorCode="0";
ErrorDescription="";
String strdaelim = "";
if (ShopLogin.length()<=0){ErrorCode="546";ErrorDescription="IDshop not valid";return false;}
// Giugno 2007
// se il protocollo e il dominio non sono stati modificati dall'esercente questi puntano di default a
// https://testecomm.sella.it--> per i codici di test oppure a
// https://ecomms2s.sella.it --> per i codici di produzione
if (controlValues(ProtocolAuthServer)){
ProtocolAuthServer="https://";
}
trans = ShopLogin.substring (0, 6);
trans = trans.toLowerCase();
if (controlValues(DomainName)) {
if (trans.equals("gespay")){
DomainName="testecomm.sella.it/CryptHTTP"; // codici di test
}else {
DomainName="ecomms2s.sella.it/CryptHTTP"; // codici di produzione
}
}
// ************
if (EncryptedString.length()<=0) {ErrorCode="1009";ErrorDescription="String to Decrypt not valid";return false;}
//specifies the URL Handler for the "https" URL Protocol type
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
try{/*contact Decryption Server*/
String urlString = ProtocolAuthServer + DomainName + "/Decrypt.asp?a="+ShopLogin+"&b="+EncryptedString+"&c="+Version;
URL url = new URL(urlString);
URLConnection connection=url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
int nStart = 0;
int nEnd = 0;
String line = "";
while (line != null)
{line = in.readLine();
if (line != null)
{nStart = line.indexOf("#decryptstring#");
nEnd = line.lastIndexOf("#/decryptstring#");
if (nStart != -1 & nEnd > nStart + 16)
{ Decripted=line.substring(nStart+15,nEnd);
}
nStart = line.indexOf("#error#");
nEnd = line.lastIndexOf("#/error#");
if (nStart != -1 & nEnd > nStart+8)
{
sErr=line.substring(nStart+7,nEnd);
int intsep=sErr.indexOf("-");
ErrorCode= sErr.substring(0,intsep);
ErrorDescription= sErr.substring(intsep+1,sErr.length());
return false;
}
}
}
in.close();
if (Decripted.trim()=="")
{ ErrorCode="9999";ErrorDescription="Void String";return false;}
if (! Parsing(Decripted)) {return false;}
return true;
}
catch (MalformedURLException ex){ErrorCode="9999";ErrorDescription="Bad URL";return false;}
catch (UnknownServiceException ex){ErrorCode="9999";ErrorDescription="Service Exception occurred."; return false;}
catch (IOException ex){ErrorCode="9999";ErrorDescription="Bad URL Request";return false;}
}
private boolean Parsing(String StringToBeParsed)
{
int nStart = 0;
int nEnd = 0;
ErrorCode="";
ErrorDescription="";
try{
/* set attribute from crypt string*/
nStart = StringToBeParsed.indexOf("PAY1_UICCODE");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
Currency=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
Currency=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_AMOUNT");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{nEnd=StringToBeParsed.length();
Amount=StringToBeParsed.substring(nStart+12,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
Amount=StringToBeParsed.substring(nStart+12,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_SHOPTRANSACTIONID");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{nEnd=StringToBeParsed.length();
ShopTransactionID=StringToBeParsed.substring(nStart+23,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
ShopTransactionID=StringToBeParsed.substring(nStart+23,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_CHNAME");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{nEnd=StringToBeParsed.length();
BuyerName=StringToBeParsed.substring(nStart+12,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
BuyerName=StringToBeParsed.substring(nStart+12,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_CHEMAIL");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{nEnd=StringToBeParsed.length();
BuyerEmail=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
BuyerEmail=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_AUTHORIZATIONCODE");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{nEnd=StringToBeParsed.length();
AuthorizationCode=StringToBeParsed.substring(nStart+23,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
AuthorizationCode=StringToBeParsed.substring(nStart+23,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_ERRORCODE");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
ErrorCode=StringToBeParsed.substring(nStart+15,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
ErrorCode=StringToBeParsed.substring(nStart+15,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_ERRORDESCRIPTION");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
ErrorDescription=StringToBeParsed.substring(nStart+22,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else
{
ErrorDescription=StringToBeParsed.substring(nStart+22,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_BANKTRANSACTIONID");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
BankTransactionID=StringToBeParsed.substring(nStart+23,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
BankTransactionID=StringToBeParsed.substring(nStart+23,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_ALERTCODE");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
AlertCode=StringToBeParsed.substring(nStart+15,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
AlertCode=StringToBeParsed.substring(nStart+15,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_ALERTDESCRIPTION");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
AlertDescription=StringToBeParsed.substring(nStart+22,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
AlertDescription=StringToBeParsed.substring(nStart+22,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_CARDNUMBER");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
CardNumber=StringToBeParsed.substring(nStart+16,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
CardNumber=StringToBeParsed.substring(nStart+16,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_EXPMONTH");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
ExpMonth=StringToBeParsed.substring(nStart+14,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
ExpMonth=StringToBeParsed.substring(nStart+14,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_EXPYEAR");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
ExpYear=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
ExpYear=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_COUNTRY");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
country=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
country=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_VBVRISP");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
vbvrisp=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
vbvrisp=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_VBV");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
vbv=StringToBeParsed.substring(nStart+9,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
vbv=StringToBeParsed.substring(nStart+9,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_IDLANGUAGE");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
Language=StringToBeParsed.substring(nStart+16,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
Language=StringToBeParsed.substring(nStart+16,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_TRANSACTIONRESULT");
if (nStart != -1)
{nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1)
{ nEnd=StringToBeParsed.length();
TransactionResult=StringToBeParsed.substring(nStart+23,nEnd);
if (nStart>=4){StringToBeParsed = StringToBeParsed.substring(0,nStart-4);}
else{StringToBeParsed = StringToBeParsed.substring(0,nStart);}
}
else{
TransactionResult=StringToBeParsed.substring(nStart+23,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
nStart = StringToBeParsed.indexOf("PAY1_3DLEVEL");
if (nStart != -1){
nEnd = StringToBeParsed.indexOf(separator,nStart);
if (nEnd==-1){
nEnd=StringToBeParsed.length();
ThreeDLevel=StringToBeParsed.substring(nStart+13,nEnd);
if (nStart>=4){
StringToBeParsed = StringToBeParsed.substring(0,nStart-4);
}else{
StringToBeParsed = StringToBeParsed.substring(0,nStart);
}
}else{
ErrorDescription=StringToBeParsed.substring(nStart+13,nEnd);
StringToBeParsed = StringToBeParsed.substring(0,nStart)+StringToBeParsed.substring(nEnd+4,StringToBeParsed.length());
}
}
CustomInfo=StringToBeParsed.trim();
}
catch(Exception e) {ErrorCode="9999";ErrorDescription="Error parsing String";return false;}
return true;
}
public String URLDecode(String str) throws Exception
{
if (str == null) return null;
char[] res = new char[str.length()];
int didx = 0;
for (int sidx=0; sidx<str.length(); sidx++)
{
char ch = str.charAt(sidx);
if (ch == '+')
res[didx++] = ' ';
else if (ch == '%')
{
try
{
res[didx++] = (char)
Integer.parseInt(str.substring(sidx+1,sidx+3), 16);
sidx += 2;
}
catch (NumberFormatException e)
{
//throw new Exception(str.substring(sidx,sidx+3) + " is an invalid code");
didx--;
res[didx++] = ch;
}
}
else
res[didx++] = ch;
}
return String.valueOf(res, 0, didx);
}
/*
**
* controlValues
**/
protected boolean controlValues (String str){
return ((str == null) || (str.length() == 0));
}
}
#!/usr/bin/perl
# PAGINA PER LA CONNESSIONE
# ALLA PAGINA DI PAGAMENTO
# (RICHIESTA DI PAGAMENTO)
# ASSUME CHE IL MODULO JAVA-3.0 SIA INSTALLATO
# JAVASERVER DEVE GIRARE CON IL PERCORSO DI GestPayCrypt NEL CLASSPATH
# INIZIO SCRIPT DI CRITTOGRAFIA - PARTE DA NON MODIFICARE
use CGI;
use Java;
$q=new CGI;
# ISTANZIAZIONE OGETTO JAVA
# OPTIONAL: SPECIFICARE LA PORTA DA USARE PER JAVASERVER
# (se installato su porta non standard)
$j=new Java();
$objCrypt=$j->create_object("GestPayCryptHS");
# PARTE DA MODIFICARE (VALORIZZAZIONE ATTRIBUTI TRANSAZIONE)
# Inserire al posto delle scritte con parentesi quadre [] I dati
# necessari per effettuare la transazione.
# N.B.: tutti i dati devono essere delle stringhe.
# qualora ci fosse ambiguita' con valori numerici, aggiungere
# un :string alla fine (vedasi documentazione del modulo Java)
# CAMPI OBBLIGATORI
$myshoplogin = "[SHOP LOGIN]";
# Es. 9000001
$mycurrency = "[CODICE DIVISA]:string";
#Es. 242:string per euro o 18:string lira
$myamount = "[IMPORTO SENZA SEPARATORI DI MIGLIAIA CON SEPARATORE PUNTO PER DECIMALI]:string";
# Es. "1256.28:string"
$myshoptransactionID= "[IDENTIFICATIVO TRANSAZIONE]";
#Es. "34az85ord19"
$mycardnumber="[NUMERO CARTA]:string";
#Es. "123412341234:string"
$myexpmonth="[MESE]:string";
#Es: "04"
$myexpyear="[ANNO]:string";
#Es: "03"
# CAMPI NON OBBLIGATORI
# METTERE UGUALE ALLA STRINGA NULLA LE VARIABILI NON INIZIALIZZATE
# (E NON CANCELLARLE)
$mybuyername="[NOME E COGNOME ACQUIRENTE]";
#Es. "Mario Bianchi"
$mybuyeremail="[EMAIL ACQUIRENTE]";
# Es. "[email protected]"
$mylanguage="[CODICE LINGUA DA UTILIZZARE NELLA COMUNICAZIONE]:string";
#Es. "3:string" per spagnolo
$mycustominfo="[PARAMETRI PERSONALIZZATI]";
#Es. "BV_CODCLIENTE=12*P1*BV_SESSIONID=398"
# PARTE DA NON MODIFICARE
# (a parte riattivare le linee setbuyername e setbuyeremail
$objCrypt->SetShopLogin($myshoplogin);
$objCrypt->SetShopTransactionID($myshoptransactionID);
if(length($mybuyername)>0)
{ $objCrypt->SetBuyerName($mybuyername); }
if(length($mybuyeremail)>0)
{ $objCrypt->SetBuyerEmail($mybuyeremail); }
if(length($mycustominfo)>0)
{ $objCrypt->SetCustomInfo($mycustominfo); }
if(length($mylanguage)>0)
{ $objCrypt->SetLanguage($mylanguage); }
if(length($mycardnumber)>0)
{ $objCrypt->SetCardNumber($mycardnumber); }
if(length($myexpmonth)>0)
{ $objCrypt->SetExpMonth($myexpmonth); }
if(length($myexpyear)>0)
{ $objCrypt->SetExpYear($myexpyear); }
$objCrypt->SetAmount($myamount);
$objCrypt->SetCurrency($mycurrency);
$objCrypt->Encrypt();
$ed=$objCrypt->GetErrorDescription()->get_value;
if(length($ed) >1)
{
print $q->header;
print "Errore durante la connessione : ";
print $objCrypt->GetErrorCode()->get_value;
print " ";
print $ed ;
print "<br>";
}
else
{
print $q->header;
$b = $objCrypt->GetEncryptedString()->get_value;
$a = $objCrypt->GetShopLogin()->get_value;
# FINE SCRIPT PER CRITTOGRAFIA.
# SE TUTTO OK SI HANNO 2 VARIABILI A E B DA UTILIZZARE PER IL 'PASSAGGIO DEI PARAMETRI A BANCA SELLA
# ESEMPIO CON FORM HTML
#Per codici test impostare il dominio https://testecomm.sella.it
print "Cliccare su OK per inviare i dati a Banca Sella: ";
print $myshoptransactionID;
print "<form action=\"https://ecomm.sella.it/gestpay/pagam.asp\">";
print "<input name=\"a\" type=\"hidden\" value=\"";
print $a; "\">";
print "<input name=\"b\" type=\"hidden\" value=\"";
print $b; "\">";
print "<input type=\"submit\" value=\" OK \" name=\"\">";
print "</form>";
}
#!/usr/bin/perl
# PAGINA PER LA GESTIONE DELLA RISPOSTA DI PAGAMENTO
# INIZIO SCRIPT PER DECRITTOGRAFIA
# DA NON MODIFICARE
use CGI;
use Java;
# VENGONO LETTI I PARAMETRI IN INPUT E VIENE DECRIPTATO IL
# PARAMETRO B
$q=new CGI;
print $q->header();
$parametro_a = $q->param('a');
$parametro_b = $q->param('b');
$j=new Java();
$objdeCrypt = $j->create_object("GestPayCryptHS");
$objdeCrypt->SetShopLogin($parametro_a);
$objdeCrypt->SetEncryptedString($parametro_b);
$objdeCrypt->Decrypt();
$ec=$objdeCrypt->GetErrorCode()->get_value;
if ($ec!="0")
{
print "Errore " , $ec , ": ", $objdeCrypt->GetErrorDescription()->get_value;
}
else
{
# DI SEGUITO SI HANNO UNA SERIE DI VARIABILI VALORIZZATE CON I
# DATI RICEVUTI DA GESTPAY DA UTILIZZARE PER L'INTEGRAZIONE CON
# IL PROPRIO SISTEMA
$myshoplogin=$objdeCrypt->GetShopLogin()->get_value;
$mycurrency=$objdeCrypt->GetCurrency()->get_value;
$myamount=$objdeCrypt->GetAmount()->get_value;
$myshoptransactionID=$objdeCrypt->GetShopTransactionID()->get_value;
$mybuyername=$objdeCrypt->GetBuyerName()->get_value;
$mybuyeremail=$objdeCrypt->GetBuyerEmail()->get_value;
$mytransactionresult=$objdeCrypt->GetTransactionResult()->get_value;
$myauthorizationcode=$objdeCrypt->GetAuthorizationCode()->get_value;
$myerrorcode=$objdeCrypt->GetErrorCode()->get_value;
$myerrordescription=$objdeCrypt->GetErrorDescription()->get_value;
$myerrorbanktransactionid=$objdeCrypt->GetBankTransactionID()->get_value;
$myalertcode=$objdeCrypt->GetAlertCode()->get_value;
$myalertdescription=$objdeCrypt->GetAlertDescription()->get_value;
$mycustominfo=$objdeCrypt->GetCustomInfo()->get_value;
# FINE SCRIPT DI DECRITTOGRAFIA
print $myshoplogin . "<br>";
print $myamount;
print " ";
print $mycurrency;
print "<br>";
print $mytransactionresult ;
print "<br>";
}
#Gestione errore
#!/usr/bin/perl
use CGI;
$q=new CGI;
print $q->header;
print "Errore nella comunicazione";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment