API
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

PaygateRepository.cs 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using RestSharp;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Security.Cryptography;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using UnivateProperties_API.Model.Financial;
  9. namespace UnivateProperties_API.Repository.Financial
  10. {
  11. public interface IPaygateRepository
  12. {
  13. string GoToPaymentGateway(Payment payment);
  14. }
  15. public class PaygateRepository: IPaygateRepository
  16. {
  17. public string GoToPaymentGateway(Payment payment)
  18. {
  19. string utcDate = DateTime.UtcNow.ToString("yyyy-MM-dd H:mm:ss");
  20. var client = new RestClient("https://secure.paygate.co.za/payweb3/initiate.trans");
  21. client.Timeout = -1;
  22. var request = new RestRequest(Method.POST);
  23. var total = payment.Amount;
  24. string paygateId = "10011072130";
  25. string reff = "";
  26. if (payment.TimeshareWeekId != 0)
  27. {
  28. reff = payment.TimeshareWeekId.ToString();
  29. }
  30. else
  31. {
  32. reff = payment.PropertyId.ToString();
  33. }
  34. string amm = Math.Round((total * 100)).ToString();
  35. string currenc = "ZAR";
  36. string retUrl = "http://localhost:57260/api/redirect";
  37. string transDate = utcDate;
  38. string loc = "en-za";
  39. string count = "ZAF";
  40. string mail = "jlouw365@gmail.com";
  41. request.AlwaysMultipartFormData = true;
  42. request.AddParameter("PAYGATE_ID", paygateId);
  43. request.AddParameter("REFERENCE", reff);
  44. request.AddParameter("AMOUNT", amm);
  45. request.AddParameter("CURRENCY", currenc);
  46. request.AddParameter("RETURN_URL", retUrl);
  47. request.AddParameter("TRANSACTION_DATE", transDate);
  48. request.AddParameter("LOCALE", loc);
  49. request.AddParameter("COUNTRY", count);
  50. request.AddParameter("EMAIL", mail);
  51. string checksum = Checksum(
  52. paygateId +
  53. reff +
  54. amm +
  55. currenc +
  56. retUrl +
  57. transDate +
  58. loc +
  59. count +
  60. mail +
  61. "secret");
  62. request.AddParameter("CHECKSUM", checksum);
  63. string gatewayReturn = client.Execute(request).Content.ToString();
  64. List<string> vs = gatewayReturn.Split('&').ToList();
  65. string payReqId = vs[1].Split('=')[1].ToString();
  66. //var updatedOrder = _dbContext.Payments.OrderByDescending(x => x.Id).FirstOrDefault();
  67. //updatedOrder.PaymentToken = payReqId;
  68. //_dbContext.Payments.Update(updatedOrder);
  69. //_dbContext.SaveChanges();
  70. return client.Execute(request).Content.ToString();
  71. }
  72. private string Checksum(string data)
  73. {
  74. using (var md5 = MD5.Create())
  75. {
  76. return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(data)))
  77. .Replace("-", string.Empty).ToLower();
  78. }
  79. }
  80. }
  81. }