12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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<string> 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();
- }
- }
- }
- }
|