private byte[] GetPayloadWithSalt(Message message) { var requestBody = new { GameName = message.GameName, KeysCount = message.KeysCount, Take = message.Take, Commission = message.Commission }; string salt = _configuration.GetSection("Settings").GetSection("HashingSecret").Value; var saltBytes = Encoding.UTF8.GetBytes(salt); var payload = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(requestBody)); var data = new byte[payload.Length + saltBytes.Length]; for (int i = 0; i < payload.Length; i++) { data[i] = payload[i]; } for (int i = 0; i < saltBytes.Length; i++) { data[payload.Length + i] = saltBytes[i]; } return(data); }
private Message MapToMessage(PaymentSession session) { var game = session.GameKeys.First().Game; var marketShare = double.Parse(_configuration.GetSection("Settings").GetSection("MarketShare").Value); var message = new Message(); message.VendorUrl = game.Vendor.Username; message.GameName = game.Name; message.KeysCount = session.GameKeys.Count; message.Take = session.GameKeys.Count * game.Price * (1 - marketShare); message.Commission = marketShare; return(message); }
private string GenerateHash(Message message) { var data = GetPayloadWithSalt(message); MD5 md5 = new MD5CryptoServiceProvider(); data = md5.ComputeHash(data); var sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return(sBuilder.ToString()); }