public static string Compute3DHash(Sale3DSecureRequest request, Settings3D settings3D)
        {
            SHA1          sha            = new SHA1CryptoServiceProvider();
            var           temp           = settings3D.Password + request.terminalid.PadLeft(9, '0');
            var           hashedPassword = sha.ComputeHash(Encoding.UTF8.GetBytes(temp));
            StringBuilder sb             = new StringBuilder();

            for (int i = 0; i < hashedPassword.Length; i++)

            {
                sb.Append(hashedPassword[i].ToString("X2"));
            }

            temp = request.terminalid + request.orderid + request.txnamount + request.successurl + request.errorurl + request.txntype
                   + request.txninstallmentcount + request.storekey + sb.ToString();
            var hashData = sha.ComputeHash(Encoding.UTF8.GetBytes(temp));

            sb = new StringBuilder();
            for (int i = 0; i < hashData.Length; i++)
            {
                sb.Append(hashData[i].ToString("X2"));
            }

            return(sb.ToString());
        }
        public static string CreateThreeDPaymentForm(Sale3DSecureRequest request, Settings3D settings3D)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
            builder.Append("<html>");
            builder.Append("<body>");
            builder.Append("<form //action=\"" + settings3D.BaseUrl + "\" method=\"POST\" id=\"three_d_form\" >");

            builder.Append("<input type=\"hidden\" name=\"secure3dsecuritylevel\" id=\"secure3dsecuritylevel\" value=\"" + request.secure3dsecuritylevel + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"mode\" id=\"mode\" value=\"" + request.mode + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"apiversion\" id=\"apiversion\" value=\"" + request.apiversion + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"terminalid\" id=\"terminalid\" value=\"" + request.terminalid + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"terminalprovuserid\" id=\"terminalprovuserid\" value=\"" + request.terminalprovuserid + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"terminaluserid\" id=\"terminaluserid\" value=\"" + request.terminaluserid + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"terminalmerchantid\" id=\"terminalmerchantid\" value=\"" + request.terminalmerchantid + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"txntype\" id=\"txntype\" value=\"" + request.txntype + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"cardnumber\" id=\"cardnumber\" value=\"" + request.cardnumber + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"cardexpiredatemonth\" id=\"cardexpiredatemonth\" value=\"" + request.cardexpiredatemonth + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"cardexpiredateyear\" id=\"cardexpiredateyear\" value=\"" + request.cardexpiredateyear + "\"/>");

            builder.Append("<input type=\"hidden\" name=\"cardcvv2\" id=\"cardcvv2\" value=\"" + request.cardcvv2 + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"txnamount\" id=\"txnamount\" value=\"" + request.txnamount + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"txncurrencycode\" id=\"txncurrencycode\" value=\"" + request.txncurrencycode + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"txninstallmentcount\" id=\"txninstallmentcount\" value=\"" + request.txninstallmentcount + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"orderid\" id=\"orderid\" value=\"" + request.orderid + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"successurl\" id=\"successurl\" value=\"" + request.successurl + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"errorurl\" id=\"errorurl\" value=\"" + request.errorurl + "\"/>");

            builder.Append("<input type=\"hidden\" name=\"secure3dhash\" id=\"secure3dhash\" value=\"" + request.secure3dhash + "\"/>");
            //builder.Append("<input type=\"hidden\" name=\"companyname\" id=\"companyname\" value=\"" + request.companyname + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"customeremailaddress\" id=\"customeremailaddress\" value=\"" + request.customeremailaddress + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"customeripaddress\" id=\"customeripaddress\" value=\"" + request.customeripaddress + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"txntimestamp\" id=\"txntimestamp\" value=\"" + request.txntimestamp + "\"/>");

            builder.Append("<input type=\"hidden\" name=\"lang\" id=\"lang\" value=\"" + request.lang + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"customeripaddress\" id=\"customeripaddress\" value=\"" + request.customeripaddress + "\"/>");
            builder.Append("<input type=\"hidden\" name=\"refreshtime\" id=\"refreshtime\" value=\"" + request.refreshtime + "\"/>");

            builder.Append("<input type=\"submit\" value=\"Öde\" style=\"display:none;\"/>");
            builder.Append("</form>");
            builder.Append("</body>");
            builder.Append("<script>document.getElementById(\"three_d_form\").submit();</script>");
            builder.Append("</html>");
            return(builder.ToString());
        }
 public static string Execute(Sale3DSecureRequest request, Settings3D settings3D)
 {
     request.secure3dhash = Compute3DHash(request, settings3D);
     return(CreateThreeDPaymentForm(request, settings3D));
     //return RestHttpCaller.Create().PostXMLString(settings3D.BaseUrl, request);
 }