using RestSharp; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using UnivateProperties_API.Model.Financial; namespace UnivateProperties_API.Repository.Financial { public interface IPaygateRepository { string GoToPaymentGateway(Payment payment); } public class PaygateRepository: IPaygateRepository { public string GoToPaymentGateway(Payment payment) { string utcDate = DateTime.UtcNow.ToString("yyyy-MM-dd H:mm:ss"); var client = new RestClient("https://secure.paygate.co.za/payweb3/initiate.trans"); client.Timeout = -1; var request = new RestRequest(Method.POST); var total = payment.Amount; string paygateId = "10011072130"; string reff = ""; if (payment.TimeshareWeekId != 0) { reff = payment.TimeshareWeekId.ToString(); } else { reff = payment.PropertyId.ToString(); } string amm = Math.Round((total * 100)).ToString(); string currenc = "ZAR"; string retUrl = "http://localhost:57260/api/redirect"; string transDate = utcDate; string loc = "en-za"; string count = "ZAF"; string mail = "jlouw365@gmail.com"; request.AlwaysMultipartFormData = true; request.AddParameter("PAYGATE_ID", paygateId); request.AddParameter("REFERENCE", reff); request.AddParameter("AMOUNT", amm); request.AddParameter("CURRENCY", currenc); request.AddParameter("RETURN_URL", retUrl); request.AddParameter("TRANSACTION_DATE", transDate); request.AddParameter("LOCALE", loc); request.AddParameter("COUNTRY", count); request.AddParameter("EMAIL", mail); string checksum = Checksum( paygateId + reff + amm + currenc + retUrl + transDate + loc + count + mail + "secret"); request.AddParameter("CHECKSUM", checksum); string gatewayReturn = client.Execute(request).Content.ToString(); List vs = gatewayReturn.Split('&').ToList(); string payReqId = vs[1].Split('=')[1].ToString(); //var updatedOrder = _dbContext.Payments.OrderByDescending(x => x.Id).FirstOrDefault(); //updatedOrder.PaymentToken = payReqId; //_dbContext.Payments.Update(updatedOrder); //_dbContext.SaveChanges(); return client.Execute(request).Content.ToString(); } private string Checksum(string data) { using (var md5 = MD5.Create()) { return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(data))) .Replace("-", string.Empty).ToLower(); } } } }