// in Robokassa we have two types of back-queries: // // 1. ResultURL query // Robokassa server tries to get this url // Requires Pass2 (!!!) // // 2. SuccessUrl query // Robokassa redirects user to this url // Requires Pass1 (!!!) public bool IsQueryValid(RobokassaQueryType queryType) { string currentPassword = (queryType == RobokassaQueryType.ResultURL) ? RobokassaConfig.Pass2 : RobokassaConfig.Pass1; string str = string.Format("{0}:{1}:{2}", OutSum, InvId, currentPassword); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] calculatedSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(str)); StringBuilder sbSignature = new StringBuilder(); foreach (byte b in calculatedSignature) sbSignature.AppendFormat("{0:x2}", b); return string.Equals( sbSignature.ToString(), SignatureValue, StringComparison.InvariantCultureIgnoreCase); }
// in Robokassa we have two types of back-queries: // // 1. ResultURL query // Robokassa server tries to get this url // Requires Pass2 (!!!) // // 2. SuccessUrl query // Robokassa redirects user to this url // Requires Pass1 (!!!) public bool IsQueryValid(RobokassaQueryType queryType) { var currentPassword = (queryType == RobokassaQueryType.ResultURL) ? RobokassaConfig.Pass2 : RobokassaConfig.Pass1; var str = string.Format("{0}:{1}:{2}", OutSum, InvId, currentPassword); var md5 = new MD5CryptoServiceProvider(); var calculatedSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(str)); var sbSignature = new StringBuilder(); foreach (var b in calculatedSignature) { sbSignature.AppendFormat("{0:x2}", b); } return(string.Equals( sbSignature.ToString(), SignatureValue, StringComparison.InvariantCultureIgnoreCase)); }