public void HasherCryptoService_GetStringHash_ShouldHash() { HasherCryptoService <MD5Cng> hashingService = new HasherCryptoService <MD5Cng>(); string hashing = hashingService.GetStringHash("4Vj8eK4rloUd272L48hsrarnUA~508029~TestPayU~3~USD"); Assert.IsNotNull(hashing); Assert.AreEqual(hashing, "ba9ffa71559580175585e45ce70b6c37"); }
public async Task <PayUModel> ConfigurarPayU(HistorialPagosPersonas pagoParaProcesar) { using (SportsGoEntities context = new SportsGoEntities(false)) { PagosRepository pagosRepo = new PagosRepository(context); HistorialPagosPersonasDTO pagoBuscado = await pagosRepo.BuscarHistorialPagoPersona(pagoParaProcesar); if (pagoBuscado.EstadoDelPago != EstadoDeLosPagos.EsperaPago && pagoBuscado.EstadoDelPago != EstadoDeLosPagos.Rechazado) { throw new InvalidOperationException("El pago no se puede procesar porque no esta en un estado valido"); } string descripcion = string.Empty; switch (pagoBuscado.Personas.IdiomaDeLaPersona) { case Idioma.Español: descripcion = "PayU Pago para el plan " + pagoBuscado.Planes.DescripcionIdiomaBuscado; break; case Idioma.Ingles: descripcion = "PayU Payment for plan " + pagoBuscado.Planes.DescripcionIdiomaBuscado; break; case Idioma.Portugues: descripcion = "PayU Plano de pagamento " + pagoBuscado.Planes.DescripcionIdiomaBuscado; break; } HasherCryptoService <MD5Cng> hashingService = new HasherCryptoService <MD5Cng>(); string signatureBuilder = AppConstants.PayUApiKey + "~" + AppConstants.PayUMerchantID + "~" + pagoBuscado.Consecutivo + "~" + Math.Round(pagoBuscado.Precio, 2, MidpointRounding.AwayFromZero).ToString().Replace(",", ".") + "~COP"; PayUModel payUModel = new PayUModel { merchantId = AppConstants.PayUMerchantID, accountId = AppConstants.PayUAccountID, tax = 0, taxReturnBase = 0, test = AppConstants.PayUTest, Url = AppConstants.PayUURL, currency = "COP", amount = pagoBuscado.Precio, referenceCode = pagoBuscado.Consecutivo.ToString(), buyerEmail = pagoBuscado.Personas.Usuarios.Email, description = descripcion, signature = hashingService.GetStringHash(signatureBuilder) }; return(payUModel); } }